diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-09-15 22:46:41 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-09-15 22:46:41 +0000 |
commit | 393e16672f976c4f65824516736e9272b4ff9ca3 (patch) | |
tree | ff7327e81d58bc87a20d822097b764a9fdfce553 /apps | |
parent | f8bf8d7500db6733688bc0b04f1372b1c4205752 (diff) |
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: http://svn.digium.com/svn/asterisk/branches/1.6.2@218733 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_voicemail.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 6644419b2..7a04c5456 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -1061,28 +1061,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)) { - if (strlen(password) > 10) { - ast_realtime_require_field("voicemail", "password", RQ_CHAR, strlen(password), SENTINEL); - } - res = ast_update2_realtime("voicemail", "context", vmu->context, "mailbox", vmu->mailbox, SENTINEL, "password", password, SENTINEL); - if (res > 0) { - ast_copy_string(vmu->password, password, sizeof(vmu->password)); - res = 0; - } else if (!res) { - res = -1; - } - return res; + int res = -1; + if (!strcmp(vmu->password, password)) { + /* No change (but an update would return 0 rows updated, so we opt out here) */ + return 0; } - return -1; + + if (strlen(password) > 10) { + ast_realtime_require_field("voicemail", "password", RQ_CHAR, strlen(password), SENTINEL); + } + if (ast_update2_realtime("voicemail", "context", vmu->context, "mailbox", vmu->mailbox, SENTINEL, "password", password, SENTINEL) > 0) { + ast_copy_string(vmu->password, password, sizeof(vmu->password)); + res = 0; + } + return res; } /*! |