]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
tweak fifo
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 3 Apr 2008 21:31:04 +0000 (21:31 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 3 Apr 2008 21:31:04 +0000 (21:31 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8013 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_fifo/mod_fifo.c

index 6e0336ca2ebc5e1a84690e565f6c69e771f04d62..809ed5f38a03ec8bc14bf96d43874b3a989736b0 100644 (file)
@@ -84,7 +84,10 @@ static switch_status_t moh_on_dtmf(switch_core_session_t *session, void *input,
        case SWITCH_INPUT_TYPE_DTMF:
         {
             switch_dtmf_t *dtmf = (switch_dtmf_t *) input;
-            if (dtmf->digit == '*') {
+                       switch_channel_t *channel = switch_core_session_get_channel(session);
+                       const char *caller_exit_key = switch_channel_get_variable(channel, "fifo_caller_exit_key");
+                       
+            if (caller_exit_key && dtmf->digit == *caller_exit_key) {
                                char *bp = buf;
                                *bp = dtmf->digit;
                                return SWITCH_STATUS_BREAK;
@@ -312,10 +315,11 @@ SWITCH_STANDARD_APP(fifo_function)
                while(switch_channel_ready(channel)) {
                        switch_input_args_t args = { 0 };
                        char buf[25] = "";
+                       const char *caller_exit_key = switch_channel_get_variable(channel, "fifo_caller_exit_key");
                        args.input_callback = moh_on_dtmf;
                        args.buf = buf;
                        args.buflen = sizeof(buf);
-
+                       
 
                        if ((serviced_uuid = switch_channel_get_variable(channel, "fifo_serviced_uuid"))) {
                                break;
@@ -327,7 +331,7 @@ SWITCH_STANDARD_APP(fifo_function)
                                switch_ivr_collect_digits_callback(session, &args, 0);
                        }
                        
-                       if (*buf == '*') {
+                       if (caller_exit_key && *buf == *caller_exit_key) {
                                aborted = 1;
                                goto abort;
                        }