Merged revisions 138685 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Mon, 18 Aug 2008 20:04:10 +0000 (20:04 +0000)
committerMark Michelson <mmichelson@digium.com>
Mon, 18 Aug 2008 20:04:10 +0000 (20:04 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r138685 | mmichelson | 2008-08-18 15:01:14 -0500 (Mon, 18 Aug 2008) | 10 lines

Change the inequalities used in app_queue with regards
to timeouts from being strict to non-strict for more
accuracy.

(closes issue #13239)
Reported by: atis
Patches:
      app_queue_timeouts_v2.patch uploaded by atis (license 242)

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@138687 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_queue.c

index 40de07b..4054437 100644 (file)
@@ -2855,7 +2855,7 @@ static int wait_our_turn(struct queue_ent *qe, int ringing, enum queue_result *r
                        break;
 
                /* If we have timed out, break out */
-               if (qe->expire && (time(NULL) > qe->expire)) {
+               if (qe->expire && (time(NULL) >= qe->expire)) {
                        *reason = QUEUE_TIMEOUT;
                        break;
                }
@@ -2890,7 +2890,7 @@ static int wait_our_turn(struct queue_ent *qe, int ringing, enum queue_result *r
                        break;
 
                /* If we have timed out, break out */
-               if (qe->expire && (time(NULL) > qe->expire)) {
+               if (qe->expire && (time(NULL) >= qe->expire)) {
                        *reason = QUEUE_TIMEOUT;
                        break;
                }
@@ -2901,12 +2901,12 @@ static int wait_our_turn(struct queue_ent *qe, int ringing, enum queue_result *r
                        break;
                
                /* see if we need to move to the next penalty level for this queue */
-               while (qe->pr && ((time(NULL) - qe->start) > qe->pr->time)) {
+               while (qe->pr && ((time(NULL) - qe->start) >= qe->pr->time)) {
                        update_qe_rule(qe);
                }
 
                /* If we have timed out, break out */
-               if (qe->expire && (time(NULL) > qe->expire)) {
+               if (qe->expire && (time(NULL) >= qe->expire)) {
                        *reason = QUEUE_TIMEOUT;
                        break;
                }
@@ -2920,7 +2920,7 @@ static int wait_our_turn(struct queue_ent *qe, int ringing, enum queue_result *r
                }
                
                /* If we have timed out, break out */
-               if (qe->expire && (time(NULL) > qe->expire)) {
+               if (qe->expire && (time(NULL) >= qe->expire)) {
                        *reason = QUEUE_TIMEOUT;
                        break;
                }
@@ -3245,7 +3245,7 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
         * This should be extremely rare. queue_exec will take care
         * of removing the caller and reporting the timeout as the reason.
         */
-       if (qe->expire && now > qe->expire) {
+       if (qe->expire && now >= qe->expire) {
                res = 0;
                goto out;
        }
@@ -4707,7 +4707,7 @@ check_turns:
                enum queue_member_status status;
 
                /* Leave if we have exceeded our queuetimeout */
-               if (qe.expire && (time(NULL) > qe.expire)) {
+               if (qe.expire && (time(NULL) >= qe.expire)) {
                        record_abandoned(&qe);
                        reason = QUEUE_TIMEOUT;
                        res = 0;
@@ -4730,7 +4730,7 @@ check_turns:
                                goto stop;
        
                /* Leave if we have exceeded our queuetimeout */
-               if (qe.expire && (time(NULL) > qe.expire)) {
+               if (qe.expire && (time(NULL) >= qe.expire)) {
                        record_abandoned(&qe);
                        reason = QUEUE_TIMEOUT;
                        res = 0;
@@ -4786,7 +4786,7 @@ check_turns:
                }
 
                /* Leave if we have exceeded our queuetimeout */
-               if (qe.expire && (time(NULL) > qe.expire)) {
+               if (qe.expire && (time(NULL) >= qe.expire)) {
                        record_abandoned(&qe);
                        reason = QUEUE_TIMEOUT;
                        res = 0;