In conn_sock_shutw(), avoid calling shutdown() if linger_risk is set. Not
doing so will result in getting sockets in TIME_WAIT for some time.
This is particularly observable with health checks.
This should be backported to 1.9.
/* don't perform a clean shutdown if we're going to reset or
* if the shutr was already received.
*/
- if (conn_ctrl_ready(c) && !(c->flags & CO_FL_SOCK_RD_SH) && clean)
+ if (conn_ctrl_ready(c) && !(c->flags & CO_FL_SOCK_RD_SH) && clean &&
+ !fdtab[c->handle.fd].linger_risk)
shutdown(c->handle.fd, SHUT_WR);
}