mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 15:47:01 +02:00
BUG/MEDIUM: mux-h1: Continue to process request when switching in tunnel mode
When input data are processed, if the request is switched in tunnel mode on a protocol upgrade, we must continue the processing. Otherwise, pending input data will only be processed on the next wakeup. So when new input data are received, on a timeout expiration or shutdown. Worst, if the input buffer is full when it happens, only a timeout or a shutdown will unblock the situation. This patch should fix the issue #737. It must be backported as far as 1.9. The bug does not seem to affect the 2.0 and 1.9 because, on a protocol upgrade, the request is switched in tunnel mode when the response is sent to the client. But the bug is present, so the backport remains necessary.
This commit is contained in:
parent
0f9ff14b17
commit
23021ad7f1
@ -1456,8 +1456,10 @@ static size_t h1_process_input(struct h1c *h1c, struct buffer *buf, size_t count
|
||||
else if (h1s->req.state < H1_MSG_DONE || h1s->res.state < H1_MSG_DONE) {
|
||||
h1c->flags |= H1C_F_IN_BUSY;
|
||||
TRACE_STATE("switch h1c in busy mode", H1_EV_RX_DATA|H1_EV_H1C_BLK, h1c->conn, h1s);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
else
|
||||
break;
|
||||
}
|
||||
else if (h1m->state == H1_MSG_TUNNEL) {
|
||||
TRACE_PROTO("parsing tunneled data", H1_EV_RX_DATA, h1c->conn, h1s);
|
||||
|
Loading…
Reference in New Issue
Block a user