[asterisk-commits] mmichelson: branch 1.4 r78575 - /branches/1.4/apps/app_queue.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Aug 8 09:26:37 CDT 2007
Author: mmichelson
Date: Wed Aug 8 09:26:36 2007
New Revision: 78575
URL: http://svn.digium.com/view/asterisk?view=rev&rev=78575
Log:
Changing a bit of logic so that someone will NEVER exit the queue on timeout unless they have enabled the 'n' option.
This commit relates to issue #10320. Thanks to jfitzgibbon for detailing the idea behind this code change.
Modified:
branches/1.4/apps/app_queue.c
Modified: branches/1.4/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/apps/app_queue.c?view=diff&rev=78575&r1=78574&r2=78575
==============================================================================
--- branches/1.4/apps/app_queue.c (original)
+++ branches/1.4/apps/app_queue.c Wed Aug 8 09:26:36 2007
@@ -2342,7 +2342,7 @@
return 0;
}
-static int try_calling(struct queue_ent *qe, const char *options, char *announceoverride, const char *url, int *go_on, const char *agi)
+static int try_calling(struct queue_ent *qe, const char *options, char *announceoverride, const char *url, int *tries, int *noption, const char *agi)
{
struct member *cur;
struct callattempt *outgoing = NULL; /* the list of calls we are building */
@@ -2377,7 +2377,6 @@
char vars[2048];
int forwardsallowed = 1;
int callcompletedinsl;
- int noption = 0;
memset(&bridge_config, 0, sizeof(bridge_config));
time(&now);
@@ -2407,18 +2406,15 @@
break;
case 'n':
if (qe->parent->strategy == QUEUE_STRATEGY_ROUNDROBIN || qe->parent->strategy == QUEUE_STRATEGY_RRMEMORY)
- (*go_on)++;
+ (*tries)++;
else
- *go_on = qe->parent->membercount;
- noption = 1;
+ *tries = qe->parent->membercount;
+ *noption = 1;
break;
case 'i':
forwardsallowed = 0;
break;
}
-
- if(!noption)
- *go_on = -1;
/* Hold the lock while we setup the outgoing calls */
if (use_weight)
@@ -3367,7 +3363,8 @@
int max_penalty;
enum queue_result reason = QUEUE_UNKNOWN;
/* whether to exit Queue application after the timeout hits */
- int go_on = 0;
+ int tries = 0;
+ int noption = 0;
char *parse;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(queuename);
@@ -3497,14 +3494,14 @@
goto stop;
/* Try calling all queue members for 'timeout' seconds */
- res = try_calling(&qe, args.options, args.announceoverride, args.url, &go_on, args.agi);
+ res = try_calling(&qe, args.options, args.announceoverride, args.url, &tries, &noption, args.agi);
if (res)
goto stop;
stat = get_member_status(qe.parent, qe.max_penalty);
/* exit after 'timeout' cycle if 'n' option enabled */
- if (go_on >= qe.parent->membercount) {
+ if (noption && tries >= qe.parent->membercount) {
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Exiting on time-out cycle\n");
ast_queue_log(args.queuename, chan->uniqueid, "NONE", "EXITWITHTIMEOUT", "%d", qe.pos);
More information about the asterisk-commits
mailing list