diff --git a/apps/app_queue.c b/apps/app_queue.c
index c0dea942625faba9af8245cfeb17664ccc5f36c0..8ea0e8647460a9d70b5c85c4cf206b2f8cf69ba0 100755
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -3249,6 +3249,7 @@ static int manager_queues_status( struct mansession *s, struct message *m )
 	if (!ast_strlen_zero(id)) {
 		snprintf(idText,256,"ActionID: %s\r\n",id);
 	}
+	ast_mutex_lock(&s->lock);
 	for (q = queues; q; q = q->next) {
 		ast_mutex_lock(&q->lock);
 
@@ -3256,7 +3257,6 @@ static int manager_queues_status( struct mansession *s, struct message *m )
 		if (ast_strlen_zero(queuefilter) || !strcmp(q->name, queuefilter)) {
 			if(q->callscompleted > 0)
 				sl = 100*((float)q->callscompletedinsl/(float)q->callscompleted);
-			ast_mutex_lock(&s->lock);
 			ast_cli(s->fd, "Event: QueueParams\r\n"
 						"Queue: %s\r\n"
 						"Max: %d\r\n"
@@ -3307,10 +3307,17 @@ static int manager_queues_status( struct mansession *s, struct message *m )
 						(long)(now - qe->start), idText);
 			}
 		}
-		ast_mutex_unlock(&s->lock);
 		ast_mutex_unlock(&q->lock);
 	}
 	ast_mutex_unlock(&qlock);
+
+	ast_cli(s->fd,
+		"Event: QueueStatusComplete\r\n"
+		"%s"
+		"\r\n",idText);
+
+	ast_mutex_unlock(&s->lock);
+
 	return RESULT_SUCCESS;
 }