]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9636 [mod_sofia] Add sofia.conf parameter to make every transfer a nightmare transfer
authorArmen Babikyan <armen@firespotter.com>
Wed, 12 Oct 2016 01:22:50 +0000 (18:22 -0700)
committerArmen Babikyan <armen@firespotter.com>
Wed, 12 Oct 2016 01:23:31 +0000 (18:23 -0700)
src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia.c

index 8a2de89fe9d8023fc17d6b9b6cabfe3a604d6760..d8b475e23649623d71669d1e3fd9e1785c2f7f88 100644 (file)
@@ -291,6 +291,7 @@ typedef enum {
        PFLAG_AUTH_SUBSCRIPTIONS,
        PFLAG_PROXY_REFER,
        PFLAG_CHANNEL_XML_FETCH_ON_NIGHTMARE_TRANSFER,
+       PFLAG_MAKE_EVERY_TRANSFER_A_NIGHTMARE,
        PFLAG_FIRE_TRANFER_EVENTS,
        PFLAG_BLIND_AUTH_ENFORCE_RESULT,
        PFLAG_PROXY_HOLD,
index d1f4407775bc9d65c57ca5454003fda72da2608b..cb8982c774d5a8e694b5fa14a6027697e812ec27 100644 (file)
@@ -4344,6 +4344,7 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
                                        //sofia_set_pflag(profile, PFLAG_PRESENCE_ON_FIRST_REGISTER);
 
                                        sofia_clear_pflag(profile, PFLAG_CHANNEL_XML_FETCH_ON_NIGHTMARE_TRANSFER);
+                                       sofia_clear_pflag(profile, PFLAG_MAKE_EVERY_TRANSFER_A_NIGHTMARE);
                                        sofia_clear_pflag(profile, PFLAG_FIRE_TRANFER_EVENTS);
                                        sofia_clear_pflag(profile, PFLAG_BLIND_AUTH_ENFORCE_RESULT);
                                        profile->shutdown_type = "false";
@@ -5620,6 +5621,12 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
                                                }  else {
                                                        sofia_clear_pflag(profile, PFLAG_CHANNEL_XML_FETCH_ON_NIGHTMARE_TRANSFER);
                                                }
+                                       } else if (!strcasecmp(var, "make-every-transfer-a-nightmare")) {
+                                               if(switch_true(val)) {
+                                                       sofia_set_pflag(profile, PFLAG_MAKE_EVERY_TRANSFER_A_NIGHTMARE);
+                                               }  else {
+                                                       sofia_clear_pflag(profile, PFLAG_MAKE_EVERY_TRANSFER_A_NIGHTMARE);
+                                               }
                                        } else if (!strcasecmp(var, "fire-transfer-events")) {
                                                if(switch_true(val)) {
                                                        sofia_set_pflag(profile, PFLAG_FIRE_TRANFER_EVENTS);
@@ -8386,7 +8393,7 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t
                                        }
                                }
 
-                               if (bnh) {
+                               if (bnh && !sofia_test_pflag(profile, PFLAG_MAKE_EVERY_TRANSFER_A_NIGHTMARE)) {
                                        sofia_private_t *b_private = NULL;
                                        private_object_t *b_tech_pvt = NULL;
                                        switch_core_session_t *b_session = NULL;