diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-03-02 14:35:57 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-03-02 14:35:57 +0000 |
commit | c0ad24645c062d3ce27fc5c3e85b08cafe1d4ad1 (patch) | |
tree | 30c393db984530c9bd4963da5466db609e701f15 /pjsip/src | |
parent | 68446a09672bbb32172f7bebb0efb3a838a2d827 (diff) |
Fixed ticket #156: Not enough memory to parse DNS packets in resolver (thanks Frank Wiersma)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1031 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src')
-rw-r--r-- | pjsip/src/pjsip/sip_resolve.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/pjsip/src/pjsip/sip_resolve.c b/pjsip/src/pjsip/sip_resolve.c index ec6835a8..8faa57d4 100644 --- a/pjsip/src/pjsip/sip_resolve.c +++ b/pjsip/src/pjsip/sip_resolve.c @@ -535,7 +535,7 @@ static void build_server_entries(struct query *query, for (j=0; j<query->srv_cnt; ++j) { if (pj_stricmp(&rr->name, &query->srv[j].target_name)==0) { unsigned cnt = query->srv[j].addr_cnt; - query->srv[j].addr[cnt] = pj_inet_addr(&rr->rdata.a.ip_addr); + query->srv[j].addr[cnt].s_addr = rr->rdata.a.ip_addr.s_addr; ++query->srv[j].addr_cnt; ++query->host_resolved; break; @@ -777,29 +777,27 @@ static void dns_callback(void *user_data, } else { unsigned j; - query->srv[i].addr[query->srv[i].addr_cnt++] = - pj_inet_addr(&pkt->ans[0].rdata.a.ip_addr); + query->srv[i].addr[query->srv[i].addr_cnt++].s_addr = + pkt->ans[0].rdata.a.ip_addr.s_addr; PJ_LOG(5,(query->objname, - "DNS A for %.*s: %.*s", + "DNS A for %.*s: %s", (int)query->srv[i].target_name.slen, query->srv[i].target_name.ptr, - (int)pkt->ans[0].rdata.a.ip_addr.slen, - pkt->ans[0].rdata.a.ip_addr.ptr)); + pj_inet_ntoa(pkt->ans[0].rdata.a.ip_addr))); /* Check for multiple IP addresses */ for (j=1; j<pkt->hdr.anscount && query->srv[i].addr_cnt < ADDR_MAX_COUNT; ++j) { - query->srv[i].addr[query->srv[i].addr_cnt++] = - pj_inet_addr(&pkt->ans[j].rdata.a.ip_addr); + query->srv[i].addr[query->srv[i].addr_cnt++].s_addr = + pkt->ans[j].rdata.a.ip_addr.s_addr; PJ_LOG(5,(query->objname, - "Additional DNS A for %.*s: %.*s", + "Additional DNS A for %.*s: %s", (int)query->srv[i].target_name.slen, query->srv[i].target_name.ptr, - (int)pkt->ans[j].rdata.a.ip_addr.slen, - pkt->ans[j].rdata.a.ip_addr.ptr)); + pj_inet_ntoa(pkt->ans[j].rdata.a.ip_addr))); } } |