]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4684 please test
authorAnthony Minessale <anthm@freeswitch.org>
Tue, 16 Oct 2012 13:27:03 +0000 (09:27 -0400)
committerAnthony Minessale <anthm@freeswitch.org>
Tue, 16 Oct 2012 13:27:10 +0000 (09:27 -0400)
src/mod/endpoints/mod_sofia/sofia_glue.c

index 22e51b78654a1f238701f5282a80f3a608fe379a..d1a335693f24c6b7a1a54008bec64409b9e4e2c2 100644 (file)
@@ -1831,6 +1831,8 @@ void sofia_glue_tech_patch_sdp(private_object_t *tech_pvt)
                                tech_pvt->video_codec_ms = 0;
                                switch_snprintf(vport_buf, sizeof(vport_buf), "%u", tech_pvt->adv_sdp_video_port);
                                if (switch_channel_media_ready(tech_pvt->channel) && !switch_rtp_ready(tech_pvt->video_rtp_session)) {
+                                       sofia_set_flag(tech_pvt, TFLAG_VIDEO);
+                                       sofia_set_flag(tech_pvt, TFLAG_REINVITE);
                                        sofia_glue_activate_rtp(tech_pvt, 0);
                                }
                        }
@@ -3240,7 +3242,8 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f
                goto end;
        }
 
-       if (switch_rtp_ready(tech_pvt->rtp_session) && !sofia_test_flag(tech_pvt, TFLAG_REINVITE)) {
+       if (switch_rtp_ready(tech_pvt->rtp_session) && 
+               (!sofia_test_flag(tech_pvt, TFLAG_VIDEO) || switch_rtp_ready(tech_pvt->video_rtp_session)) && !sofia_test_flag(tech_pvt, TFLAG_REINVITE)) {
                status = SWITCH_STATUS_SUCCESS;
                goto end;
        }
@@ -3249,6 +3252,7 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f
                goto end;
        }
 
+
        if (myflags) {
                flags = myflags;
        } else if (!sofia_test_pflag(tech_pvt->profile, PFLAG_DISABLE_RTP_AUTOADJ) &&
@@ -3659,10 +3663,10 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f
 
 
        video:
-
+               
                sofia_glue_check_video_codecs(tech_pvt);
+
                if (sofia_test_flag(tech_pvt, TFLAG_VIDEO) && tech_pvt->video_rm_encoding && tech_pvt->remote_sdp_video_port) {
-                       
                        /******************************************************************************************/
                        if (tech_pvt->video_rtp_session && sofia_test_flag(tech_pvt, TFLAG_REINVITE)) {
                                //const char *ip = switch_channel_get_variable(tech_pvt->channel, SWITCH_LOCAL_MEDIA_IP_VARIABLE);
@@ -3671,6 +3675,7 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f
                                switch_port_t remote_port = switch_rtp_get_remote_port(tech_pvt->video_rtp_session);
                                
 
+
                                if (remote_host && remote_port && !strcmp(remote_host, tech_pvt->remote_sdp_video_ip) && remote_port == tech_pvt->remote_sdp_video_port) {
                                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Video params are unchanged for %s.\n",
                                                                          switch_channel_get_name(tech_pvt->channel));