[Asterisk-code-review] chan sip: Allow target refresh (Contact update) on re-INVITE. (asterisk[13])

Walter Doekes asteriskteam at digium.com
Mon Sep 12 03:40:55 CDT 2016


Walter Doekes has uploaded a new change for review.

  https://gerrit.asterisk.org/3879

Change subject: chan_sip: Allow target refresh (Contact update) on re-INVITE.
......................................................................

chan_sip: Allow target refresh (Contact update) on re-INVITE.

Previously, the Contact was stored only on initial INVITE and on any
18X and 200. That meant that after re-INVITEs from *us* the Contact
could get updated, but after re-INVITEs from the *peer*, it did not.

This changeset fixes this inconsistency, properly allowing target
refreshes through re-INVITES (RFC3261, 12.2).

If your strictrtp setting allows it, this change allows you to switch
the source IP of a connected/calling device mid-call with a simple
re-INVITE from the new IP.

ASTERISK-26358 #close

Change-Id: Ibb8512054ab27c8c3d2514022568fde943bf2435
---
M channels/chan_sip.c
1 file changed, 4 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/79/3879/1

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index b03a3e3..9c9a407 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -26057,12 +26057,15 @@
 		copy_request(&p->initreq, req);		/* Save this INVITE as the transaction basis */
 		if (sipdebug)
 			ast_debug(1, "Initializing initreq for method %s - callid %s\n", sip_methods[req->method].text, p->callid);
+
+		/* Parse new contact both for existing (re-invite) and new calls. */
+		parse_ok_contact(p, req);
+
 		if (!p->owner) {	/* Not a re-invite */
 			if (req->debug)
 				ast_verbose("Using INVITE request as basis request - %s\n", p->callid);
 			if (newcall)
 				append_history(p, "Invite", "New call: %s", p->callid);
-			parse_ok_contact(p, req);
 		} else {	/* Re-invite on existing call */
 			ast_clear_flag(&p->flags[0], SIP_OUTGOING);	/* This is now an inbound dialog */
 			if (get_rpid(p, req)) {

-- 
To view, visit https://gerrit.asterisk.org/3879
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibb8512054ab27c8c3d2514022568fde943bf2435
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-Owner: Walter Doekes <walter+asterisk at wjd.nu>



More information about the asterisk-code-review mailing list