diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-07-24 03:37:50 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-07-24 03:37:50 +0000 |
commit | 3891df8aac8f516e2c9902a609af9d5c5b066548 (patch) | |
tree | 23b16f6f62a97c80ccad454dc35e803ab5eb105d /apps/app_queue.c | |
parent | b9cc40c9ac9fa98ba183fcae9a41907181aac46e (diff) |
Create option for joining empty queue (bug #2126)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3502 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_queue.c')
-rwxr-xr-x | apps/app_queue.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index 6fe9f6d4a..9acaa234e 100755 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -216,6 +216,7 @@ struct ast_call_queue { int rrpos; /* Round Robin - position */ int wrapped; /* Round Robin - wrapped around? */ + int joinempty; /* Do we care if the queue has no members? */ struct member *members; /* Member channels to be tried */ struct queue_ent *head; /* Start of the actual queue */ @@ -280,7 +281,7 @@ static int join_queue(char *queuename, struct queue_ent *qe) if (!strcasecmp(q->name, queuename)) { /* This is our one */ ast_mutex_lock(&q->lock); - if (q->members && (!q->maxlen || (q->count < q->maxlen))) { + if ((q->members || q->joinempty) && (!q->maxlen || (q->count < q->maxlen))) { /* There's space for us, put us at the right position inside * the queue. * Take into account the priority of the calling user */ @@ -1830,6 +1831,8 @@ static void reload_queues(void) ast_log(LOG_WARNING, "'%s' isn't a valid strategy, using ringall instead\n", var->value); q->strategy = 0; } + } else if (!strcasecmp(var->name, "joinempty")) { + q->joinempty = ast_true(var->value); } else { ast_log(LOG_WARNING, "Unknown keyword in queue '%s': %s at line %d of queue.conf\n", cat, var->name, var->lineno); } |