mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 13:51:26 +02:00
MEDIUM: tcp: report in tcp_drain() that lingering is already disabled on close
When an incoming shutdown or error is detected, we know that we can safely close without disabling lingering. Do it in tcp_drain() so that we don't have to do it from each and every caller.
This commit is contained in:
parent
2aefad5df7
commit
3bd3e57a9b
@ -541,8 +541,11 @@ int tcp_drain(int fd)
|
||||
#endif
|
||||
len = recv(fd, trash.str, trash.size, MSG_DONTWAIT | MSG_NOSIGNAL);
|
||||
|
||||
if (len == 0) /* cool, shutdown received */
|
||||
if (len == 0) {
|
||||
/* cool, shutdown received */
|
||||
fdtab[fd].linger_risk = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (len < 0) {
|
||||
if (errno == EAGAIN) /* connection not closed yet */
|
||||
@ -550,6 +553,7 @@ int tcp_drain(int fd)
|
||||
if (errno == EINTR) /* oops, try again */
|
||||
continue;
|
||||
/* other errors indicate a dead connection, fine. */
|
||||
fdtab[fd].linger_risk = 0;
|
||||
return 1;
|
||||
}
|
||||
/* OK we read some data, let's try again once */
|
||||
@ -635,7 +639,7 @@ int tcp_connect_probe(struct connection *conn)
|
||||
/* Write error on the file descriptor. Report it to the connection
|
||||
* and disable polling on this FD.
|
||||
*/
|
||||
|
||||
fdtab[fd].linger_risk = 0;
|
||||
conn->flags |= CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_SOCK_WR_SH;
|
||||
__conn_sock_stop_both(conn);
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user