Loading CHANGES +6 −0 Original line number Diff line number Diff line -*- coding: utf-8 -*- Changes with Apache 2.4.39 *) http: Fix possible empty response with mod_ratelimit for HEAD requests. PR 63192. [Yann Ylavic] *) MPMs unix: bind the bucket number of each child to its slot number, for a more efficient per bucket maintenance. [Yann Ylavic] *) mod_cache_socache: Avoid reallocations and be safe with outgoing data lifetime. [Yann Ylavic] *) mod_auth_digest: Fix a race condition. Authentication with valid credentials could be refused in case of concurrent accesses from different users. PR 63124. [Simon Kappel <simon.kappel axis.com>] Loading STATUS +0 −6 Original line number Diff line number Diff line Loading @@ -126,12 +126,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] *) http: Fix possible empty response with mod_ratelimit for HEAD requests. trunk patch: https://svn.apache.org/r1854004 2.4.x patch: svn merge -c 1854004 ^/httpd/httpd/trunk . +1: elukey, ylavic, icing ylavic: nice catch Luca, forgot about this one.. PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] Loading modules/http/http_filters.c +14 −6 Original line number Diff line number Diff line Loading @@ -1290,6 +1290,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, request_rec *r = f->r; conn_rec *c = r->connection; const char *clheader; int header_only = (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)); const char *protocol = NULL; apr_bucket *e; apr_bucket_brigade *b2; Loading @@ -1307,7 +1308,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, } else if (ctx->headers_sent) { /* Eat body if response must not have one. */ if (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)) { if (header_only) { /* Still next filters may be waiting for EOS, so pass it (alone) * when encountered and be done with this filter. */ Loading Loading @@ -1522,14 +1523,21 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, terminate_header(b2); rv = ap_pass_brigade(f->next, b2); if (rv != APR_SUCCESS) { goto out; if (header_only) { e = APR_BRIGADE_LAST(b); if (e != APR_BRIGADE_SENTINEL(b) && APR_BUCKET_IS_EOS(e)) { APR_BUCKET_REMOVE(e); APR_BRIGADE_INSERT_TAIL(b2, e); ap_remove_output_filter(f); } apr_brigade_cleanup(b); } rv = ap_pass_brigade(f->next, b2); apr_brigade_cleanup(b2); ctx->headers_sent = 1; if (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)) { apr_brigade_cleanup(b); if (rv != APR_SUCCESS || header_only) { goto out; } Loading Loading
CHANGES +6 −0 Original line number Diff line number Diff line -*- coding: utf-8 -*- Changes with Apache 2.4.39 *) http: Fix possible empty response with mod_ratelimit for HEAD requests. PR 63192. [Yann Ylavic] *) MPMs unix: bind the bucket number of each child to its slot number, for a more efficient per bucket maintenance. [Yann Ylavic] *) mod_cache_socache: Avoid reallocations and be safe with outgoing data lifetime. [Yann Ylavic] *) mod_auth_digest: Fix a race condition. Authentication with valid credentials could be refused in case of concurrent accesses from different users. PR 63124. [Simon Kappel <simon.kappel axis.com>] Loading
STATUS +0 −6 Original line number Diff line number Diff line Loading @@ -126,12 +126,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] *) http: Fix possible empty response with mod_ratelimit for HEAD requests. trunk patch: https://svn.apache.org/r1854004 2.4.x patch: svn merge -c 1854004 ^/httpd/httpd/trunk . +1: elukey, ylavic, icing ylavic: nice catch Luca, forgot about this one.. PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] Loading
modules/http/http_filters.c +14 −6 Original line number Diff line number Diff line Loading @@ -1290,6 +1290,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, request_rec *r = f->r; conn_rec *c = r->connection; const char *clheader; int header_only = (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)); const char *protocol = NULL; apr_bucket *e; apr_bucket_brigade *b2; Loading @@ -1307,7 +1308,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, } else if (ctx->headers_sent) { /* Eat body if response must not have one. */ if (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)) { if (header_only) { /* Still next filters may be waiting for EOS, so pass it (alone) * when encountered and be done with this filter. */ Loading Loading @@ -1522,14 +1523,21 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, terminate_header(b2); rv = ap_pass_brigade(f->next, b2); if (rv != APR_SUCCESS) { goto out; if (header_only) { e = APR_BRIGADE_LAST(b); if (e != APR_BRIGADE_SENTINEL(b) && APR_BUCKET_IS_EOS(e)) { APR_BUCKET_REMOVE(e); APR_BRIGADE_INSERT_TAIL(b2, e); ap_remove_output_filter(f); } apr_brigade_cleanup(b); } rv = ap_pass_brigade(f->next, b2); apr_brigade_cleanup(b2); ctx->headers_sent = 1; if (r->header_only || AP_STATUS_IS_HEADER_ONLY(r->status)) { apr_brigade_cleanup(b); if (rv != APR_SUCCESS || header_only) { goto out; } Loading