mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-18 23:06:06 -05:00
- Fix http2 drop handling to clear the postpone_drop state so that
Some checks failed
ci / build (push) Has been cancelled
Some checks failed
ci / build (push) Has been cancelled
other streams on the http2 session are not affected by a drop, and can clean up properly if also dropped. Fix http2 send reply so that when there is a send failure is does not recurse into the mesh functions and also does not drop the connection due to the condition of one stream.
This commit is contained in:
parent
b858801feb
commit
c0522043f0
3 changed files with 9 additions and 3 deletions
|
|
@ -1,3 +1,11 @@
|
||||||
|
3 December 2025: Wouter
|
||||||
|
- Fix http2 drop handling to clear the postpone_drop state so that
|
||||||
|
other streams on the http2 session are not affected by a drop,
|
||||||
|
and can clean up properly if also dropped. Fix http2 send reply
|
||||||
|
so that when there is a send failure is does not recurse into
|
||||||
|
the mesh functions and also does not drop the connection due to
|
||||||
|
the condition of one stream.
|
||||||
|
|
||||||
2 December 2025: Wouter
|
2 December 2025: Wouter
|
||||||
- Fix to remove http2 stream mesh state when mesh new request is
|
- Fix to remove http2 stream mesh state when mesh new request is
|
||||||
dropping the new request.
|
dropping the new request.
|
||||||
|
|
|
||||||
|
|
@ -2884,6 +2884,7 @@ submit_http_error:
|
||||||
sldns_buffer_flip(h2_stream->qbuffer);
|
sldns_buffer_flip(h2_stream->qbuffer);
|
||||||
h2_session->postpone_drop = 1;
|
h2_session->postpone_drop = 1;
|
||||||
query_read_done = http2_query_read_done(h2_session, h2_stream);
|
query_read_done = http2_query_read_done(h2_session, h2_stream);
|
||||||
|
h2_session->postpone_drop = 0;
|
||||||
if(query_read_done < 0)
|
if(query_read_done < 0)
|
||||||
return NGHTTP2_ERR_CALLBACK_FAILURE;
|
return NGHTTP2_ERR_CALLBACK_FAILURE;
|
||||||
else if(!query_read_done) {
|
else if(!query_read_done) {
|
||||||
|
|
@ -2893,11 +2894,9 @@ submit_http_error:
|
||||||
* failure will result in reclaiming (and closing)
|
* failure will result in reclaiming (and closing)
|
||||||
* of comm point. */
|
* of comm point. */
|
||||||
verbose(VERB_QUERY, "http2 query dropped in worker cb");
|
verbose(VERB_QUERY, "http2 query dropped in worker cb");
|
||||||
h2_session->postpone_drop = 0;
|
|
||||||
return NGHTTP2_ERR_CALLBACK_FAILURE;
|
return NGHTTP2_ERR_CALLBACK_FAILURE;
|
||||||
}
|
}
|
||||||
/* nothing to submit right now, query added to mesh. */
|
/* nothing to submit right now, query added to mesh. */
|
||||||
h2_session->postpone_drop = 0;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if(!http2_submit_dns_response(h2_session)) {
|
if(!http2_submit_dns_response(h2_session)) {
|
||||||
|
|
|
||||||
|
|
@ -6728,7 +6728,6 @@ comm_point_send_reply(struct comm_reply *repinfo)
|
||||||
tcp_req_info_send_reply(repinfo->c->tcp_req_info);
|
tcp_req_info_send_reply(repinfo->c->tcp_req_info);
|
||||||
} else if(repinfo->c->use_h2) {
|
} else if(repinfo->c->use_h2) {
|
||||||
if(!http2_submit_dns_response(repinfo->c->h2_session)) {
|
if(!http2_submit_dns_response(repinfo->c->h2_session)) {
|
||||||
comm_point_drop_reply(repinfo);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
repinfo->c->h2_stream = NULL;
|
repinfo->c->h2_stream = NULL;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue