mirror of
https://github.com/haproxy/haproxy.git
synced 2026-03-03 05:40:24 -05:00
BUG/MEDIUM: mux-h2: make sure to always report pending errors to the stream
Some stream parsing errors that do not affect the connection result in the parsed block not being transferred from the rx buffer to the channel and not being reported upstream in rcv_buf(), causing the stconn to time out. Let's detect this condition, and propagate term flags anyway since no more progress will be made otherwise. This should be backported at least till 3.2, probably even 2.8.
This commit is contained in:
parent
e67e36c9eb
commit
44932b6c41
1 changed files with 6 additions and 0 deletions
|
|
@ -7884,7 +7884,13 @@ static size_t h2_rcv_buf(struct stconn *sc, struct buffer *buf, size_t count, in
|
|||
|
||||
/* tell the stream layer whether there are data left or not */
|
||||
if (h2s_rxbuf_cnt(h2s)) {
|
||||
/* Note that parsing errors can also arrive here, we may need
|
||||
* to propagate errors upstream otherwise no new activity will
|
||||
* unblock them.
|
||||
*/
|
||||
se_fl_set(h2s->sd, SE_FL_RCV_MORE | SE_FL_WANT_ROOM);
|
||||
if (h2s_htx && h2s_htx->flags & HTX_FL_PARSING_ERROR)
|
||||
h2s_propagate_term_flags(h2c, h2s);
|
||||
BUG_ON_HOT(!buf->data);
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
Loading…
Reference in a new issue