diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index cda1d74bb8d7d15aaca3bc908d26b87f7ad203f7..b22d3618c9b3df0246edfc7a02c533b90f87fb5c 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -2623,6 +2623,7 @@ static int open_mailbox(struct vm_state *vms, struct ast_vm_user *vmu, int box) ast_log(LOG_WARNING, "The code expects the old messages to be checked first, fix the code.\n"); } if (vm_allocate_dh(vms, vmu, box == 0 ? vms->vmArrayIndex + vms->oldmessages : vms->lastmsg)) { + ast_mutex_unlock(&vms->lock); return -1; } @@ -7710,7 +7711,7 @@ static int open_mailbox(struct vm_state *vms, struct ast_vm_user *vmu, int box) last_msg = last_message_index(vmu, vms->curdir); ast_unlock_path(vms->curdir); - if (last_msg < 0) { + if (last_msg < -1) { return last_msg; } else if (vms->lastmsg != last_msg) { ast_log(LOG_NOTICE, "Mailbox: %s, expected %d but found %d message(s) in box with max threshold of %d.\n", vms->curdir, last_msg + 1, vms->lastmsg + 1, vmu->maxmsg);