aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-04-23 18:50:53 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-04-23 18:50:53 +0000
commit5276c2542739e444ae4d3f3980bf713af20f3f5c (patch)
tree176ef1d90d0bf2b041a68b86ebbd5bc54a6d8084
parent1aa7133adeef4992f7058a6bd7e014aee6b675f2 (diff)
Copy tohost from the peer when poking
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@888 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xchannels/chan_sip.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 6493d2651..954768b2d 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -598,8 +598,12 @@ static int create_addr(struct sip_pvt *r, char *peer)
strncpy(r->peersecret, p->secret, sizeof(r->peersecret)-1);
strncpy(r->username, p->username, sizeof(r->username)-1);
strncpy(r->tohost, p->tohost, sizeof(r->tohost)-1);
- if (!strlen(r->tohost))
- snprintf(r->tohost, sizeof(r->tohost), inet_ntoa(p->addr.sin_addr));
+ if (!strlen(r->tohost)) {
+ if (p->addr.sin_addr.s_addr)
+ snprintf(r->tohost, sizeof(r->tohost), inet_ntoa(p->addr.sin_addr));
+ else
+ snprintf(r->tohost, sizeof(r->tohost), inet_ntoa(p->defaddr.sin_addr));
+ }
if (strlen(p->fromdomain))
strncpy(r->fromdomain, p->fromdomain, sizeof(r->fromdomain)-1);
if (strlen(p->fromuser))
@@ -4709,6 +4713,7 @@ static int sip_poke_peer(struct sip_peer *peer)
}
memcpy(&p->sa, &peer->addr, sizeof(p->sa));
memcpy(&p->recv, &peer->addr, sizeof(p->sa));
+ strncpy(p->tohost, peer->tohost, sizeof(p->tohost) - 1);
/* Recalculate our side, and recalculate Call ID */
memcpy(&p->ourip, myaddrfor(&p->sa.sin_addr), sizeof(p->ourip));