Bug # 1247: Add patch to specify minimum vmail length and discard that
authorMalcolm Davenport <malcolmd@digium.com>
Thu, 18 Mar 2004 22:49:06 +0000 (22:49 +0000)
committerMalcolm Davenport <malcolmd@digium.com>
Thu, 18 Mar 2004 22:49:06 +0000 (22:49 +0000)
which does not meet the minimum

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

apps/app_voicemail.c
configs/voicemail.conf.sample

index ad3983c..f4e19ef 100755 (executable)
@@ -190,6 +190,7 @@ static char serveremail[80];
 static char mailcmd[160];      /* Configurable mail cmd */
 
 static char vmfmts[80];
+static int vmminmessage;
 static int vmmaxmessage;
 static int maxgreet;
 static int skipms;
@@ -1484,6 +1485,10 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int
                                        } else
                                                close(fd);
                                }
+                               if (end - start < vmminmessage) {
+                                       ast_filedelete(fn, NULL);
+                                       goto leave_vm_out;
+                               }
                                stringp = fmt;
                                strsep(&stringp, "|");
                                /* Send e-mail if applicable */
@@ -1510,6 +1515,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int
                        }
                } else
                        ast_log(LOG_WARNING, "No format for saving voicemail?\n");                                      
+leave_vm_out:
                free_user(vmu);
        } else {
                ast_log(LOG_WARNING, "No entry in voicemail config file for '%s'\n", ext);
@@ -3242,6 +3248,15 @@ static int load_config(void)
                                ast_log(LOG_WARNING, "Invalid max message time length\n");
                        }
                }
+
+               vmminmessage = 0;
+               if ((s = ast_variable_retrieve(cfg, "general", "minmessage"))) {
+                       if (sscanf(s, "%d", &x) == 1) {
+                               vmminmessage = x;
+                       } else {
+                               ast_log(LOG_WARNING, "Invalid min message time length\n");
+                       }
+               }
                fmt = ast_variable_retrieve(cfg, "general", "format");
                if (!fmt)
                        fmt = "wav";    
index 50281e3..8e43826 100755 (executable)
@@ -12,6 +12,8 @@ serveremail=asterisk
 attach=yes
 ; Maximum length of a voicemail message
 ;maxmessage=180
+; Minimum length of a voicemail message
+;minmessage=3
 ; Maximum length of greetings
 ;maxgreet=60
 ; How many miliseconds to skip forward/back when rew/ff in message playback