]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] log: reported queue position was offed-by-one
authorWilly Tarreau <w@1wt.eu>
Fri, 13 Jun 2008 19:48:18 +0000 (21:48 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 20 Jun 2008 13:08:04 +0000 (15:08 +0200)
The reported queue position in the logs was 0 for the first pending request
in the queue, which is wrong because it means that one request will have to
be completed before the queued one may execute. It caused the undesired side
effect that 0/0 was reported when either 0 or 1 request was pending in the
queue. Thus, we have to increment the queue size before reporting the value.

src/queue.c

index d29170a3b5bba9017af8ddb07a51d2eb4299cc7e..4d383f03f9143cd0929195299eed3591adac8235 100644 (file)
@@ -135,14 +135,14 @@ struct pendconn *pendconn_add(struct session *sess)
        p->srv  = sess->srv;
        if (sess->srv) {
                LIST_ADDQ(&sess->srv->pendconns, &p->list);
-               sess->logs.srv_queue_size += sess->srv->nbpend;
                sess->srv->nbpend++;
+               sess->logs.srv_queue_size += sess->srv->nbpend;
                if (sess->srv->nbpend > sess->srv->nbpend_max)
                        sess->srv->nbpend_max = sess->srv->nbpend;
        } else {
                LIST_ADDQ(&sess->be->pendconns, &p->list);
-               sess->logs.prx_queue_size += sess->be->nbpend;
                sess->be->nbpend++;
+               sess->logs.prx_queue_size += sess->be->nbpend;
                if (sess->be->nbpend > sess->be->nbpend_max)
                        sess->be->nbpend_max = sess->be->nbpend;
        }