]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
CLEANUP: tcp: silent-drop: only drain the connection when quick-ack is disabled
authorWilly Tarreau <w@1wt.eu>
Tue, 29 Sep 2015 16:15:01 +0000 (18:15 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 29 Sep 2015 16:15:01 +0000 (18:15 +0200)
The conn_sock_drain() call is only there to force the system to ACK
pending data in case of TCP_QUICKACK so that the client doesn't retransmit,
otherwise it leads to a real RST making the feature useless. There's no
point in draining the connection when quick ack cannot be disabled, so
let's move the call inside the ifdef part.

src/proto_tcp.c

index 4c5005e0d3beee1c7f269264f8f83213fa5101b4..0655b0dff67a3be216cc789ddd9921e68fef1059 100644 (file)
@@ -1431,8 +1431,10 @@ static enum act_return tcp_exec_action_silent_drop(struct act_rule *rule, struct
        if (!conn_ctrl_ready(conn))
                goto out;
 
-       conn_sock_drain(conn);
 #ifdef TCP_QUICKACK
+       /* drain is needed only to send the quick ACK */
+       conn_sock_drain(conn);
+
        /* re-enable quickack if it was disabled to ack all data and avoid
         * retransmits from the client that might trigger a real reset.
         */