]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: ftmod_r2 - Disable MF dump on call accepted
authorMoises Silva <moy@sangoma.com>
Mon, 14 Feb 2011 20:05:39 +0000 (15:05 -0500)
committerMoises Silva <moy@sangoma.com>
Mon, 14 Feb 2011 20:05:39 +0000 (15:05 -0500)
         core - Do not start DTMF debugging until media is available

libs/freetdm/src/ftdm_io.c
libs/freetdm/src/ftmod/ftmod_r2/ftmod_r2.c
libs/freetdm/src/include/private/ftdm_core.h

index 906fbfed890d0a890f757e378482208b8f745bb6..3ef22780f30d2a8efa0870beb6d4341b40c28ee2 100644 (file)
@@ -5536,10 +5536,6 @@ FT_DECLARE(ftdm_status_t) ftdm_span_send_signal(ftdm_span_t *span, ftdm_sigmsg_t
                        }
                        ftdm_set_flag(sigmsg->channel, FTDM_CHANNEL_CALL_STARTED);
                        ftdm_call_set_call_id(sigmsg->channel, &sigmsg->channel->caller_data);
-                       if (sigmsg->channel->dtmfdbg.requested) {
-                               ftdm_channel_command(sigmsg->channel, FTDM_COMMAND_ENABLE_DEBUG_DTMF, NULL);
-                       }
-
                        /* when cleaning up the public API I added this because mod_freetdm.c on_fxs_signal was
                        * doing it during SIGEVENT_START, but now that flags are private they can't, wonder if
                        * is needed at all?
index 83705d9af8a27846c35a9a03f18402b44208703d..4265c9b8fa0bf228d7f2313a2e8fc21a21e9e070 100644 (file)
@@ -676,12 +676,6 @@ static void ftdm_r2_on_call_offered(openr2_chan_t *r2chan, const char *ani, cons
        ftdm_log_chan(ftdmchan, FTDM_LOG_NOTICE, "Call offered with ANI = %s, DNIS = %s, Category = %d, ANI restricted = %s\n", 
                        ani, dnis, category, ani_restricted ? "Yes" : "No");
 
-       /* nothing went wrong during call setup, MF has ended, we can and must disable the MF dump */
-       if (r2data->mf_dump_size) {
-               ftdm_channel_command(ftdmchan, FTDM_COMMAND_DISABLE_INPUT_DUMP, NULL);
-               ftdm_channel_command(ftdmchan, FTDM_COMMAND_DISABLE_OUTPUT_DUMP, NULL);
-       }
-
        /* check if this is a collect call and if we should accept it */
        if (!r2data->allow_collect_calls && category == OR2_CALLING_PARTY_CATEGORY_COLLECT_CALL) {
                ftdm_log_chan_msg(ftdmchan, FTDM_LOG_NOTICE, "Rejecting collect call\n");
@@ -770,6 +764,12 @@ static void ftdm_r2_on_call_accepted(openr2_chan_t *r2chan, openr2_call_mode_t m
        
        R2CALL(ftdmchan)->accepted = 1;
 
+       /* nothing went wrong during call setup, MF has ended, we can and must disable the MF dump */
+       if (r2data->mf_dump_size) {
+               ftdm_channel_command(ftdmchan, FTDM_COMMAND_DISABLE_INPUT_DUMP, NULL);
+               ftdm_channel_command(ftdmchan, FTDM_COMMAND_DISABLE_OUTPUT_DUMP, NULL);
+       }
+
        if (OR2_DIR_BACKWARD == openr2_chan_get_direction(r2chan)) {
                if (R2CALL(ftdmchan)->answer_pending) {
                        ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Answer was pending, answering now.\n");
@@ -778,11 +778,6 @@ static void ftdm_r2_on_call_accepted(openr2_chan_t *r2chan, openr2_call_mode_t m
                        return;
                }
        } else {
-               /* nothing went wrong during call setup, MF has ended, we can and must disable the MF dump */
-               if (r2data->mf_dump_size) {
-                       ftdm_channel_command(ftdmchan, FTDM_COMMAND_DISABLE_INPUT_DUMP, NULL);
-                       ftdm_channel_command(ftdmchan, FTDM_COMMAND_DISABLE_OUTPUT_DUMP, NULL);
-               }
                ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_PROGRESS_MEDIA);
        }
 }
index ba16c7cb7ff02c8b643c7bdd6cb3fec3505e7c52..7b26d655c5a5313e7209bbdd38509458ca843598 100644 (file)
@@ -688,6 +688,9 @@ FT_DECLARE(void) ftdm_set_echocancel_call_end(ftdm_channel_t *chan);
                        if (!ftdm_test_flag((fchan), FTDM_CHANNEL_MEDIA)) { \
                                ftdm_set_flag((fchan), FTDM_CHANNEL_MEDIA); \
                                ftdm_set_echocancel_call_begin((fchan)); \
+                               if ((fchan)->dtmfdbg.requested) { \
+                                       ftdm_channel_command((fchan), FTDM_COMMAND_ENABLE_DEBUG_DTMF, NULL); \
+                               } \
                        } \
                } while (0);