Commit c6ceb146 authored by Joe Orton's avatar Joe Orton
Browse files

* server/util_filter.c (ap_save_brigade): Handle an ENOTIMPL setaside

function correctly.

* modules/generators/mod_cgi.c (cgi_handler): Revert r1.169,
unnecessary CGI bucket lifetime kludge.

PR: 31247


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105297 13f79535-47bb-0310-9956-ffa450edef68
parent 5393f11b
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -905,10 +905,7 @@ static int cgi_handler(request_rec *r)
    apr_file_pipe_timeout_set(script_in, 0);
    apr_file_pipe_timeout_set(script_err, 0);
    
    /* if r is a subrequest, ensure that the bucket only references
     * r->main, since it may last longer than the subreq. */
    b = cgi_bucket_create(r->main ? r->main : r, script_in, script_err,
                          c->bucket_alloc);
    b = cgi_bucket_create(r, script_in, script_err, c->bucket_alloc);
#else
    b = apr_bucket_pipe_create(script_in, c->bucket_alloc);
#endif
+15 −4
Original line number Diff line number Diff line
@@ -546,10 +546,21 @@ AP_DECLARE(apr_status_t) ap_save_brigade(ap_filter_t *f,
         e = APR_BUCKET_NEXT(e))
    {
        rv = apr_bucket_setaside(e, p);
        if (rv != APR_SUCCESS
            /* ### this ENOTIMPL will go away once we implement setaside
               ### for all bucket types. */
            && rv != APR_ENOTIMPL) {

        /* If the bucket type does not implement setaside, then
         * (hopefully) morph it into a bucket type which does, and set
         * *that* aside... */
        if (rv == APR_ENOTIMPL) {
            const char *s;
            apr_size_t n;

            rv = apr_bucket_read(e, &s, &n, APR_BLOCK_READ);
            if (rv == APR_SUCCESS) {
                rv = apr_bucket_setaside(e, p);
            }
        }

        if (rv != APR_SUCCESS) {
            return rv;
        }
    }