From 8749966e2b6b78202c923aabf1934ae3d969296d Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthm@freeswitch.org>
Date: Fri, 4 Nov 2016 18:12:09 -0500
Subject: [PATCH] FS-9699 #resolve [Improper response to reinvite after using
 uuid_media_3p]

---
 src/mod/endpoints/mod_sofia/sofia.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c
index e51437c935..2171cff6fc 100644
--- a/src/mod/endpoints/mod_sofia/sofia.c
+++ b/src/mod/endpoints/mod_sofia/sofia.c
@@ -7489,12 +7489,19 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
 			}
 
 
-			switch_core_media_gen_local_sdp(session, SDP_TYPE_RESPONSE, NULL, 0, NULL, 0);
+			switch_core_media_gen_local_sdp(session, SDP_TYPE_RESPONSE, NULL, 0, NULL,
+											zstr(tech_pvt->mparams.local_sdp_str) || !switch_channel_test_flag(channel, CF_PROXY_MODE));
 
-			nua_respond(tech_pvt->nh, SIP_200_OK,
-						NUTAG_MEDIA_ENABLE(0),
-						SIPTAG_CONTACT_STR(tech_pvt->profile->url),
-						SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(tech_pvt->mparams.local_sdp_str), TAG_END());
+
+			if (zstr(tech_pvt->mparams.local_sdp_str)) {
+				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Cannot find a SDP\n");
+				switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+			} else {
+				nua_respond(tech_pvt->nh, SIP_200_OK,
+							NUTAG_MEDIA_ENABLE(0),
+							SIPTAG_CONTACT_STR(tech_pvt->profile->url),
+							SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(tech_pvt->mparams.local_sdp_str), TAG_END());
+			}
 
 			goto done;