From db21f7f2e1d25c46bf7c2949f0c5d4d52eca2fb1 Mon Sep 17 00:00:00 2001
From: Kevin Harwell <kharwell@digium.com>
Date: Wed, 22 Nov 2017 10:42:48 -0600
Subject: [PATCH] pjsip: 183 without To tag does not negotiate media

If a 183 with sdp response is receive without a To tag the sdp is not
negotiated. According to RFC 3261 section 12.1.2 while a To tag is required,
the client needs to still be able to handle the missing tag case for
backwards compatibility.

This patch, accepted by and applied to pjproject, makes it so if an incoming
180/183 with SDP comes in without a To tag it gets appropriately handled.

ASTERISK-27442 #close

Change-Id: Ic9d6b01e05e8f4874eebbd7adfe05d932025d203
---
 .../patches/0040-183_without_to_tag.patch       | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 third-party/pjproject/patches/0040-183_without_to_tag.patch

diff --git a/third-party/pjproject/patches/0040-183_without_to_tag.patch b/third-party/pjproject/patches/0040-183_without_to_tag.patch
new file mode 100644
index 0000000000..e8692fe1b1
--- /dev/null
+++ b/third-party/pjproject/patches/0040-183_without_to_tag.patch
@@ -0,0 +1,17 @@
+diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
+index c9686a0..fc52a63 100644
+--- a/pjsip/src/pjsip-ua/sip_inv.c
++++ b/pjsip/src/pjsip-ua/sip_inv.c
+@@ -4156,9 +4156,10 @@ static void inv_on_state_calling( pjsip_inv_session *inv, pjsip_event *e)
+ 		    status = pjsip_inv_send_msg(inv, cancel);
+ 	    }
+ 
+-	    if (dlg->remote.info->tag.slen) {
++	    if (tsx->status_code != 100) {
+ 
+-		inv_set_state(inv, PJSIP_INV_STATE_EARLY, e);
++		if (dlg->remote.info->tag.slen)
++		    inv_set_state(inv, PJSIP_INV_STATE_EARLY, e);
+ 
+ 		inv_check_sdp_in_incoming_msg(inv, tsx, 
+ 					      e->body.tsx_state.src.rdata);
-- 
GitLab