mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 15:17:01 +02:00
[BUG] do not re-arm read timeout in SHUTR state !
There is a long-time bug causing busy loops when either client-side or server-side enters a SHUTR state. When writing data to the FD, it was possible to re-arm the read side if the write had been paused.
This commit is contained in:
parent
3c6fc07e18
commit
33014d0d8d
@ -2147,12 +2147,7 @@ int process_cli(struct session *t)
|
|||||||
/* buffer not empty */
|
/* buffer not empty */
|
||||||
if (EV_FD_COND_S(t->cli_fd, DIR_WR)) {
|
if (EV_FD_COND_S(t->cli_fd, DIR_WR)) {
|
||||||
/* restart writing */
|
/* restart writing */
|
||||||
if (tv_add_ifset(&rep->wex, &now, &t->fe->clitimeout)) {
|
if (!tv_add_ifset(&rep->wex, &now, &t->fe->clitimeout))
|
||||||
/* FIXME: to prevent the client from expiring read timeouts during writes,
|
|
||||||
* we refresh it. */
|
|
||||||
req->rex = rep->wex;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
tv_eternity(&rep->wex);
|
tv_eternity(&rep->wex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3183,12 +3178,7 @@ int process_srv(struct session *t)
|
|||||||
else { /* buffer not empty */
|
else { /* buffer not empty */
|
||||||
if (EV_FD_COND_S(t->srv_fd, DIR_WR)) {
|
if (EV_FD_COND_S(t->srv_fd, DIR_WR)) {
|
||||||
/* restart writing */
|
/* restart writing */
|
||||||
if (tv_add_ifset(&req->wex, &now, &t->be->srvtimeout)) {
|
if (!tv_add_ifset(&req->wex, &now, &t->be->srvtimeout))
|
||||||
/* FIXME: to prevent the server from expiring read timeouts during writes,
|
|
||||||
* we refresh it. */
|
|
||||||
rep->rex = req->wex;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
tv_eternity(&req->wex);
|
tv_eternity(&req->wex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user