]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_queue: Refactor odd placement of if's around say_position
authorWalter Doekes <walter+asterisk@wjd.nu>
Tue, 25 Feb 2020 16:05:28 +0000 (17:05 +0100)
committerWalter Doekes <walter+asterisk@wjd.nu>
Tue, 25 Feb 2020 16:05:28 +0000 (17:05 +0100)
Change-Id: Icba97905e331812f129e5966e91a59b104c7a748

apps/app_queue.c

index fb489a543d4907adf43b589d54b59f79ebba0182..a9630c9a1da6565577f63ee8383c33bce6614563 100644 (file)
@@ -1485,7 +1485,7 @@ struct queue_ent {
        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 */
@@ -1510,7 +1510,7 @@ struct member {
        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 */
@@ -3867,44 +3867,26 @@ static int say_position(struct queue_ent *qe, int ringing)
                /* 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 */