mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 06:11:32 +02:00
MINOR: h2: send RST_STREAM before GOAWAY on reject
Apparently the h2c client has trouble reading the RST_STREAM frame after a GOAWAY was sent, so it's likely that other clients may face the same difficulty. Curl and Firefox don't care about this ordering, so let's send it first.
This commit is contained in:
parent
53275e8b02
commit
90c3232e54
15
src/mux_h2.c
15
src/mux_h2.c
@ -2335,14 +2335,15 @@ static void h2_shutr(struct conn_stream *cs, enum cs_shr_mode mode)
|
||||
* used to kill the connection ASAP (eg: limit abuse). In this
|
||||
* case we send a goaway to close the connection.
|
||||
*/
|
||||
if (!(h2s->flags & H2_SF_RST_SENT) &&
|
||||
h2s_send_rst_stream(h2s->h2c, h2s) <= 0)
|
||||
return;
|
||||
|
||||
if (!(h2s->flags & H2_SF_OUTGOING_DATA) &&
|
||||
!(h2s->h2c->flags & (H2_CF_GOAWAY_SENT|H2_CF_GOAWAY_FAILED)) &&
|
||||
h2c_send_goaway_error(h2s->h2c, h2s) <= 0)
|
||||
return;
|
||||
|
||||
if (h2s_send_rst_stream(h2s->h2c, h2s) <= 0)
|
||||
return;
|
||||
|
||||
if (h2s->h2c->mbuf->o && !(cs->conn->flags & CO_FL_XPRT_WR_ENA))
|
||||
conn_xprt_want_send(cs->conn);
|
||||
|
||||
@ -2373,15 +2374,15 @@ static void h2_shutw(struct conn_stream *cs, enum cs_shw_mode mode)
|
||||
* used to kill the connection ASAP (eg: limit abuse). In this
|
||||
* case we send a goaway to close the connection.
|
||||
*/
|
||||
if (!(h2s->flags & H2_SF_RST_SENT) &&
|
||||
h2s_send_rst_stream(h2s->h2c, h2s) <= 0)
|
||||
return;
|
||||
|
||||
if (!(h2s->flags & H2_SF_OUTGOING_DATA) &&
|
||||
!(h2s->h2c->flags & (H2_CF_GOAWAY_SENT|H2_CF_GOAWAY_FAILED)) &&
|
||||
h2c_send_goaway_error(h2s->h2c, h2s) <= 0)
|
||||
return;
|
||||
|
||||
if (!(h2s->flags & H2_SF_RST_SENT) &&
|
||||
h2s_send_rst_stream(h2s->h2c, h2s) <= 0)
|
||||
return;
|
||||
|
||||
h2s->st = H2_SS_CLOSED;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user