diff --git a/apps/app_queue.c b/apps/app_queue.c index ee004f4297..e7b7ab8bd8 100755 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -75,6 +75,7 @@ static char *descrip = " 'T' -- to allow the calling user to transfer the call.\n" " 'd' -- data-quality (modem) call (minimum delay).\n" " 'H' -- allow caller to hang up by hitting *.\n" +" 'n' -- no retries on the timeout; will exit this application and go to the next step.\n" " In addition to transferring the call, a call may be parked and then picked\n" "up by another user.\n" " The optionnal URL will be sent to the called party if the channel supports\n" @@ -99,7 +100,8 @@ static char *app_rqm_descrip = "Example: RemoveQueueMember(techsupport|SIP/3000)\n" ""; - +/* whether to exit Queue application after the timeout hits */ +static int go_on = 0; /* We define a customer "local user" structure because we @@ -739,6 +741,8 @@ static int try_calling(struct queue_ent *qe, char *options, char *announceoverri tmp->dataquality = 1; if (strchr(options, 'H')) tmp->allowdisconnect = 1; + if (strchr(options, 'n')) + go_on = 1; } if (url) { ast_log(LOG_DEBUG, "Queue with URL=%s_\n", url); @@ -1156,6 +1160,11 @@ static int queue_exec(struct ast_channel *chan, void *data) res = try_calling(&qe, options, announceoverride, url); if (res) break; + /* exit after a timeout if 'n' option enabled */ + if (go_on) { + res = 0; + break; + } res = wait_a_bit(&qe); if (res < 0) { if (option_verbose > 2) {