aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_voicemail.c
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-09-15 22:27:41 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-09-15 22:27:41 +0000
commit1534107407d0fd11c8ae1867a0a1c71878472ca8 (patch)
treef0e9fcacdebccbdd90e760605a5661b6aa81e297 /apps/app_voicemail.c
parent45045de1837b213ce9584d17b22a789bca7a8cbb (diff)
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.4@218730 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_voicemail.c')
-rw-r--r--apps/app_voicemail.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 796e8f52f..e6f3ab4ae 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -680,18 +680,17 @@ static void apply_option(struct ast_vm_user *vmu, const char *var, const char *v
static int change_password_realtime(struct ast_vm_user *vmu, const char *password)
{
- int res;
- if (!ast_strlen_zero(vmu->uniqueid)) {
- res = ast_update_realtime("voicemail", "uniqueid", vmu->uniqueid, "password", password, NULL);
- if (res > 0) {
+ 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 (ast_update_realtime("voicemail", "uniqueid", vmu->uniqueid, "password", password, NULL) > 0) {
ast_copy_string(vmu->password, password, sizeof(vmu->password));
res = 0;
- } else if (!res) {
- res = -1;
}
- return res;
}
- return -1;
+ return res;
}
static void apply_options(struct ast_vm_user *vmu, const char *options)