]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Don't prompt for password if one is not needed (bug #2385)
authorMark Spencer <markster@digium.com>
Sun, 5 Sep 2004 19:38:17 +0000 (19:38 +0000)
committerMark Spencer <markster@digium.com>
Sun, 5 Sep 2004 19:38:17 +0000 (19:38 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3728 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 7a80aa82f8e495c478dcee13001e36ab9a526823..cf03307b323cc26d682de1458183d1aca95ea33d 100755 (executable)
@@ -3617,13 +3617,20 @@ static int vm_execmain(struct ast_channel *chan, void *data)
                }
                if (useadsi)
                        adsi_password(chan);
-               if (ast_streamfile(chan, "vm-password", chan->language)) {
-                       ast_log(LOG_WARNING, "Unable to stream password file\n");
-                       goto out;
-               }
-               if (ast_readstring(chan, password, sizeof(password) - 1, 2000, 10000, "#") < 0) {
-                       ast_log(LOG_WARNING, "Unable to read password\n");
-                       goto out;
+               if (!skipuser)
+                       vmu = find_user(&vmus, context, vms.username);
+               if (vmu && vmu->password[0] == '\0') {
+                       /* saved password is blank, so don't bother asking */
+                       password[0] = '\0';
+               } else {
+                       if (ast_streamfile(chan, "vm-password", chan->language)) {
+                               ast_log(LOG_WARNING, "Unable to stream password file\n");
+                               goto out;
+                       }
+                       if (ast_readstring(chan, password, sizeof(password) - 1, 2000, 10000, "#") < 0) {
+                               ast_log(LOG_WARNING, "Unable to read password\n");
+                               goto out;
+                       }
                }
                if (prefix) {
                        char fullusername[80] = "";
@@ -3631,8 +3638,6 @@ static int vm_execmain(struct ast_channel *chan, void *data)
                        strncat(fullusername, vms.username, sizeof(fullusername) - 1);
                        strncpy(vms.username, fullusername, sizeof(vms.username) - 1);
                }
-               if (!skipuser) 
-                       vmu = find_user(&vmus, context, vms.username);
                if (vmu && !strcmp(vmu->password, password)) 
                        valid++;
                else {