Loading STATUS +0 −4 Original line number Diff line number Diff line Loading @@ -117,10 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] *) Follow up on check_headers() (r1773995) to restore EOC semantic. trunk patch: http://svn.apache.org/r1774286 2.4.x patch: trunk works +1: ylavic, rpluem, jim PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] Loading modules/http/http_filters.c +10 −18 Original line number Diff line number Diff line Loading @@ -744,14 +744,11 @@ static APR_INLINE int check_headers(request_rec *r) static int check_headers_recursion(request_rec *r) { request_rec *rr; for (rr = r; rr; rr = rr->prev) { void *dying = NULL; apr_pool_userdata_get(&dying, "check_headers_recursion", rr->pool); if (dying) { void *check = NULL; apr_pool_userdata_get(&check, "check_headers_recursion", r->pool); if (check) { return 1; } } apr_pool_userdata_setn("true", "check_headers_recursion", NULL, r->pool); return 0; } Loading Loading @@ -1262,7 +1259,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, header_filter_ctx *ctx = f->ctx; const char *ctype; ap_bucket_error *eb = NULL; int eos = 0; apr_bucket *eos = NULL; AP_DEBUG_ASSERT(!r->main); Loading @@ -1283,13 +1280,6 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, e != APR_BRIGADE_SENTINEL(b); e = APR_BUCKET_NEXT(e)) { if (ctx->headers_error) { if (APR_BUCKET_IS_EOS(e)) { eos = 1; break; } continue; } if (AP_BUCKET_IS_ERROR(e) && !eb) { eb = e->data; continue; Loading @@ -1302,6 +1292,9 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, ap_remove_output_filter(f); return ap_pass_brigade(f->next, b); } if (ctx->headers_error && APR_BUCKET_IS_EOS(e)) { eos = e; } } if (ctx->headers_error) { if (!eos) { Loading @@ -1327,10 +1320,9 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, ap_die(HTTP_INTERNAL_SERVER_ERROR, r); return AP_FILTER_ERROR; } AP_DEBUG_ASSERT(APR_BUCKET_IS_EOS(e)); APR_BUCKET_REMOVE(e); APR_BUCKET_REMOVE(eos); apr_brigade_cleanup(b); APR_BRIGADE_INSERT_TAIL(b, e); APR_BRIGADE_INSERT_TAIL(b, eos); r->status = HTTP_INTERNAL_SERVER_ERROR; r->content_type = r->content_encoding = NULL; r->content_languages = NULL; Loading Loading
STATUS +0 −4 Original line number Diff line number Diff line Loading @@ -117,10 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] *) Follow up on check_headers() (r1773995) to restore EOC semantic. trunk patch: http://svn.apache.org/r1774286 2.4.x patch: trunk works +1: ylavic, rpluem, jim PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] Loading
modules/http/http_filters.c +10 −18 Original line number Diff line number Diff line Loading @@ -744,14 +744,11 @@ static APR_INLINE int check_headers(request_rec *r) static int check_headers_recursion(request_rec *r) { request_rec *rr; for (rr = r; rr; rr = rr->prev) { void *dying = NULL; apr_pool_userdata_get(&dying, "check_headers_recursion", rr->pool); if (dying) { void *check = NULL; apr_pool_userdata_get(&check, "check_headers_recursion", r->pool); if (check) { return 1; } } apr_pool_userdata_setn("true", "check_headers_recursion", NULL, r->pool); return 0; } Loading Loading @@ -1262,7 +1259,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, header_filter_ctx *ctx = f->ctx; const char *ctype; ap_bucket_error *eb = NULL; int eos = 0; apr_bucket *eos = NULL; AP_DEBUG_ASSERT(!r->main); Loading @@ -1283,13 +1280,6 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, e != APR_BRIGADE_SENTINEL(b); e = APR_BUCKET_NEXT(e)) { if (ctx->headers_error) { if (APR_BUCKET_IS_EOS(e)) { eos = 1; break; } continue; } if (AP_BUCKET_IS_ERROR(e) && !eb) { eb = e->data; continue; Loading @@ -1302,6 +1292,9 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, ap_remove_output_filter(f); return ap_pass_brigade(f->next, b); } if (ctx->headers_error && APR_BUCKET_IS_EOS(e)) { eos = e; } } if (ctx->headers_error) { if (!eos) { Loading @@ -1327,10 +1320,9 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, ap_die(HTTP_INTERNAL_SERVER_ERROR, r); return AP_FILTER_ERROR; } AP_DEBUG_ASSERT(APR_BUCKET_IS_EOS(e)); APR_BUCKET_REMOVE(e); APR_BUCKET_REMOVE(eos); apr_brigade_cleanup(b); APR_BRIGADE_INSERT_TAIL(b, e); APR_BRIGADE_INSERT_TAIL(b, eos); r->status = HTTP_INTERNAL_SERVER_ERROR; r->content_type = r->content_encoding = NULL; r->content_languages = NULL; Loading