]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9668 also check for keyframe requests on INFO even when proxying for good measure
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 3 Nov 2016 22:34:53 +0000 (17:34 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 3 Nov 2016 22:34:53 +0000 (17:34 -0500)
src/mod/endpoints/mod_sofia/sofia.c

index f0ea07ee01accc7b8e55497871e0cf891456fa20..a0e0fae2c88e7be3deda42ccbf66c589651aab45 100644 (file)
@@ -9190,8 +9190,8 @@ switch_status_t sofia_proxy_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua
                        private_object_t *other_tech_pvt = NULL;
                        const char *ct = NULL;
                        char *pl = NULL;
-
-
+                       switch_channel_t *channel = switch_core_session_get_channel(session);
+                       
                        if (sip && sip->sip_payload && sip->sip_payload->pl_data) {
                                pl = sip->sip_payload->pl_data;
                        }
@@ -9201,7 +9201,14 @@ switch_status_t sofia_proxy_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua
                        if (sip->sip_content_type->c_type && sip->sip_content_type->c_subtype) {
                                ct = sip->sip_content_type->c_type;
                        }
-                       
+
+                       if (!strncasecmp(sip->sip_content_type->c_type, "application", 11) && !strcasecmp(sip->sip_content_type->c_subtype, "media_control+xml")) {
+                               if (switch_channel_test_flag(channel, CF_VIDEO)) {
+                                       switch_core_media_gen_key_frame(session);
+                                       switch_channel_set_flag(channel, CF_VIDEO_REFRESH_REQ);
+                               }
+                       }
+
                        nua_info(other_tech_pvt->nh,
                                         TAG_IF(ct, SIPTAG_CONTENT_TYPE_STR(su_strdup(other_tech_pvt->nh->nh_home, ct))),
                                         TAG_IF(!zstr(other_tech_pvt->user_via), SIPTAG_VIA_STR(other_tech_pvt->user_via)),