[asterisk-commits] elguero: branch 1.8 r378554 - /branches/1.8/channels/chan_sip.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Jan 4 15:12:42 CST 2013
Author: elguero
Date: Fri Jan 4 15:12:38 2013
New Revision: 378554
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=378554
Log:
Fix SIP Notify Messages To Have The Proper IP Address In The FROM Field
On a multihomed server when sending a NOTIFY message, we were not figuring out
which network should be used to contact the peer.
This patch fixes the problem by calling ast_sip_ouraddrfor() and then
build_via() so that our NOTIFY message contains the correct IP address.
Also, a debug message is being added to help follow the call-id changes that
occur. This was helpful for confirming that the IP address was set properly
since the call-id contains the IP address. It also will be helpful for
troubleshooting purposes when following a call in the debug logs.
(closes issue ASTERISK-20805)
Reported by: Bryan Hunt
Tested by: Bryan Hunt, Michael L. Young
Patches:
asterisk-20805-notify-ip-v2.diff uploaded by Michael L. Young (license 5026)
Review: https://reviewboard.asterisk.org/r/2255/
Modified:
branches/1.8/channels/chan_sip.c
Modified: branches/1.8/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/channels/chan_sip.c?view=diff&rev=378554&r1=378553&r2=378554
==============================================================================
--- branches/1.8/channels/chan_sip.c (original)
+++ branches/1.8/channels/chan_sip.c Fri Jan 4 15:12:38 2013
@@ -7997,6 +7997,7 @@
static void change_callid_pvt(struct sip_pvt *pvt, const char *callid)
{
int in_dialog_container;
+ char *oldid = ast_strdupa(pvt->callid);
ao2_lock(dialogs);
in_dialog_container = CONTAINER_UNLINK(dialogs, pvt,
@@ -8010,6 +8011,10 @@
ao2_t_link(dialogs, pvt, "New dialog callid -- inserted back into table");
}
ao2_unlock(dialogs);
+
+ if (strcmp(oldid, pvt->callid)) {
+ ast_debug(1, "SIP call-id changed from '%s' to '%s'\n", oldid, pvt->callid);
+ }
}
/*! \brief Build SIP Call-ID value for a REGISTER transaction */
@@ -19616,7 +19621,12 @@
}
}
- /* Recalculate our side, and recalculate Call ID */
+ /* Now that we have the peer's address, set our ip and change callid */
+ ast_sip_ouraddrfor(&p->sa, &p->ourip, p);
+ build_via(p);
+
+ change_callid_pvt(p, NULL);
+
ast_cli(a->fd, "Sending NOTIFY of type '%s' to '%s'\n", a->argv[2], a->argv[i]);
sip_scheddestroy(p, SIP_TRANS_TIMEOUT);
transmit_invite(p, SIP_NOTIFY, 0, 2, NULL);
More information about the asterisk-commits
mailing list