diff --git a/src/queue.c b/src/queue.c index d8e73b218..60b16a066 100644 --- a/src/queue.c +++ b/src/queue.c @@ -351,9 +351,10 @@ void process_srv_queue(struct server *s, int server_locked) if (!pc) break; - done++; + done = 1; _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); @@ -362,8 +363,6 @@ 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); }