From 1dd8d10aa995db25c4df34517f3efa98d5ea7cbc Mon Sep 17 00:00:00 2001 From: BJ Weschke Date: Thu, 28 Sep 2006 16:41:05 +0000 Subject: [PATCH] Merged revisions 43897 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r43897 | bweschke | 2006-09-28 12:37:15 -0400 (Thu, 28 Sep 2006) | 3 lines app_queue is comparing the device names incorrectly while checking their statuses. It's internal list of interfaces includes the dial string, while the argument passed to this function does not have the dial string (/n for a local channel). This causes it to ignore the device state changes because it thinks it belongs to none of its members. (#8040 reported and patch by tim_ringenbach) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@43899 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_queue.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/app_queue.c b/apps/app_queue.c index 87c04f7ee1..74ee15b932 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -529,7 +529,14 @@ static void *changethread(void *data) AST_LIST_LOCK(&interfaces); AST_LIST_TRAVERSE(&interfaces, curint, list) { - if (!strcasecmp(curint->interface, sc->dev)) + char *interface; + char *slash_pos; + interface = ast_strdupa(curint->interface); + if ((slash_pos = strchr(interface, '/'))) + if ((slash_pos = strchr(slash_pos + 1, '/'))) + *slash_pos = '\0'; + + if (!strcasecmp(interface, sc->dev)) break; } AST_LIST_UNLOCK(&interfaces); @@ -547,7 +554,14 @@ static void *changethread(void *data) AST_LIST_TRAVERSE(&queues, q, list) { ast_mutex_lock(&q->lock); for (cur = q->members; cur; cur = cur->next) { - if (strcasecmp(sc->dev, cur->interface)) + char *interface; + char *slash_pos; + interface = ast_strdupa(cur->interface); + if ((slash_pos = strchr(interface, '/'))) + if ((slash_pos = strchr(slash_pos + 1, '/'))) + *slash_pos = '\0'; + + if (strcasecmp(sc->dev, interface)) continue; if (cur->status != sc->state) {