On Sun, 27 May 2007 13:14:25 +0200
Ruediger Pluem <[EMAIL PROTECTED]> wrote:
> It breaks once the request is cached and mod_cache tries to
> revalidate the stale cached entity. I guess this was one of the
> reasons for r231167
Thanks - that looks like the background for it.
> + * BTW: We circumvent the error processing stack anyway
> if the
> + * CGI script set an explicit status code (whatever it
> is) and
> + * the only possible values for ret here are:
> + *
> + * HTTP_NOT_MODIFIED (set by
> ap_meets_conditions)
> + * HTTP_PRECONDITION_FAILED (set by
> ap_meets_conditions)
> + * HTTP_INTERNAL_SERVER_ERROR (if something went wrong
> during the
> + * processing of the response of the CGI script, e.g
> broken headers
This is the root of the issue. This use of ap_meets_conditions breaks
modularity. Maybe ap_meets_conditions inherently breaks modularity
and should be punted to ???? We had PR#38070 on a related issue.
> + * or a crashed CGI process).
> + */
> + if (ret == HTTP_NOT_MODIFIED) {
> + r->status = ret;
> + return OK;
> + }
> +
> + return ret;
+1 as a practical fix.
For the wishlist: review whether we can do this more cleanly by making
ap_meets_conditions set r->status instead of returning a value (as in,
declare it void and see what breaks:-)
--
Nick Kew
Application Development with Apache - the Apache Modules Book
http://www.apachetutor.org/