diff options
author | Mark Spencer <markster@digium.com> | 2004-07-24 03:37:50 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2004-07-24 03:37:50 +0000 |
commit | d89ed4ab5f00f934676fc56179e3bfa9d3aa4f1c (patch) | |
tree | 23b16f6f62a97c80ccad454dc35e803ab5eb105d /apps/app_queue.c | |
parent | 0905b587cf0612a78198e36a336e7bbc2a9c797f (diff) |
Create option for joining empty queue (bug #2126)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3502 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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); } |