diff --git a/include/haproxy/queue.h b/include/haproxy/queue.h index 12dde8679..73e6ada6b 100644 --- a/include/haproxy/queue.h +++ b/include/haproxy/queue.h @@ -34,7 +34,7 @@ extern struct pool_head *pool_head_pendconn; struct pendconn *pendconn_add(struct stream *strm); int pendconn_dequeue(struct stream *strm); -void process_srv_queue(struct server *s); +int process_srv_queue(struct server *s); unsigned int srv_dynamic_maxconn(const struct server *s); int pendconn_redistribute(struct server *s); void pendconn_unlink(struct pendconn *p); diff --git a/src/queue.c b/src/queue.c index 62fa7dd65..c2c702522 100644 --- a/src/queue.c +++ b/src/queue.c @@ -354,7 +354,7 @@ static int pendconn_process_next_strm(struct server *srv, struct proxy *px, int /* Manages a server's connection queue. This function will try to dequeue as * many pending streams as possible, and wake them up. */ -void process_srv_queue(struct server *s) +int process_srv_queue(struct server *s) { struct server *ref = s->track ? s->track : s; struct proxy *p = s->proxy; @@ -413,6 +413,7 @@ void process_srv_queue(struct server *s) if (p->lbprm.server_take_conn) p->lbprm.server_take_conn(s); } + return done; } /* Adds the stream to the pending connection queue of server ->srv diff --git a/src/server.c b/src/server.c index b4f432c10..32b5a4c33 100644 --- a/src/server.c +++ b/src/server.c @@ -6435,7 +6435,7 @@ static int _srv_update_status_op(struct server *s, enum srv_op_st_chg_cause caus /* check if we can handle some connections queued. * We will take as many as we can handle. */ - process_srv_queue(s); + xferred = process_srv_queue(s); tmptrash = alloc_trash_chunk(); if (tmptrash) { @@ -6631,7 +6631,7 @@ static int _srv_update_status_adm(struct server *s, enum srv_adm_st_chg_cause ca /* check if we can handle some connections queued. * We will take as many as we can handle. */ - process_srv_queue(s); + xferred = process_srv_queue(s); } else if (s->next_admin & SRV_ADMF_MAINT) { /* remaining in maintenance mode, let's inform precisely about the