int linwrapped; /*!< Is the linpos wrapped? */
time_t start; /*!< When we started holding */
time_t expire; /*!< When this entry should expire (time out of queue) */
- int cancel_answered_elsewhere; /*!< Whether we should force the CAE flag on this call (C) option*/
+ int cancel_answered_elsewhere; /*!< Whether we should force the CAE flag on this call (C) option */
struct ast_channel *chan; /*!< Our channel */
AST_LIST_HEAD_NOLOCK(,penalty_rule) qe_rules; /*!< Local copy of the queue's penalty rules */
struct penalty_rule *pr; /*!< Pointer to the next penalty rule to implement */
int callcompletedinsl; /*!< Whether the current call was completed within service level */
time_t starttime; /*!< The time at which the member answered the current caller. */
time_t lastcall; /*!< When last successful call was hungup */
- struct call_queue *lastqueue; /*!< Last queue we received a call */
+ struct call_queue *lastqueue; /*!< Last queue we received a call */
unsigned int dead:1; /*!< Used to detect members deleted in realtime */
unsigned int delme:1; /*!< Flag to delete entry on reload */
char rt_uniqueid[80]; /*!< Unique id of realtime member entry */
/* Say we're next, if we are */
if (qe->pos == 1) {
res = play_file(qe->chan, qe->parent->sound_next);
- if (res) {
- goto playout;
- }
- goto posout;
+ if (!res) {
+ goto posout;
+ }
+ /* Say there are more than N callers */
+ } else if (qe->parent->announceposition == ANNOUNCEPOSITION_MORE_THAN && qe->pos > qe->parent->announcepositionlimit) {
+ res = (
+ play_file(qe->chan, qe->parent->queue_quantity1) ||
+ ast_say_number(qe->chan, qe->parent->announcepositionlimit, AST_DIGIT_ANY,
+ ast_channel_language(qe->chan), NULL) || /* Needs gender */
+ play_file(qe->chan, qe->parent->queue_quantity2));
+ /* Say there are currently N callers waiting */
} else {
- if (qe->parent->announceposition == ANNOUNCEPOSITION_MORE_THAN && qe->pos > qe->parent->announcepositionlimit){
- /* More than Case*/
- res = play_file(qe->chan, qe->parent->queue_quantity1);
- if (res) {
- goto playout;
- }
- res = ast_say_number(qe->chan, qe->parent->announcepositionlimit, AST_DIGIT_ANY, ast_channel_language(qe->chan), NULL); /* Needs gender */
- if (res) {
- goto playout;
- }
- } else {
- /* Normal Case */
- res = play_file(qe->chan, qe->parent->sound_thereare);
- if (res) {
- goto playout;
- }
- res = ast_say_number(qe->chan, qe->pos, AST_DIGIT_ANY, ast_channel_language(qe->chan), NULL); /* Needs gender */
- if (res) {
- goto playout;
- }
- }
- if (qe->parent->announceposition == ANNOUNCEPOSITION_MORE_THAN && qe->pos > qe->parent->announcepositionlimit){
- /* More than Case*/
- res = play_file(qe->chan, qe->parent->queue_quantity2);
- if (res) {
- goto playout;
- }
- } else {
- res = play_file(qe->chan, qe->parent->sound_calls);
- if (res) {
- goto playout;
- }
- }
+ res = (
+ play_file(qe->chan, qe->parent->sound_thereare) ||
+ ast_say_number(qe->chan, qe->pos, AST_DIGIT_ANY,
+ ast_channel_language(qe->chan), NULL) || /* Needs gender */
+ play_file(qe->chan, qe->parent->sound_calls));
+ }
+ if (res) {
+ goto playout;
}
}
/* Round hold time to nearest minute */