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

index 4e260ad8b5549e6f808087e336011cbdf1a1e9df..0f84859b7238d05ab0617d877dc01b57fcafb374 100644 (file)
@@ -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,
index fcfe29d3c089cff9376c8f253b8f8224cfa446e7..974946954371c30d3000e1837a4995877a1d3474 100644 (file)
@@ -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) {