--- app_voicemail.c.~1.253.~ 2005-10-19 12:19:02.000000000 -0600 +++ app_voicemail.c 2005-10-21 17:26:28.000000000 -0600 @@ -4592,34 +4592,36 @@ /* First, have the user change their password so they won't get here again */ - newpassword[1] = '\0'; - newpassword[0] = cmd = ast_play_and_wait(chan,"vm-newpassword"); - if (cmd == '#') - newpassword[0] = '\0'; - if (cmd < 0 || cmd == 't' || cmd == '#') - return cmd; - cmd = ast_readstring(chan,newpassword + strlen(newpassword),sizeof(newpassword)-1,2000,10000,"#"); - if (cmd < 0 || cmd == 't' || cmd == '#') - return cmd; - newpassword2[1] = '\0'; - newpassword2[0] = cmd = ast_play_and_wait(chan,"vm-reenterpassword"); - if (cmd == '#') - newpassword2[0] = '\0'; - if (cmd < 0 || cmd == 't' || cmd == '#') - return cmd; - cmd = ast_readstring(chan,newpassword2 + strlen(newpassword2),sizeof(newpassword2)-1,2000,10000,"#"); - if (cmd < 0 || cmd == 't' || cmd == '#') - return cmd; - if (strcmp(newpassword, newpassword2)) { - ast_log(LOG_NOTICE,"Password mismatch for user %s (%s != %s)\n", vms->username, newpassword, newpassword2); - cmd = ast_play_and_wait(chan, "vm-mismatch"); - } - if (ast_strlen_zero(ext_pass_cmd)) - vm_change_password(vmu,newpassword); - else - vm_change_password_shell(vmu,newpassword); - ast_log(LOG_DEBUG,"User %s set password to %s of length %d\n",vms->username,newpassword,(int)strlen(newpassword)); - cmd = ast_play_and_wait(chan,"vm-passchanged"); + while ( strncmp(vmu->mailbox, vmu->password, AST_MAX_EXTENSION) == 0 ){ + newpassword[1] = '\0'; + newpassword[0] = cmd = ast_play_and_wait(chan,"vm-newpassword"); + if (cmd == '#') + newpassword[0] = '\0'; + if (cmd < 0 || cmd == 't' || cmd == '#') + return cmd; + cmd = ast_readstring(chan,newpassword + strlen(newpassword),sizeof(newpassword)-1,2000,10000,"#"); + if (cmd < 0 || cmd == 't' || cmd == '#') + return cmd; + newpassword2[1] = '\0'; + newpassword2[0] = cmd = ast_play_and_wait(chan,"vm-reenterpassword"); + if (cmd == '#') + newpassword2[0] = '\0'; + if (cmd < 0 || cmd == 't' || cmd == '#') + return cmd; + cmd = ast_readstring(chan,newpassword2 + strlen(newpassword2),sizeof(newpassword2)-1,2000,10000,"#"); + if (cmd < 0 || cmd == 't' || cmd == '#') + return cmd; + if (strcmp(newpassword, newpassword2)) { + ast_log(LOG_NOTICE,"Password mismatch for user %s (%s != %s)\n", vms->username, newpassword, newpassword2); + cmd = ast_play_and_wait(chan, "vm-mismatch"); + } + if (ast_strlen_zero(ext_pass_cmd)) + vm_change_password(vmu,newpassword); + else + vm_change_password_shell(vmu,newpassword); + ast_log(LOG_DEBUG,"User %s set password to %s of length %d\n",vms->username,newpassword,(int)strlen(newpassword)); + cmd = ast_play_and_wait(chan,"vm-passchanged"); + } /* If forcename is set, have the user record their name */ if (ast_test_flag(vmu, VM_FORCENAME)) {