From: Jim Jagielski Date: Thu, 13 Jun 2019 11:08:29 +0000 (+0000) Subject: Merge r1860260 from trunk: X-Git-Tag: 2.4.40~96 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c0d53cd519fe75a35449be186f4b6eb570d558c;p=thirdparty%2Fapache%2Fhttpd.git Merge r1860260 from trunk: * modules/http2: more copying of data to disentangle worker processing from main connection Submitted by: icing Reviewed by: icing, covener, jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1861247 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/STATUS b/STATUS index 8db2e26ed92..0d9f873a9bb 100644 --- a/STATUS +++ b/STATUS @@ -135,11 +135,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK: 2.4.x patch: svn merge -c 1707084,1707093,1707159,1707362 ^/httpd/httpd/trunk . +1: icing, covener, jim - *) mod_http2: more copying of data to disentangle worker processing from main connection - trunk patch: http://svn.apache.org/r1860260 - 2.4.x patch: svn merge -c 1860260 ^/httpd/httpd/trunk . - +1: icing, covener, jim - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/http2/h2_headers.c b/modules/http2/h2_headers.c index fe6ba790f44..1ef89d9f73a 100644 --- a/modules/http2/h2_headers.c +++ b/modules/http2/h2_headers.c @@ -102,8 +102,9 @@ apr_bucket *h2_bucket_headers_beam(struct h2_bucket_beam *beam, const apr_bucket *src) { if (H2_BUCKET_IS_HEADERS(src)) { - h2_headers *r = ((h2_bucket_headers *)src->data)->headers; - apr_bucket *b = h2_bucket_headers_create(dest->bucket_alloc, r); + h2_headers *src_headers = ((h2_bucket_headers *)src->data)->headers; + apr_bucket *b = h2_bucket_headers_create(dest->bucket_alloc, + h2_headers_clone(dest->p, src_headers)); APR_BRIGADE_INSERT_TAIL(dest, b); return b; } @@ -156,7 +157,14 @@ h2_headers *h2_headers_rcreate(request_rec *r, int status, h2_headers *h2_headers_copy(apr_pool_t *pool, h2_headers *h) { - return h2_headers_create(h->status, h->headers, h->notes, h->raw_bytes, pool); + return h2_headers_create(h->status, apr_table_copy(pool, h->headers), + apr_table_copy(pool, h->notes), h->raw_bytes, pool); +} + +h2_headers *h2_headers_clone(apr_pool_t *pool, h2_headers *h) +{ + return h2_headers_create(h->status, apr_table_clone(pool, h->headers), + apr_table_clone(pool, h->notes), h->raw_bytes, pool); } h2_headers *h2_headers_die(apr_status_t type, diff --git a/modules/http2/h2_headers.h b/modules/http2/h2_headers.h index 840e8c43332..b7d95a11be7 100644 --- a/modules/http2/h2_headers.h +++ b/modules/http2/h2_headers.h @@ -59,11 +59,17 @@ h2_headers *h2_headers_rcreate(request_rec *r, int status, apr_table_t *header, apr_pool_t *pool); /** - * Clone the headers into another pool. This will not copy any + * Copy the headers into another pool. This will not copy any * header strings. */ h2_headers *h2_headers_copy(apr_pool_t *pool, h2_headers *h); +/** + * Clone the headers into another pool. This will also clone any + * header strings. + */ +h2_headers *h2_headers_clone(apr_pool_t *pool, h2_headers *h); + /** * Create the headers for the given error. * @param stream_id id of the stream to create the headers for diff --git a/modules/http2/h2_session.c b/modules/http2/h2_session.c index 0bd84435ec6..e9430e9a2d3 100644 --- a/modules/http2/h2_session.c +++ b/modules/http2/h2_session.c @@ -1977,6 +1977,7 @@ static void on_stream_state_enter(void *ctx, h2_stream *stream) ev_stream_closed(session, stream); break; case H2_SS_CLEANUP: + nghttp2_session_set_stream_user_data(session->ngh2, stream->id, NULL); h2_mplx_stream_cleanup(session->mplx, stream); break; default: diff --git a/modules/http2/h2_version.h b/modules/http2/h2_version.h index bfaae831e78..52cf88b5e62 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 "1.14.1" +#define MOD_HTTP2_VERSION "1.15.1" /** * @macro @@ -35,6 +35,6 @@ * 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 0x010e01 +#define MOD_HTTP2_VERSION_NUM 0x010f01 #endif /* mod_h2_h2_version_h */