]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
tweaks
authorAnthony Minessale <anthm@freeswitch.org>
Sun, 17 Oct 2010 23:52:03 +0000 (18:52 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Sun, 17 Oct 2010 23:52:03 +0000 (18:52 -0500)
src/switch_ivr_async.c
src/switch_ivr_play_say.c

index 7959d319aba922f17976fd5b01709b17187a1bed..40214c423dabec6dae4eb8c588b751fea8c2967c 100644 (file)
@@ -383,7 +383,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
                
                if (dmachine->last_matching_binding->callback) {
                        s = dmachine->last_matching_binding->callback(&dmachine->match);
-
+                       
                        switch(s) {
                        case SWITCH_STATUS_CONTINUE:
                                r = SWITCH_STATUS_SUCCESS;
@@ -391,7 +391,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
                        case SWITCH_STATUS_SUCCESS:
                                break;
                        default:
-                               r = SWITCH_STATUS_NOTFOUND;
+                               r = SWITCH_STATUS_BREAK;
                                break;
                        }
                }
@@ -407,7 +407,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
                        case SWITCH_STATUS_SUCCESS:
                                break;
                        default:
-                               r = SWITCH_STATUS_NOTFOUND;
+                               r = SWITCH_STATUS_BREAK;
                                break;
                        }
 
@@ -422,7 +422,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
                r = SWITCH_STATUS_SUCCESS;
        }
        
-       if (r != SWITCH_STATUS_FOUND && r != SWITCH_STATUS_SUCCESS) {
+       if (r != SWITCH_STATUS_FOUND && r != SWITCH_STATUS_SUCCESS && r != SWITCH_STATUS_BREAK) {
                switch_set_string(dmachine->last_failed_digits, dmachine->digits);
                dmachine->match.match_digits = dmachine->last_failed_digits;
                
@@ -439,7 +439,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t *
                        case SWITCH_STATUS_SUCCESS:
                                break;
                        default:
-                               r = SWITCH_STATUS_NOTFOUND;
+                               r = SWITCH_STATUS_BREAK;
                                break;
                        }
 
index c99745d57c4edd3eb55895932750e3eb9241f2a8..b1b20ec6fbcc9b88550289812a11ebb85edc57aa 100644 (file)
@@ -1130,6 +1130,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
                        uint32_t pos = 0;
                        switch_core_file_seek(fh, &pos, 0, SEEK_SET);
                        switch_core_file_seek(fh, &pos, sample_start, SEEK_CUR);
+                       switch_clear_flag(fh, SWITCH_FILE_SEEK);
                }
 
                if (switch_core_file_get_string(fh, SWITCH_AUDIO_COL_STR_TITLE, &p) == SWITCH_STATUS_SUCCESS) {
@@ -1319,6 +1320,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
                                        }
                                }
 
+                               fh->offset_pos += asis ? bread : bread / 2;
+
                                if (bread < framelen) {
                                        memset(abuf + bread, 255, framelen - bread);
                                }
@@ -1338,9 +1341,12 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
                                }
                                switch_buffer_write(fh->audio_buffer, abuf, asis ? olen : olen * 2);
                                olen = switch_buffer_read(fh->audio_buffer, abuf, framelen);
+                               fh->offset_pos += olen / 2;
+
                                if (!asis) {
                                        olen /= 2;
                                }
+
                        }
 
                        if (done || olen <= 0) {
@@ -1455,7 +1461,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
                        }
 
                        more_data = 0;
-
                        write_frame.samples = (uint32_t) olen;
 
                        if (asis) {
@@ -1480,7 +1485,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
                                switch_change_sln_volume(write_frame.data, write_frame.datalen / 2, fh->vol);
                        }
 
-                       fh->offset_pos += write_frame.samples / 2;
                        status = switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0);
 
                        if (timeout_samples) {