From: Tilghman Lesher Date: Tue, 15 Sep 2009 22:46:52 +0000 (+0000) Subject: Merged revisions 218731 via svnmerge from X-Git-Tag: 1.6.1.7-rc1~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=28f7949944f8cc6ac317dfc49314aa5665501406;p=thirdparty%2Fasterisk.git Merged revisions 218731 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ................ r218731 | tilghman | 2009-09-15 17:33:10 -0500 (Tue, 15 Sep 2009) | 13 lines Merged revisions 218730 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r218730 | tilghman | 2009-09-15 17:27:41 -0500 (Tue, 15 Sep 2009) | 6 lines If the user enters the same password as before, don't signal an error when the change does nothing. (closes issue #15492) Reported by: cbbs70a Patches: 20090713__issue15492.diff.txt uploaded by tilghman (license 14) ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@218734 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 79cebade1b..641f5ecb36 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -945,28 +945,27 @@ static int check_password(struct ast_vm_user *vmu, char *password) * \param vmu The voicemail user to change the password for. * \param password The new value to be set to the password for this user. * - * This only works if the voicemail user has a unique id, and if there is a realtime engine configured. + * This only works if there is a realtime engine configured. * This is called from the (top level) vm_change_password. * * \return zero on success, -1 on error. */ static int change_password_realtime(struct ast_vm_user *vmu, const char *password) { - int res; - if (!ast_strlen_zero(vmu->uniqueid)) { + int res = -1; + if (!strcmp(vmu->password, password)) { + /* No change (but an update would return 0 rows updated, so we opt out here) */ + res = 0; + } else if (!ast_strlen_zero(vmu->uniqueid)) { if (strlen(password) > 10) { ast_realtime_require_field("voicemail", "password", RQ_CHAR, strlen(password), SENTINEL); } - res = ast_update_realtime("voicemail", "uniqueid", vmu->uniqueid, "password", password, SENTINEL); - if (res > 0) { + if (ast_update_realtime("voicemail", "uniqueid", vmu->uniqueid, "password", password, SENTINEL) > 0) { ast_copy_string(vmu->password, password, sizeof(vmu->password)); res = 0; - } else if (!res) { - res = -1; } - return res; } - return -1; + return res; } /*!