diff --git a/src/queue.c b/src/queue.c index fe082def4..87ffca58d 100644 --- a/src/queue.c +++ b/src/queue.c @@ -351,10 +351,9 @@ void process_srv_queue(struct server *s, int server_locked) if (!pc) break; - done = 1; + done++; _HA_ATOMIC_INC(&s->served); - _HA_ATOMIC_INC(&p->served); stream_add_srv_conn(pc->strm, s); task_wakeup(pc->strm->task, TASK_WOKEN_RES); @@ -363,6 +362,8 @@ void process_srv_queue(struct server *s, int server_locked) if (!server_locked) HA_SPIN_UNLOCK(SERVER_LOCK, &s->lock); + _HA_ATOMIC_ADD(&p->served, done); + if (done && p->lbprm.server_take_conn) p->lbprm.server_take_conn(s, server_locked); }