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.
diff --git a/src/mux_h2.c b/src/mux_h2.c
index 733687e..0c2fcde 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -3066,7 +3066,7 @@
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 @@
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 @@
}
/* 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;