diff --git a/apps/app_queue.c b/apps/app_queue.c
index d03d9f0630f8377e86f02723e162dcd19f988f11..ddfa7292b2b2b7440c1a9d72ad9d0154df8b93bb 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -2708,16 +2708,11 @@ static int extension_state_cb(const char *context, const char *exten, struct ast
 
 		miter = ao2_iterator_init(q->members, 0);
 		for (; (m = ao2_iterator_next(&miter)); ao2_ref(m, -1)) {
-			if (!strcmp(m->state_context, context) && !strcmp(m->state_exten, exten)) {
-				found = 1;
-			} else if (!strcmp(m->state_exten, exten) && context_included(m->state_context, context)) {
+			if (!strcmp(m->state_exten, exten) &&
+				(!strcmp(m->state_context, context) || context_included(m->state_context, context))) {
 				/* context could be included in m->state_context. We need to check. */
 				found = 1;
-			}
-			if (found) {
 				update_status(q, m, device_state);
-				ao2_ref(m, -1);
-				break;
 			}
 		}
 		ao2_iterator_destroy(&miter);