From 16690e491dd7a1f99c8b2ca178117debb877e991 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 9 May 2013 14:05:09 -0500 Subject: [PATCH] FS-5399 --resolve --- src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 4e260ad8b5..0f84859b72 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -302,6 +302,7 @@ typedef enum { TFLAG_INB_NOMEDIA, TFLAG_LATE_NEGOTIATION, TFLAG_SDP, + TFLAG_NEW_SDP, TFLAG_TPORT_LOG, TFLAG_SENT_UPDATE, TFLAG_PROXY_MEDIA, diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index fcfe29d3c0..9749469543 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -5756,6 +5756,8 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } sofia_glue_pass_sdp(tech_pvt, (char *) r_sdp); + sofia_set_flag(tech_pvt, TFLAG_NEW_SDP); + } } } @@ -6315,10 +6317,11 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, break; case nua_callstate_ready: if (!switch_channel_test_flag(channel, CF_PROXY_MODE) && !switch_channel_test_flag(channel, CF_PROXY_MEDIA) && - r_sdp && !is_dup_sdp && switch_core_media_ready(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO) && !sofia_test_flag(tech_pvt, TFLAG_NOSDP_REINVITE)) { + r_sdp && (!is_dup_sdp || sofia_test_flag(tech_pvt, TFLAG_NEW_SDP)) && switch_core_media_ready(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO) && !sofia_test_flag(tech_pvt, TFLAG_NOSDP_REINVITE)) { /* sdp changed since 18X w sdp, we're supposed to ignore it but we, of course, were pressured into supporting it */ uint8_t match = 0; + sofia_clear_flag(tech_pvt, TFLAG_NEW_SDP); switch_channel_set_flag(tech_pvt->channel, CF_REINVITE); if (tech_pvt->mparams.num_codecs) {