From: Stefan Eissing Date: Sun, 5 Mar 2023 09:42:53 +0000 (+0000) Subject: *) mod_htt2: recent small improvements from the github/icing/mod_h2 X-Git-Tag: 2.5.0-alpha2-ci-test-only~80 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3607972c842eb2945f61f89259a9e4cd416a24d;p=thirdparty%2Fapache%2Fhttpd.git *) mod_htt2: recent small improvements from the github/icing/mod_h2 - conditional use of ap_thread* to allow compilation on older versions - fixed checks on CONNECT requests git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1908079 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/http2/h2_mplx.c b/modules/http2/h2_mplx.c index 99c47ea8ef9..d23f0b5f336 100644 --- a/modules/http2/h2_mplx.c +++ b/modules/http2/h2_mplx.c @@ -653,8 +653,10 @@ static apr_status_t c1_process_stream(h2_mplx *m, if (APLOGctrace1(m->c1)) { const h2_request *r = stream->request; ap_log_cerror(APLOG_MARK, APLOG_TRACE1, 0, m->c1, - H2_STRM_MSG(stream, "process %s %s://%s%s"), - r->method, r->scheme, r->authority, r->path); + H2_STRM_MSG(stream, "process %s %s%s%s%s"), + r->method, r->scheme? r->scheme : "", + r->scheme? "://" : "", + r->authority, r->path? r->path: ""); } stream->scheduled = 1; diff --git a/modules/http2/h2_request.c b/modules/http2/h2_request.c index bddbad5180d..4e60dbe0cb4 100644 --- a/modules/http2/h2_request.c +++ b/modules/http2/h2_request.c @@ -381,6 +381,11 @@ request_rec *h2_create_request_rec(const h2_request *req, conn_rec *c, r->the_request = apr_psprintf(r->pool, "%s %s HTTP/2.0", req->method, req->path); } + else if (!apr_strnatcasecmp("CONNECT", req->method)) { + /* CONNECT MUST NOT have scheme or path */ + r->the_request = apr_psprintf(r->pool, "%s %s HTTP/2.0", + req->method, req->authority); + } else { /* We should only come here on a request that is errored already. * create a request line that passes parsing, we'll die anyway. diff --git a/modules/http2/h2_workers.c b/modules/http2/h2_workers.c index e7e2039b90a..192dbc04f8a 100644 --- a/modules/http2/h2_workers.c +++ b/modules/http2/h2_workers.c @@ -131,8 +131,13 @@ static apr_status_t activate_slot(h2_workers *workers) apr_pool_tag(pool, "h2_worker_slot"); slot->pool = pool; +#if defined(AP_HAS_THREAD_LOCAL) rv = ap_thread_create(&slot->thread, workers->thread_attr, slot_run, slot, slot->pool); +#else + rv = apr_thread_create(&slot->thread, workers->thread_attr, + slot_run, slot, slot->pool); +#endif cleanup: if (rv != APR_SUCCESS) {