]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5399 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 9 May 2013 19:09:23 +0000 (14:09 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 9 May 2013 19:09:23 +0000 (14:09 -0500)
src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia.c

index e0833e6b6275b7f34d048cc0f398944a271b63d9..db98d8a8d5a38fd6dcbc029d2b310c8a4dc1357a 100644 (file)
@@ -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,
index 29742b0a8755201802b455d951c37516ccf41a23..87b34dfd3128cd9da8610934ef60aa7ecf698121 100644 (file)
@@ -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);