mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-14 07:24:32 +00:00
BUG/MEDIUM: checks: prevent TIME_WAITs from appearing also on timeouts
We need to disable lingering before closing on timeout too, otherwise we accumulate TIME_WAITs.
This commit is contained in:
parent
2b199c9ac3
commit
cfd97c6f04
@ -1160,10 +1160,12 @@ static void event_srv_chk_r(struct connection *conn)
|
|||||||
*/
|
*/
|
||||||
if (conn->xprt && conn->xprt->shutw)
|
if (conn->xprt && conn->xprt->shutw)
|
||||||
conn->xprt->shutw(conn, 0);
|
conn->xprt->shutw(conn, 0);
|
||||||
|
if (conn->ctrl) {
|
||||||
if (!(conn->flags & CO_FL_WAIT_RD))
|
if (!(conn->flags & CO_FL_WAIT_RD))
|
||||||
recv(conn->t.sock.fd, trash.str, trash.size, MSG_NOSIGNAL|MSG_DONTWAIT);
|
recv(conn->t.sock.fd, trash.str, trash.size, MSG_NOSIGNAL|MSG_DONTWAIT);
|
||||||
setsockopt(conn->t.sock.fd, SOL_SOCKET, SO_LINGER,
|
setsockopt(conn->t.sock.fd, SOL_SOCKET, SO_LINGER,
|
||||||
(struct linger *) &nolinger, sizeof(struct linger));
|
(struct linger *) &nolinger, sizeof(struct linger));
|
||||||
|
}
|
||||||
__conn_data_stop_both(conn);
|
__conn_data_stop_both(conn);
|
||||||
task_wakeup(t, TASK_WOKEN_IO);
|
task_wakeup(t, TASK_WOKEN_IO);
|
||||||
return;
|
return;
|
||||||
@ -1383,6 +1385,9 @@ static struct task *process_chk(struct task *t)
|
|||||||
/* the check expired and the connection was not
|
/* the check expired and the connection was not
|
||||||
* yet closed, start by doing this.
|
* yet closed, start by doing this.
|
||||||
*/
|
*/
|
||||||
|
if (conn->ctrl)
|
||||||
|
setsockopt(conn->t.sock.fd, SOL_SOCKET, SO_LINGER,
|
||||||
|
(struct linger *) &nolinger, sizeof(struct linger));
|
||||||
conn_full_close(conn);
|
conn_full_close(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user