]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
clear before calling callback
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 28 Oct 2013 15:14:05 +0000 (10:14 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 28 Oct 2013 15:14:05 +0000 (10:14 -0500)
src/switch_ivr_async.c

index 3bf20b5839f153f968bfb4baab0b3559398a1d81..3adf73196f4f72cb9ddb94d86cdee4a7492e1cfe 100644 (file)
@@ -476,7 +476,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
        switch_bool_t is_timeout = switch_ivr_dmachine_check_timeout(dmachine);
        dm_match_t is_match = switch_ivr_dmachine_check_match(dmachine, is_timeout);
        switch_status_t r, s;
-       int clear = 0;
 
        if (is_match == DM_MATCH_NEVER) {
                is_timeout++;
@@ -504,6 +503,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
                dmachine->is_match = 1;
 
                dmachine->match.type = DM_MATCH_POSITIVE;
+               switch_ivr_dmachine_clear(dmachine);
                
                if (dmachine->last_matching_binding->callback) {
                        s = dmachine->last_matching_binding->callback(&dmachine->match);
@@ -537,7 +537,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
 
                }
 
-               clear++;
        } else if (is_timeout) {
                r = SWITCH_STATUS_TIMEOUT;
        } else if (is_match == DM_MATCH_NONE && dmachine->cur_digit_len == dmachine->max_digit_len) {
@@ -547,6 +546,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
        }
        
        if (r != SWITCH_STATUS_FOUND && r != SWITCH_STATUS_SUCCESS && r != SWITCH_STATUS_BREAK) {
+               switch_ivr_dmachine_clear(dmachine);
                switch_set_string(dmachine->last_failed_digits, dmachine->digits);
                dmachine->match.match_digits = dmachine->last_failed_digits;
                
@@ -569,13 +569,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
 
                }
                
-               clear++;
        }
-       
-       if (clear) {
-               switch_ivr_dmachine_clear(dmachine);
-       }
-
+               
        dmachine->last_return = r;
 
        switch_mutex_unlock(dmachine->mutex);