Mailing List Archive

[7.3] 0ad5b82f4 http2_proto: Introduce a custom BROKE_WINDOW error
commit 0ad5b82f4d95f5859dec13f94f5e67e920c66d7b
Author: Dridi Boukelmoune <dridi.boukelmoune@gmail.com>
Date: Thu Nov 16 16:03:42 2023 +0100

http2_proto: Introduce a custom BROKE_WINDOW error

Conflicts:
include/tbl/h2_error.h

diff --git a/bin/varnishd/http2/cache_http2_proto.c b/bin/varnishd/http2/cache_http2_proto.c
index e11d056e1..c43711f01 100644
--- a/bin/varnishd/http2/cache_http2_proto.c
+++ b/bin/varnishd/http2/cache_http2_proto.c
@@ -1325,7 +1325,7 @@ h2_stream_tmo(struct h2_sess *h2, const struct h2_req *r2, vtim_real now)
VSLb(h2->vsl, SLT_Debug,
"H2: stream %u: Hit idle_send_timeout waiting for"
" WINDOW_UPDATE", r2->stream);
- h2e = H2SE_CANCEL;
+ h2e = H2SE_BROKE_WINDOW;
}

if (h2e == NULL && r2->t_send != 0 &&
diff --git a/bin/varnishd/http2/cache_http2_send.c b/bin/varnishd/http2/cache_http2_send.c
index 0aab8924c..a8d2d5b36 100644
--- a/bin/varnishd/http2/cache_http2_send.c
+++ b/bin/varnishd/http2/cache_http2_send.c
@@ -412,12 +412,14 @@ H2_Send(struct worker *wrk, struct h2_req *r2, h2_frame ftyp, uint8_t flags,
uint32_t len, const void *ptr, uint64_t *counter)
{
uint64_t dummy_counter = 0;
+ h2_error h2e;

if (counter == NULL)
counter = &dummy_counter;

h2_send(wrk, r2, ftyp, flags, len, ptr, counter);

- if (h2_errcheck(r2, r2->h2sess) == H2SE_CANCEL)
- H2_Send_RST(wrk, r2->h2sess, r2, r2->stream, H2SE_CANCEL);
+ h2e = h2_errcheck(r2, r2->h2sess);
+ if (h2e != NULL && h2e->val == H2SE_CANCEL->val)
+ H2_Send_RST(wrk, r2->h2sess, r2, r2->stream, h2e);
}
diff --git a/include/tbl/h2_error.h b/include/tbl/h2_error.h
index c6c6bed89..27260c797 100644
--- a/include/tbl/h2_error.h
+++ b/include/tbl/h2_error.h
@@ -156,6 +156,13 @@ H2_ERROR(
/* descr */ "http/2 rapid reset detected"
)

+H2_ERROR(
+ /* name */ BROKE_WINDOW,
+ /* val */ 8, /* CANCEL */
+ /* types */ 2,
+ /* reason */ SC_NULL,
+ /* descr */ "http/2 stream out of window credits"
+)
# undef H2_CUSTOM_ERRORS
#endif

_______________________________________________
varnish-commit mailing list
varnish-commit@varnish-cache.org
https://www.varnish-cache.org/lists/mailman/listinfo/varnish-commit