From 3c8a421add2470d82803016836199de57d09740a Mon Sep 17 00:00:00 2001 From: citats Date: Mon, 26 Apr 2004 06:57:15 +0000 Subject: [PATCH] Make RemoveQueueMember and AddQueueMember jump to priority + 101 (bug 1022) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2769 f38db490-d61c-443f-a65b-d21fe96a405b --- apps/app_queue.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/apps/app_queue.c b/apps/app_queue.c index b4d1a397c..d8e13313c 100755 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -18,6 +18,7 @@ * Patch Version 1.07 2003-12-24 01 * * Added servicelevel statistic by Michiel Betel + * Added Priority jumping code for adding and removing queue members by Jonathan Stanton * * Fixed ot work with CVS as of 2004-02-25 and released as 1.07a * by Matthew Enger @@ -106,7 +107,9 @@ static char *app_aqm = "AddQueueMember" ; static char *app_aqm_synopsis = "Dynamically adds queue members" ; static char *app_aqm_descrip = " AddQueueMember(queuename[|interface]):\n" -"Dynamically adds interface to an existing queue\n" +"Dynamically adds interface to an existing queue.\n" +"If the interface is already in the queue and there exists an n+101 priority\n" +"then it will then jump to this priority. Otherwise it will return an error\n" "Returns -1 if there is an error.\n" "Example: AddQueueMember(techsupport|SIP/3000)\n" ""; @@ -116,6 +119,8 @@ static char *app_rqm_synopsis = "Dynamically removes queue members" ; static char *app_rqm_descrip = " RemoveQueueMember(queuename[|interface]):\n" "Dynamically removes interface to an existing queue\n" +"If the interface is NOT in the queue and there exists an n+101 priority\n" +"then it will then jump to this priority. Otherwise it will return an error\n" "Returns -1 if there is an error.\n" "Example: RemoveQueueMember(techsupport|SIP/3000)\n" ""; @@ -1179,8 +1184,15 @@ static int rqm_exec(struct ast_channel *chan, void *data) res = 0 ; } else + { ast_log(LOG_WARNING, "Unable to remove interface '%s' from queue '%s': " "Not there\n", interface, queuename); + if (ast_exists_extension(chan, chan->context, chan->exten, chan->priority + 101, chan->callerid)) + { + chan->priority += 100; + res = 0 ; + } + } } ast_mutex_unlock(&q->lock); @@ -1259,8 +1271,15 @@ static int aqm_exec(struct ast_channel *chan, void *data) res = 0 ; } else + { ast_log(LOG_WARNING, "Unable to add interface '%s' to queue '%s': " "Already there\n", interface, queuename); + if (ast_exists_extension(chan, chan->context, chan->exten, chan->priority + 101, chan->callerid)) + { + chan->priority += 100; + res = 0 ; + } + } } ast_mutex_unlock(&q->lock);