From 7d9292f971eaa74e5b0532370fd3844dd1e7ec0f Mon Sep 17 00:00:00 2001 From: Jeff Trawick Date: Thu, 7 Jun 2001 03:02:03 +0000 Subject: [PATCH] back out bogus "fix" for subrequest buckets using wrong pool Submitted by: Greg Stein git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89286 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 5 ----- server/request.c | 33 --------------------------------- 2 files changed, 38 deletions(-) diff --git a/CHANGES b/CHANGES index af50a88611..bf148b6af1 100644 --- a/CHANGES +++ b/CHANGES @@ -1,10 +1,5 @@ Changes with Apache 2.0.19-dev - *) Fix a problem with subrequest buckets having private data in the - wrong (i.e., subrequest) pool. This could lead to a segfault - later after the subrequest pool is cleaned up. - [Ryan Bloom, Jeff Trawick] - *) Add a new request hook, error_log. This phase allows modules to act on the error log string _after_ it has been written to the error log. The goal for this hook is to allow monitoring diff --git a/server/request.c b/server/request.c index dc222fb4a6..4e2e1edbc5 100644 --- a/server/request.c +++ b/server/request.c @@ -808,40 +808,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_sub_req_output_filter(ap_filter_t *f, apr_bucket *e = APR_BRIGADE_LAST(bb); if (APR_BUCKET_IS_EOS(e)) { - apr_bucket_brigade *tmpbb; - apr_bucket_delete(e); - - if (!APR_BRIGADE_EMPTY(bb)) { /* avoid brigade create/destroy */ - - /* We need to be certain that any data in a bucket is valid - * after the subrequest pool is cleared. - */ - tmpbb = apr_brigade_create(f->r->main->pool); - - APR_BRIGADE_FOREACH(e, bb) { - const char *str; - apr_size_t n; - apr_status_t rv; - - rv = apr_bucket_read(e, &str, &n, APR_BLOCK_READ); - /* XXX handle rv! */ - - /* This apr_brigade_write does not use a flush function - because we assume that we will not write enough data - into it to cause a flush. However, if we *do* write - "too much", then we could end up with transient - buckets which would suck. This works for now, but is - a bit shaky if changes are made to some of the - buffering sizes. Let's do an assert to prevent - potential future problems... */ - AP_DEBUG_ASSERT(AP_MIN_BYTES_TO_WRITE <= - APR_BUCKET_BUFF_SIZE); - apr_brigade_write(tmpbb, NULL, NULL, str, n); - } - apr_brigade_destroy(bb); - bb = tmpbb; - } } return ap_pass_brigade(f->next, bb); } -- 2.50.1