From: Stefan Eissing Date: Tue, 26 May 2026 07:42:30 +0000 (+0000) Subject: *) mod_http2: update to version 2.0.40 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=0029bba2a457f0e15cd5fef7c1ae9fbb8e54d55c;p=thirdparty%2Fapache%2Fhttpd.git *) mod_http2: update to version 2.0.40 Fix error handling on upload requests when server runs out of file handles that left beam bucket callbacks in place, potentially using no longer valid references. Only applies on platforms with pipes and file descriptor limits not healthy for a network server. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1934628 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/changes-entries/h2_v2.0.40.txt b/changes-entries/h2_v2.0.40.txt new file mode 100644 index 0000000000..d8c7718da0 --- /dev/null +++ b/changes-entries/h2_v2.0.40.txt @@ -0,0 +1,6 @@ + *) mod_http2: update to version 2.0.40 + Fix error handling on upload requests when server runs out of file + handles that left beam bucket callbacks in place, potentially using + no longer valid references. Only applies on platforms with pipes + and file descriptor limits not healthy for a network server. + [Stefan Eissing] diff --git a/modules/http2/h2_mplx.c b/modules/http2/h2_mplx.c index 8053f60c9a..c50e15ccd5 100644 --- a/modules/http2/h2_mplx.c +++ b/modules/http2/h2_mplx.c @@ -880,9 +880,6 @@ static apr_status_t c2_setup_io(h2_mplx *m, conn_rec *c2, h2_stream *stream, h2_ memset(&conn_ctx->pipe_in, 0, sizeof(conn_ctx->pipe_in)); if (stream->input) { conn_ctx->beam_in = stream->input; - h2_beam_on_send(stream->input, c2_beam_input_write_notify, c2); - h2_beam_on_received(stream->input, c2_beam_input_read_notify, c2); - h2_beam_on_consumed(stream->input, c1_input_consumed, stream); #if H2_USE_PIPES action = "create input write pipe"; rv = apr_file_pipe_create_pools(&conn_ctx->pipe_in[H2_PIPE_OUT], @@ -891,6 +888,9 @@ static apr_status_t c2_setup_io(h2_mplx *m, conn_rec *c2, h2_stream *stream, h2_ c2->pool, c2->pool); if (APR_SUCCESS != rv) goto cleanup; #endif + h2_beam_on_send(stream->input, c2_beam_input_write_notify, c2); + h2_beam_on_received(stream->input, c2_beam_input_read_notify, c2); + h2_beam_on_consumed(stream->input, c1_input_consumed, stream); h2_beam_on_eagain(stream->input, c2_beam_input_read_eagain, c2); if (!h2_beam_empty(stream->input)) c2_beam_input_write_notify(c2, stream->input); diff --git a/modules/http2/h2_version.h b/modules/http2/h2_version.h index 077e778e12..1d7113f58b 100644 --- a/modules/http2/h2_version.h +++ b/modules/http2/h2_version.h @@ -27,7 +27,7 @@ * @macro * Version number of the http2 module as c string */ -#define MOD_HTTP2_VERSION "2.0.39" +#define MOD_HTTP2_VERSION "2.0.40" /** * @macro @@ -35,7 +35,7 @@ * release. This is a 24 bit number with 8 bits for major number, 8 bits * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203. */ -#define MOD_HTTP2_VERSION_NUM 0x020027 +#define MOD_HTTP2_VERSION_NUM 0x020028 #endif /* mod_h2_h2_version_h */