summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2009-04-13 16:28:06 +0000
committerJoshua Colp <jcolp@digium.com>2009-04-13 16:28:06 +0000
commit75dba8ca1d29b6ac8f6af0984b15778e2ebaefb2 (patch)
treec719f0d435ef4443b2ff21e8f5300764471cfc76 /channels
parentb6a2f40793dad529a270a7d97fcb5658b219fe1b (diff)
Fix a bug where using an outbound proxy would cause the local address to be 127.0.0.1.
Copy the outbound proxy IP address into the SIP dialog structure as the IP address we will be sending to. This has to be done because the logic that determines what local IP address to use in the SIP messages is not aware of an outbound proxy being in place. It only knows what IP address we are sending to. (closes issue #12006) Reported by: mnicholson git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@188067 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 924405e6b..2eb5d38d0 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -5005,6 +5005,7 @@ static int create_addr(struct sip_pvt *dialog, const char *opeer, struct sockadd
if (dialog->outboundproxy) {
/* If we have an outbound proxy, don't bother with DNS resolution at all, but set the port */
portno = port ? atoi(port) : (dialog->socket.type & SIP_TRANSPORT_TLS) ? STANDARD_TLS_PORT : STANDARD_SIP_PORT;
+ memcpy(&dialog->sa.sin_addr, &dialog->outboundproxy->ip.sin_addr, sizeof(dialog->sa.sin_addr));
} else if (sin) {
/* This address should be updated using dnsmgr */
memcpy(&dialog->sa.sin_addr, &sin->sin_addr, sizeof(dialog->sa.sin_addr));