mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-13 23:14:46 +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
13
src/checks.c
13
src/checks.c
@ -1160,10 +1160,12 @@ static void event_srv_chk_r(struct connection *conn)
|
||||
*/
|
||||
if (conn->xprt && conn->xprt->shutw)
|
||||
conn->xprt->shutw(conn, 0);
|
||||
if (!(conn->flags & CO_FL_WAIT_RD))
|
||||
recv(conn->t.sock.fd, trash.str, trash.size, MSG_NOSIGNAL|MSG_DONTWAIT);
|
||||
setsockopt(conn->t.sock.fd, SOL_SOCKET, SO_LINGER,
|
||||
(struct linger *) &nolinger, sizeof(struct linger));
|
||||
if (conn->ctrl) {
|
||||
if (!(conn->flags & CO_FL_WAIT_RD))
|
||||
recv(conn->t.sock.fd, trash.str, trash.size, MSG_NOSIGNAL|MSG_DONTWAIT);
|
||||
setsockopt(conn->t.sock.fd, SOL_SOCKET, SO_LINGER,
|
||||
(struct linger *) &nolinger, sizeof(struct linger));
|
||||
}
|
||||
__conn_data_stop_both(conn);
|
||||
task_wakeup(t, TASK_WOKEN_IO);
|
||||
return;
|
||||
@ -1383,6 +1385,9 @@ static struct task *process_chk(struct task *t)
|
||||
/* the check expired and the connection was not
|
||||
* 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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user