diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index c0c3d06ec4dc39b3f1e698ca34ee246304ed90cb..c30085ed1c58b3c5a15d2631e4cc4feae5493e37 100755
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -3423,7 +3423,8 @@ static int append_mailbox(char *context, char *mbox, char *data)
 
 static int vm_box_exists(struct ast_channel *chan, void *data) {
 	struct localuser *u;
-	struct ast_vm_user *user;
+	struct ast_vm_user *vmu;
+	struct ast_vm_user svm;
 	char *context, *box;
 	int branch=0;
 
@@ -3445,18 +3446,9 @@ static int vm_box_exists(struct ast_channel *chan, void *data) {
 			break;
 		box++;
 	}
-	ast_mutex_lock(&vmlock);
-	user = users;
-	while (user) {
-		if ((!strcmp(box,user->mailbox)) && (!strcmp(context,user->context))) {
-			branch = 1;
-			break;
-		}
-		user = user->next;
-	}
-	ast_mutex_unlock(&vmlock);
+	vmu = find_user(&svm, context, box);
 
-	if (branch) {
+	if (vmu) {
 		if (ast_exists_extension(chan, chan->context, chan->exten, chan->priority + 101, chan->callerid)) {
 			chan->priority += 100;
 		} else