Changeset 959d2ec in mainline for uspace/srv/net/dnsrsrv


Ignore:
Timestamp:
2013-05-08T10:29:45Z (12 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.

Location:
uspace/srv/net/dnsrsrv
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/dnsrsrv/dns_type.h

    r9f029aa r959d2ec  
    113113typedef struct {
    114114        /** Host name */
    115         char *name;
     115        char *cname;
    116116        /** Host address */
    117117        inet_addr_t addr;
  • uspace/srv/net/dnsrsrv/dnsrsrv.c

    r9f029aa r959d2ec  
    8989        char *name;
    9090        dns_host_info_t *hinfo;
     91        ipc_callid_t rcallid;
     92        size_t size;
     93        sysarg_t retval;
     94        size_t act_size;
    9195        int rc;
    9296
     
    100104        }
    101105
     106        if (!async_data_read_receive(&rcallid, &size)) {
     107                async_answer_0(rcallid, EREFUSED);
     108                async_answer_0(callid, EREFUSED);
     109                return;
     110        }
     111
    102112        rc = dns_name2host(name, &hinfo);
    103113        if (rc != EOK) {
     114                async_answer_0(rcallid, rc);
    104115                async_answer_0(callid, rc);
    105116                return;
    106117        }
    107118
    108         async_answer_1(callid, EOK, hinfo->addr.ipv4);
     119        act_size = str_size(hinfo->cname);
     120        if (act_size > size) {
     121                async_answer_0(rcallid, EOVERFLOW);
     122                async_answer_0(callid, EOVERFLOW);
     123                return;
     124        }
     125
     126        retval = async_data_read_finalize(rcallid, hinfo->cname, act_size);
     127        async_answer_1(callid, retval, hinfo->addr.ipv4);
    109128
    110129        dns_hostinfo_destroy(hinfo);
  • uspace/srv/net/dnsrsrv/query.c

    r9f029aa r959d2ec  
    127127                        }
    128128
    129                         info->name = str_dup(rr->name);
     129                        info->cname = str_dup(rr->name);
    130130                        info->addr.ipv4 = dns_uint32_t_decode(rr->rdata, rr->rdata_size);
    131131                        log_msg(LOG_DEFAULT, LVL_DEBUG, "info->name = '%s' "
    132                             "info->addr = %x", info->name, info->addr.ipv4);
     132                            "info->addr = %x", info->cname, info->addr.ipv4);
    133133
    134134                        dns_message_destroy(msg);
     
    148148void dns_hostinfo_destroy(dns_host_info_t *info)
    149149{
    150         free(info->name);
     150        free(info->cname);
    151151        free(info);
    152152}
Note: See TracChangeset for help on using the changeset viewer.