From: Anthony Minessale Date: Thu, 9 May 2013 19:09:23 +0000 (-0500) Subject: FS-5399 --resolve X-Git-Tag: v1.2.10~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3fc8f7888a9daba20b7c830070af0964d0531b52;p=thirdparty%2Ffreeswitch.git FS-5399 --resolve --- diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index e0833e6b62..db98d8a8d5 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -332,6 +332,7 @@ typedef enum { TFLAG_INB_NOMEDIA, TFLAG_LATE_NEGOTIATION, TFLAG_SDP, + TFLAG_NEW_SDP, TFLAG_VIDEO, TFLAG_TPORT_LOG, TFLAG_SENT_UPDATE, diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 29742b0a87..87b34dfd31 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -5704,6 +5704,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, sdp_parser_free(parser); } sofia_glue_pass_sdp(tech_pvt, (char *) r_sdp); + sofia_set_flag(tech_pvt, TFLAG_NEW_SDP); } } } @@ -6261,11 +6262,12 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } break; case nua_callstate_ready: - if (r_sdp && !is_dup_sdp && switch_rtp_ready(tech_pvt->rtp_session) && !sofia_test_flag(tech_pvt, TFLAG_NOSDP_REINVITE)) { + if (r_sdp && (!is_dup_sdp || sofia_test_flag(tech_pvt, TFLAG_NEW_SDP)) && switch_rtp_ready(tech_pvt->rtp_session) && !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_set_flag_locked(tech_pvt, TFLAG_REINVITE); + sofia_clear_flag(tech_pvt, TFLAG_NEW_SDP); if (tech_pvt->num_codecs) { match = sofia_glue_negotiate_sdp(session, r_sdp);