Commit ec6a1e1d authored by Dridi Boukelmoune's avatar Dridi Boukelmoune Committed by Simon Stridsberg

http2_proto: Introduce a custom BROKE_WINDOW error

Conflicts:
	bin/varnishd/http2/cache_http2_send.c
	include/tbl/h2_error.h
parent ee7930ed
...@@ -1328,7 +1328,7 @@ h2_stream_tmo(struct h2_sess *h2, const struct h2_req *r2, vtim_real now) ...@@ -1328,7 +1328,7 @@ h2_stream_tmo(struct h2_sess *h2, const struct h2_req *r2, vtim_real now)
VSLb(h2->vsl, SLT_Debug, VSLb(h2->vsl, SLT_Debug,
"H2: stream %u: Hit idle_send_timeout waiting for" "H2: stream %u: Hit idle_send_timeout waiting for"
" WINDOW_UPDATE", r2->stream); " WINDOW_UPDATE", r2->stream);
h2e = H2SE_CANCEL; h2e = H2SE_BROKE_WINDOW;
} }
if (h2e == NULL && r2->t_send != 0 && if (h2e == NULL && r2->t_send != 0 &&
......
...@@ -412,12 +412,14 @@ H2_Send(struct worker *wrk, struct h2_req *r2, h2_frame ftyp, uint8_t flags, ...@@ -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) uint32_t len, const void *ptr, uint64_t *counter)
{ {
uint64_t dummy_counter; uint64_t dummy_counter;
h2_error h2e;
if (counter == NULL) if (counter == NULL)
counter = &dummy_counter; counter = &dummy_counter;
h2_send(wrk, r2, ftyp, flags, len, ptr, counter); h2_send(wrk, r2, ftyp, flags, len, ptr, counter);
if (h2_errcheck(r2, r2->h2sess) == H2SE_CANCEL) h2e = h2_errcheck(r2, r2->h2sess);
H2_Send_RST(wrk, r2->h2sess, r2, r2->stream, H2SE_CANCEL); if (h2e != NULL && h2e->val == H2SE_CANCEL->val)
H2_Send_RST(wrk, r2->h2sess, r2, r2->stream, h2e);
} }
...@@ -154,6 +154,13 @@ H2_ERROR( ...@@ -154,6 +154,13 @@ H2_ERROR(
/* descr */ "http/2 rapid reset detected" /* 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 # undef H2_CUSTOM_ERRORS
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment