diff options
author | Terry Wilson <twilson@digium.com> | 2011-09-28 16:59:11 +0000 |
---|---|---|
committer | Terry Wilson <twilson@digium.com> | 2011-09-28 16:59:11 +0000 |
commit | 0ab04b53b5fdcfc17bc5f82acafc87c92ca37924 (patch) | |
tree | e31acd244af4ad3345287693f529d47ec2097869 /apps/app_queue.c | |
parent | 89205c35e8625e4d1349e700f844823bc780f5c9 (diff) |
Add autopausebusy and autopauseunavail queue options
Make it possible to autopause on a busy or unavailable response from
a device.
(closes issue ASTERISK-16112)
Reported by: jlpedrosa
Patches:
autopausebusy.txt by twilson
Review: https://reviewboard.asterisk.org/r/1399/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@338187 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_queue.c')
-rw-r--r-- | apps/app_queue.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index 7930ca301..f1bcb8b48 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -1158,6 +1158,8 @@ struct call_queue { unsigned int realtime:1; unsigned int found:1; unsigned int relativeperiodicannounce:1; + unsigned int autopausebusy:1; + unsigned int autopauseunavail:1; enum empty_conditions joinempty; enum empty_conditions leavewhenempty; int announcepositionlimit; /*!< How many positions we announce? */ @@ -2040,6 +2042,10 @@ static void queue_set_param(struct call_queue *q, const char *param, const char q->autopause = autopause2int(val); } else if (!strcasecmp(param, "autopausedelay")) { q->autopausedelay = atoi(val); + } else if (!strcasecmp(param, "autopausebusy")) { + q->autopausebusy = ast_true(val); + } else if (!strcasecmp(param, "autopauseunavail")) { + q->autopauseunavail = ast_true(val); } else if (!strcasecmp(param, "maxlen")) { q->maxlen = atoi(val); if (q->maxlen < 0) @@ -3782,7 +3788,7 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte do_hang(o); endtime = (long) time(NULL); endtime -= starttime; - rna(endtime * 1000, qe, on, membername, 0); + rna(endtime * 1000, qe, on, membername, qe->parent->autopausebusy); if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) { if (qe->parent->timeoutrestart) *to = orig; @@ -3800,7 +3806,7 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte ast_cdr_busy(in->cdr); endtime = (long) time(NULL); endtime -= starttime; - rna(endtime * 1000, qe, on, membername, 0); + rna(endtime * 1000, qe, on, membername, qe->parent->autopauseunavail); do_hang(o); if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) { if (qe->parent->timeoutrestart) |