diff --git a/src/session.c b/src/session.c index 0f5db314a..120f670f7 100644 --- a/src/session.c +++ b/src/session.c @@ -606,6 +606,7 @@ int sess_update_st_cer(struct session *s, struct stream_interface *si) if (s->srv) s->srv->counters.failed_conns++; s->be->counters.failed_conns++; + sess_change_server(s, NULL); if (may_dequeue_tasks(s->srv, s->be)) process_srv_queue(s->srv); @@ -628,6 +629,7 @@ int sess_update_st_cer(struct session *s, struct stream_interface *si) */ if (s->srv && si->conn_retries == 0 && s->be->options & PR_O_REDISP && !(s->flags & SN_FORCE_PRST)) { + sess_change_server(s, NULL); if (may_dequeue_tasks(s->srv, s->be)) process_srv_queue(s->srv); @@ -740,6 +742,7 @@ void sess_update_stream_int(struct session *s, struct stream_interface *si) s->be->counters.failed_conns++; /* release other sessions waiting for this server */ + sess_change_server(s, NULL); if (may_dequeue_tasks(s->srv, s->be)) process_srv_queue(s->srv);