[asterisk-commits] file: trunk r410511 - in /trunk: ./ res/res_pjsip_multihomed.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Mar 13 08:25:12 CDT 2014


Author: file
Date: Thu Mar 13 08:25:09 2014
New Revision: 410511

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=410511
Log:
Multiple revisions 410509-410510

........
  r410509 | file | 2014-03-13 06:23:14 -0700 (Thu, 13 Mar 2014) | 2 lines
  
  res_pjsip_multihomed: Fix a bug where the 200 OK for a REGISTER would contain the wrong contact.
........
  r410510 | file | 2014-03-13 06:24:17 -0700 (Thu, 13 Mar 2014) | 2 lines
  
  res_pjsip_multihomed: Remove change for testing fix.
........

Merged revisions 410509-410510 from http://svn.asterisk.org/svn/asterisk/branches/12

Modified:
    trunk/   (props changed)
    trunk/res/res_pjsip_multihomed.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-12-merged' - no diff available.

Modified: trunk/res/res_pjsip_multihomed.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/res_pjsip_multihomed.c?view=diff&rev=410511&r1=410510&r2=410511
==============================================================================
--- trunk/res/res_pjsip_multihomed.c (original)
+++ trunk/res/res_pjsip_multihomed.c Thu Mar 13 08:25:09 2014
@@ -87,7 +87,7 @@
 {
 	pjsip_tpmgr_fla2_param prm;
 	pjsip_transport *transport;
-	pjsip_contact_hdr *contact;
+	pjsip_cseq_hdr *cseq;
 	pjsip_via_hdr *via;
 
 	/* Use the destination information to determine what local interface this message will go out on */
@@ -111,15 +111,18 @@
 	}
 
 	/* If the message needs to be updated with new address do so */
-	contact = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CONTACT, NULL);
-	if (contact && (PJSIP_URI_SCHEME_IS_SIP(contact->uri) || PJSIP_URI_SCHEME_IS_SIPS(contact->uri))) {
-		pjsip_sip_uri *uri = pjsip_uri_get_uri(contact->uri);
+	if (tdata->msg->type == PJSIP_REQUEST_MSG || !(cseq = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CSEQ, NULL)) ||
+		pj_strcmp2(&cseq->method.name, "REGISTER")) {
+		pjsip_contact_hdr *contact = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CONTACT, NULL);
+		if (contact && (PJSIP_URI_SCHEME_IS_SIP(contact->uri) || PJSIP_URI_SCHEME_IS_SIPS(contact->uri))) {
+			pjsip_sip_uri *uri = pjsip_uri_get_uri(contact->uri);
 
-		/* prm.ret_addr is allocated from the tdata pool so it is perfectly fine to just do an assignment like this */
-		pj_strassign(&uri->host, &prm.ret_addr);
-		uri->port = prm.ret_port;
+			/* prm.ret_addr is allocated from the tdata pool so it is perfectly fine to just do an assignment like this */
+			pj_strassign(&uri->host, &prm.ret_addr);
+			uri->port = prm.ret_port;
 
-		pjsip_tx_data_invalidate_msg(tdata);
+			pjsip_tx_data_invalidate_msg(tdata);
+		}
 	}
 
 	if (tdata->msg->type == PJSIP_REQUEST_MSG && (via = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL))) {




More information about the asterisk-commits mailing list