]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: checks: don't mark the FD as closed before transport close
authorWilly Tarreau <w@1wt.eu>
Fri, 23 Nov 2012 08:05:05 +0000 (09:05 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 23 Nov 2012 08:05:05 +0000 (09:05 +0100)
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.

src/checks.c

index a2a7a35d39a930c2a997a7d24b3870610324b600..d38823b0b84f1f523579c241c65946eaea4c514b 100644 (file)
@@ -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) {