From: Willy Tarreau Date: Fri, 23 Nov 2012 08:05:05 +0000 (+0100) Subject: BUG/MINOR: checks: don't mark the FD as closed before transport close X-Git-Tag: v1.5-dev14~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ef8a719f7070fb5f1cc634dcb64be250a947046f;p=thirdparty%2Fhaproxy.git BUG/MINOR: checks: don't mark the FD as closed before transport close Some future transport layers might need the connection's file descriptor on ->close(), so we must not destroy it before we're finished with it. --- diff --git a/src/checks.c b/src/checks.c index a2a7a35d39..d38823b0b8 100644 --- a/src/checks.c +++ b/src/checks.c @@ -1430,10 +1430,10 @@ static struct task *process_chk(struct task *t) set_server_up(s); } - conn->t.sock.fd = -1; /* no check running anymore */ conn_xprt_close(conn); if (conn->ctrl) fd_delete(fd); + conn->t.sock.fd = -1; /* no check running anymore */ rv = 0; if (global.spread_checks > 0) { @@ -1462,10 +1462,10 @@ static struct task *process_chk(struct task *t) } else set_server_down(s); - conn->t.sock.fd = -1; conn_xprt_close(conn); if (conn->ctrl) fd_delete(fd); + conn->t.sock.fd = -1; rv = 0; if (global.spread_checks > 0) {