]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4779 FS-6467 the behaviour from 4479 is now masked behind the param 3pcc-reinvite...
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 28 Apr 2014 17:10:09 +0000 (22:10 +0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 28 Apr 2014 17:10:14 +0000 (22:10 +0500)
src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia.c

index 6012c6b4ca8bacfb240f0cd479b8bcf4b15d8a2f..dd14a3a8e396c9140f7654db8d7b2baced4f4215 100644 (file)
@@ -218,6 +218,7 @@ typedef enum {
        PFLAG_RECIEVED_IN_NAT_REG_CONTACT,
        PFLAG_3PCC,
        PFLAG_3PCC_PROXY,
+       PFLAG_3PCC_REINVITE_BRIDGED_ON_ACK,
        PFLAG_CALLID_AS_UUID,
        PFLAG_UUID_AS_CALLID,
        PFLAG_MANAGE_SHARED_APPEARANCE,
index 09d049f99dab94fd47945f892a2100399c0dff46..a169f10144d7dc933b2659b30453fe403a342659 100644 (file)
@@ -4736,6 +4736,12 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
                                                if (switch_true(val)) {
                                                        sofia_set_pflag(profile, PFLAG_BLIND_REG);
                                                }
+                                       } else if (!strcasecmp(var, "3pcc-reinvite-bridged-on-ack")) {
+                                               if (switch_true(val)) {
+                                                       sofia_set_pflag(profile, PFLAG_3PCC_REINVITE_BRIDGED_ON_ACK);
+                                               } else {
+                                                       sofia_clear_pflag(profile, PFLAG_3PCC_REINVITE_BRIDGED_ON_ACK);
+                                               }
                                        } else if (!strcasecmp(var, "enable-3pcc")) {
                                                if (switch_true(val)) {
                                                        sofia_set_pflag(profile, PFLAG_3PCC);
@@ -6892,11 +6898,14 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
                                        } else {
                                                switch_core_session_message_t *msg;
 
-                                               msg = switch_core_session_alloc(other_session, sizeof(*msg));
-                                               msg->message_id = SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT;
-                                               msg->from = __FILE__;
-                                               msg->string_arg = switch_core_session_strdup(other_session, r_sdp);
-                                               switch_core_session_queue_message(other_session, msg);
+                                               if (sofia_test_pflag(profile, PFLAG_3PCC_REINVITE_BRIDGED_ON_ACK)) {
+                                                       msg = switch_core_session_alloc(other_session, sizeof(*msg));
+                                                       msg->message_id = SWITCH_MESSAGE_INDICATE_MEDIA_REDIRECT;
+                                                       msg->from = __FILE__;
+                                                       msg->string_arg = switch_core_session_strdup(other_session, r_sdp);
+                                                       switch_core_session_queue_message(other_session, msg);
+                                               }
+
                                                switch_core_session_queue_indication(other_session, SWITCH_MESSAGE_INDICATE_ANSWER);
                                        }