BUG/MINOR: mux-h1: Properly handle http-request and http-keep-alive timeouts
It is now the turn for the H1 mux to be fix to properly handle http-request and http-keep-alive timeouts. It is quite surprising but it is broken since the 2.2. For idle connections on client side, the smallest value between the client timeout and the http-request/http-keep-alive timeout is used while the client timeout should only be used if other ones are not defined. So, if the client timeout is the smallest value, the keep-alive timeout is not respected. It is only an issue for idle client connections. The http-request timeout is respected from the moment part of the next request was received. This patch should fix the issue #2334. It must be backported as far as 2.2. But be careful during the backports. The H1 mux had evolved a lot since the 2.2.
This commit is contained in:
parent
8dae361f35
commit
2c9c2f9d77
@ -573,6 +573,12 @@ static void h1_refresh_timeout(struct h1c *h1c)
|
||||
h1c->task->expire = tick_add(now_ms, h1c->timeout);
|
||||
TRACE_DEVEL("refreshing connection's timeout (pending outgoing data)", H1_EV_H1C_SEND|H1_EV_H1C_RECV, h1c->conn);
|
||||
}
|
||||
else if (!(h1c->flags & H1C_F_IS_BACK) && (h1c->state == H1_CS_IDLE)) {
|
||||
/* idle front connections. */
|
||||
h1c->task->expire = (tick_isset(h1c->idle_exp) ? h1c->idle_exp : tick_add(now_ms, h1c->timeout));
|
||||
TRACE_DEVEL("refreshing connection's timeout (idle front h1c)", H1_EV_H1C_SEND|H1_EV_H1C_RECV, h1c->conn);
|
||||
is_idle_conn = 1;
|
||||
}
|
||||
else if (!(h1c->flags & H1C_F_IS_BACK) && (h1c->state != H1_CS_RUNNING)) {
|
||||
/* alive front connections waiting for a fully usable stream need a timeout. */
|
||||
h1c->task->expire = tick_add(now_ms, h1c->timeout);
|
||||
|
Loading…
x
Reference in New Issue
Block a user