summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-03-02 14:51:03 +0000
committerBenny Prijono <bennylp@teluu.com>2007-03-02 14:51:03 +0000
commitfdf444b5c4ec258181715864b53e4d383efaea25 (patch)
tree611a7def20a623b5acb5984f9dffe626490959a9 /pjsip
parente4a0cf0e1d20888824896efaa3b0d58116a0adfc (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/branches/pjproject-0.5-stable@1033 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsip/sip_resolve.c20
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)));
}
}