diff options
author | citats <citats@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-04-26 06:57:15 +0000 |
---|---|---|
committer | citats <citats@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-04-26 06:57:15 +0000 |
commit | 3c8a421add2470d82803016836199de57d09740a (patch) | |
tree | 0f673cf4741e1b6e05a8b966110692d4f91daccb | |
parent | 33b1a30147cc0797109bee12e7f2ddb97bef41f0 (diff) |
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
-rwxr-xr-x | apps/app_queue.c | 21 |
1 files changed, 20 insertions, 1 deletions
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 <michiel@betel.nl> + * Added Priority jumping code for adding and removing queue members by Jonathan Stanton <asterisk@doilooklikeicare.com> * * Fixed ot work with CVS as of 2004-02-25 and released as 1.07a * by Matthew Enger <m.enger@xi.com.au> @@ -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); |