On Fri, Jun 21, 2002 at 04:02:52PM -0400, Greg Ames wrote:
> Justin Erenkrantz wrote:
>
> > Only where ap_status_drops_connection is true. The problem before
> > was that if you got a 404 and then got a 413 on the discard, it
> > would revert the status to a 404 and then try to read the body as
> > part of the handlers in serving the error page.
> >
> > We simply can not do that - so the status can't be 404 when we get a
> > 413 - it must be a 413. When we are supposed to drop the connection,
> > r->status *must* indicate that.
>
> OK, let's turn that around. Suppose we got a 413 first and then a 404. Which
> one should we believe? And how should our canned error message read in both
> cases?
The 413. I don't believe we have to tell them that we screwed up in
getting a 404 to the error page (I dislike the whole recursive error
thing anyway). IMHO, it doesn't add anything of value.
> We ought to be able to display both in the correct order in our canned error
> message, no matter which happens first. And it sounds like if *either* status
> wants to drop the connection, we should avoid reading the body. Since ap_die
> now resets r->connection->keepalive anytime ap_status_drops_connection is true
> for the input status, I think this change to
> ap_discard_request_body would work:
>
> --- modules/http/http_protocol.c 19 Jun 2002 18:43:28 -0000 1.440
> +++ modules/http/http_protocol.c 21 Jun 2002 19:41:00 -0000
> @@ -1882,7 +1882,7 @@
> *
> * This function is also a no-op on a subrequest.
> */
> - if (r->main || ap_status_drops_connection(r->status)) {
> + if (r->main || !r->connection->keepalive) {
> return OK;
> }
Hmm. I'm not sure if I like that or not. What if ap_die isn't
involved and the status is set to drop the connection? Perhaps
we could just add the closing of the socket as another
condition? -- justin