diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index acc79a76c67eda56eb787ff23ecc4295a12964f7..fece02aca6e0eec2f66f528730e7825f6e75cc68 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -10179,6 +10179,9 @@ static int vm_exec(struct ast_channel *chan, const char *data)
 	}
 
 	res = leave_voicemail(chan, args.argv0, &leave_options);
+	if (res == OPERATOR_EXIT) {
+		res = 0;
+	}
 
 	if (res == ERROR_LOCK_PATH) {
 		ast_log(AST_LOG_ERROR, "Could not leave voicemail. The path is already locked.\n");
@@ -12927,7 +12930,7 @@ static int play_record_review(struct ast_channel *chan, char *playfile, char *re
 				return 1;
 #endif
 		case '0':
-			if (!ast_test_flag(vmu, VM_OPERATOR)) {
+			if (!ast_test_flag(vmu, VM_OPERATOR) || !outsidecaller) {
 				cmd = ast_play_and_wait(chan, "vm-sorry");
 				break;
 			}