Changeset 959d2ec in mainline for uspace/lib/c/generic/dnsr.c


Ignore:
Timestamp:
2013-05-08T10:29:45Z (11 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d242cb6
Parents:
9f029aa
Message:

Return canonical name to caller.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/dnsr.c

    r9f029aa r959d2ec  
    7171{
    7272        async_exch_t *exch = dnsr_exchange_begin();
     73        char cname_buf[DNSR_NAME_MAX_SIZE + 1];
     74        ipc_call_t cnreply;
     75        size_t act_size;
    7376        dnsr_hostinfo_t *info;
    7477
     
    7679        aid_t req = async_send_0(exch, DNSR_NAME2HOST, &answer);
    7780        sysarg_t retval = async_data_write_start(exch, name, str_size(name));
     81        aid_t cnreq = async_data_read(exch, cname_buf, DNSR_NAME_MAX_SIZE,
     82            &cnreply);
    7883
    7984        dnsr_exchange_end(exch);
     
    8186        if (retval != EOK) {
    8287                async_forget(req);
     88                async_forget(cnreq);
    8389                return retval;
    8490        }
    8591
    8692        async_wait_for(req, &retval);
     93        if (retval != EOK) {
     94                async_forget(cnreq);
     95                return EIO;
     96        }
     97
     98        async_wait_for(cnreq, &retval);
    8799        if (retval != EOK)
    88100                return EIO;
     
    92104                return ENOMEM;
    93105
    94         info->name = str_dup(name);
     106        act_size = IPC_GET_ARG2(cnreply);
     107        assert(act_size <= DNSR_NAME_MAX_SIZE);
     108        cname_buf[act_size] = '\0';
     109
     110        info->cname = str_dup(cname_buf);
    95111        info->addr.ipv4 = IPC_GET_ARG1(answer);
    96112
     
    104120                return;
    105121
    106         free(info->name);
     122        free(info->cname);
    107123        free(info);
    108124}
Note: See TracChangeset for help on using the changeset viewer.