Changeset d531bd6 in mainline for uspace/srv/net/dnsrsrv/query.c
- Timestamp:
- 2013-05-08T09:24:24Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9f029aa
- Parents:
- 06fe3b6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/dnsrsrv/query.c
r06fe3b6 rd531bd6 54 54 dns_question_t *question; 55 55 dns_host_info_t *info; 56 char *sname, *cname; 57 size_t eoff; 56 58 int rc; 57 59 … … 83 85 } 84 86 87 /* Start with the caller-provided name */ 88 sname = str_dup(name); 89 85 90 list_foreach(amsg->answer, link) { 86 91 dns_rr_t *rr = list_get_instance(link, dns_rr_t, msg); … … 89 94 rr->name, rr->rtype, rr->rclass, rr->rdata_size); 90 95 96 if (rr->rtype == DTYPE_CNAME && rr->rclass == DC_IN && 97 str_cmp(rr->name, sname) == 0) { 98 log_msg(LOG_DEFAULT, LVL_DEBUG, "decode cname (%p, %zu, %zu)", 99 amsg->raw, amsg->raw_size, rr->roff); 100 rc = dns_name_decode(amsg->raw, amsg->raw_size, rr->roff, 101 &cname, &eoff); 102 if (rc != EOK) { 103 log_msg(LOG_DEFAULT, LVL_DEBUG, 104 "error decoding cname"); 105 assert(rc == EINVAL || rc == ENOMEM); 106 dns_message_destroy(msg); 107 dns_message_destroy(amsg); 108 return rc; 109 } 110 111 log_msg(LOG_DEFAULT, LVL_DEBUG, "name = '%s' " 112 "cname = '%s'", sname, cname); 113 114 free(sname); 115 /* Continue looking for the more canonical name */ 116 sname = cname; 117 } 118 91 119 if (rr->rtype == DTYPE_A && rr->rclass == DC_IN && 92 rr->rdata_size == sizeof(uint32_t)) { 120 rr->rdata_size == sizeof(uint32_t) && 121 str_cmp(rr->name, sname) == 0) { 93 122 94 123 info = calloc(1, sizeof(dns_host_info_t)); 95 124 if (info == NULL) { 125 dns_message_destroy(msg); 96 126 dns_message_destroy(amsg); 97 127 return ENOMEM; … … 100 130 info->name = str_dup(rr->name); 101 131 info->addr.ipv4 = dns_uint32_t_decode(rr->rdata, rr->rdata_size); 102 log_msg(LOG_DEFAULT, LVL_DEBUG, "info-> addr = %x",103 info->addr.ipv4);132 log_msg(LOG_DEFAULT, LVL_DEBUG, "info->name = '%s' " 133 "info->addr = %x", info->name, info->addr.ipv4); 104 134 105 135 dns_message_destroy(msg); … … 112 142 dns_message_destroy(msg); 113 143 dns_message_destroy(amsg); 114 log_msg(LOG_DEFAULT, LVL_DEBUG, " No A/IN found, fail");144 log_msg(LOG_DEFAULT, LVL_DEBUG, "'%s' not resolved, fail", sname); 115 145 116 146 return EIO;
Note:
See TracChangeset
for help on using the changeset viewer.