Commit 18d0c933 authored by Justin Erenkrantz's avatar Justin Erenkrantz
Browse files

Fix bug where non-200 CGI responses will not send anything down filter chain.

This is most notable when mod_cache is used.  This has been used in production
on wiki.apache.org for a while now.

* modules/generators/mod_cgi.c
  (cgi_handler): When a non-zero value is returned by scan_script, set the
  status field and ensure that we have an EOS to send down the filer stack.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@231167 13f79535-47bb-0310-9956-ffa450edef68
parent f947cd7a
Loading
Loading
Loading
Loading
+12 −1
Changes for modules/generators/mod_cgi.c: 12 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -929,7 +929,18 @@ static int cgi_handler(request_rec *r)
        int ret;

        if ((ret = ap_scan_script_header_err_brigade(r, bb, sbuf))) {
            return log_script(r, conf, ret, dbuf, sbuf, bb, script_err);
            ret = log_script(r, conf, ret, dbuf, sbuf, bb, script_err);

            /* Set our status. */
            r->status = ret;

            /* Pass EOS bucket down the filter chain. */
            apr_brigade_cleanup(bb);
            b = apr_bucket_eos_create(c->bucket_alloc);
            APR_BRIGADE_INSERT_TAIL(bb, b);
            ap_pass_brigade(r->output_filters, bb);

            return ret;
        }

        location = apr_table_get(r->headers_out, "Location");