mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-08 04:18:58 +00:00
BUG/MINOR: h2: try to abort closed streams as soon as possible
The purpose here is to be able to signal receipt of RST_STREAM to streams when they start to provide a response so that the response can be aborted ASAP. Given that RST_STREAM immediately switches the stream to the CLOSED state, we must check for CLOSED in addition to the existing ERROR check. To be backported to 1.8.
This commit is contained in:
parent
11cc2d6031
commit
9470d2cd35
@ -3066,7 +3066,7 @@ static int h2_snd_buf(struct conn_stream *cs, struct buffer *buf, int flags)
|
||||
if (h2s->res.state < HTTP_MSG_BODY) {
|
||||
total += h2s_frt_make_resp_headers(h2s, buf);
|
||||
|
||||
if (h2s->st == H2_SS_ERROR)
|
||||
if (h2s->st >= H2_SS_ERROR)
|
||||
break;
|
||||
|
||||
if (h2s->flags & H2_SF_BLK_ANY)
|
||||
@ -3075,7 +3075,7 @@ static int h2_snd_buf(struct conn_stream *cs, struct buffer *buf, int flags)
|
||||
else if (h2s->res.state < HTTP_MSG_TRAILERS) {
|
||||
total += h2s_frt_make_resp_data(h2s, buf);
|
||||
|
||||
if (h2s->st == H2_SS_ERROR)
|
||||
if (h2s->st >= H2_SS_ERROR)
|
||||
break;
|
||||
|
||||
if (h2s->flags & H2_SF_BLK_ANY)
|
||||
@ -3102,7 +3102,7 @@ static int h2_snd_buf(struct conn_stream *cs, struct buffer *buf, int flags)
|
||||
}
|
||||
|
||||
/* RST are sent similarly to frame acks */
|
||||
if (h2s->st == H2_SS_ERROR) {
|
||||
if (h2s->st >= H2_SS_ERROR) {
|
||||
cs->flags |= CS_FL_ERROR;
|
||||
if (h2s_send_rst_stream(h2s->h2c, h2s) > 0)
|
||||
h2s->st = H2_SS_CLOSED;
|
||||
|
Loading…
Reference in New Issue
Block a user