mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-20 13:21:29 +02:00
BUG/MEDIUM: mux-h2: Report RST/error to app-layer stream during 0-copy fwding
In h2_nego_ff(), it is important to report reset and error to app-layer stream and to send the RST-STREAM frame accordingly. It is not clear if it is an issue or not. But it is clearly a difference with the classical forwarding via h2_snd_buf. And it is mandatory for the next fix. This patch should be backported to 3.2. But is is probably a good idea to not backport it on older versions, except if a bug is reported in this area.
This commit is contained in:
parent
3b7112aa1d
commit
22e14f7b54
10
src/mux_h2.c
10
src/mux_h2.c
@ -8122,6 +8122,16 @@ static size_t h2_nego_ff(struct stconn *sc, struct buffer *input, size_t count,
|
||||
end:
|
||||
if (h2s->sd->iobuf.flags & IOBUF_FL_FF_BLOCKED)
|
||||
h2s->flags &= ~H2_SF_NOTIFIED;
|
||||
|
||||
/* RST are sent similarly to frame acks */
|
||||
if (h2s->st == H2_SS_ERROR || h2s->flags & H2_SF_RST_RCVD) {
|
||||
TRACE_DEVEL("reporting RST/error to the app-layer stream", H2_EV_H2S_SEND|H2_EV_H2S_ERR|H2_EV_STRM_ERR, h2s->h2c->conn, h2s);
|
||||
se_fl_set_error(h2s->sd);
|
||||
se_report_term_evt(h2s->sd, se_tevt_type_snd_err);
|
||||
if (h2s_send_rst_stream(h2s->h2c, h2s) > 0)
|
||||
h2s_close(h2s);
|
||||
}
|
||||
|
||||
TRACE_LEAVE(H2_EV_H2S_SEND|H2_EV_STRM_SEND, h2s->h2c->conn, h2s);
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user