mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-09 11:28:25 +00:00
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/
........
Merged revisions 378554 from http://svn.asterisk.org/svn/asterisk/branches/1.8
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@378559 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -8494,6 +8494,7 @@ static void change_callid_pvt(struct sip_pvt *pvt, const char *callid)
|
||||
{
|
||||
int in_dialog_container;
|
||||
int in_rtp_container;
|
||||
char *oldid = ast_strdupa(pvt->callid);
|
||||
|
||||
ao2_lock(dialogs);
|
||||
ao2_lock(dialogs_rtpcheck);
|
||||
@@ -8514,6 +8515,10 @@ static void change_callid_pvt(struct sip_pvt *pvt, const char *callid)
|
||||
}
|
||||
ao2_unlock(dialogs_rtpcheck);
|
||||
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 */
|
||||
@@ -21401,7 +21406,12 @@ static char *sip_cli_notify(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
|
||||
}
|
||||
}
|
||||
|
||||
/* 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);
|
||||
|
||||
Reference in New Issue
Block a user