From 6c560da279430e3e11f9845026d22efed6fdf44c Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sat, 24 Nov 2012 11:14:45 +0100 Subject: [PATCH] BUG/MEDIUM: checks: report handshake failures Up to now, only data layer failures were reported to the task, but if a handshake failed from the beginning, the error was not reported as a failure. --- src/checks.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/checks.c b/src/checks.c index b23fa86bc..a0637c29d 100644 --- a/src/checks.c +++ b/src/checks.c @@ -1183,8 +1183,12 @@ static int wake_srv_chk(struct connection *conn) { struct server *s = conn->owner; - if (unlikely(conn->flags & CO_FL_ERROR)) + if (unlikely(conn->flags & CO_FL_ERROR)) { + /* Note that we might as well have been woken up by a handshake handler */ + s->result |= SRV_CHK_FAILED; + __conn_data_stop_both(conn); task_wakeup(s->check.task, TASK_WOKEN_IO); + } if (s->result & (SRV_CHK_FAILED|SRV_CHK_PASSED)) conn_full_close(conn);