Merged revisions 19008 via svnmerge from
authorBJ Weschke <bweschke@btwtech.com>
Tue, 11 Apr 2006 01:12:13 +0000 (01:12 +0000)
committerBJ Weschke <bweschke@btwtech.com>
Tue, 11 Apr 2006 01:12:13 +0000 (01:12 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r19008 | bweschke | 2006-04-10 20:05:01 -0500 (Mon, 10 Apr 2006) | 3 lines

 When using the silence detector in ast_play_and_record() and ast_play_and_prepend(), the truncation code never gets called to remove the detected silence, because the value of res is zero when control gets to that point. #6903 w/some mods (softins)

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@19009 65c4cc65-6c06-0410-ace0-fbb531ad65f3

app.c
apps/app_voicemail.c

diff --git a/app.c b/app.c
index e6c7f46..bdd76ce 100644 (file)
--- a/app.c
+++ b/app.c
@@ -552,7 +552,6 @@ int ast_play_and_record(struct ast_channel *chan, const char *playfile, const ch
        struct ast_dsp *sildet=NULL;    /* silence detector dsp */
        int totalsilence = 0;
        int dspsilence = 0;
-       int gotsilence = 0;             /* did we timeout for silence? */
        int rfmt=0;
        struct ast_silence_generator *silgen = NULL;
 
@@ -675,7 +674,7 @@ int ast_play_and_record(struct ast_channel *chan, const char *playfile, const ch
                                                if (option_verbose > 2)
                                                        ast_verbose( VERBOSE_PREFIX_3 "Recording automatically stopped after a silence of %d seconds\n", totalsilence/1000);
                                                ast_frfree(f);
-                                               gotsilence = 1;
+                                               res = 'S';
                                                outmsg=2;
                                                break;
                                        }
@@ -779,7 +778,6 @@ int ast_play_and_prepend(struct ast_channel *chan, char *playfile, char *recordf
        struct ast_dsp *sildet;         /* silence detector dsp */
        int totalsilence = 0;
        int dspsilence = 0;
-       int gotsilence = 0;             /* did we timeout for silence? */
        int rfmt=0;     
        char prependfile[80];
        
@@ -898,7 +896,7 @@ int ast_play_and_prepend(struct ast_channel *chan, char *playfile, char *recordf
                                        if (option_verbose > 2) 
                                                ast_verbose( VERBOSE_PREFIX_3 "Recording automatically stopped after a silence of %d seconds\n", totalsilence/1000);
                                        ast_frfree(f);
-                                       gotsilence = 1;
+                                       res = 'S';
                                        outmsg=2;
                                        break;
                                        }
index e44323d..ed9d362 100644 (file)
@@ -3294,7 +3294,7 @@ static int vm_forwardoptions(struct ast_channel *chan, struct ast_vm_user *vmu,
                                cmd = 't';
                 }
        }
-       if (cmd == 't')
+       if (cmd == 't' || cmd == 'S')
                cmd = 0;
        return cmd;
 }