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
This commit is contained in:
Terry Wilson
2011-09-28 16:59:11 +00:00
parent 89205c35e8
commit 0ab04b53b5
3 changed files with 20 additions and 2 deletions

View File

@@ -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)