On Thu, May 30, 2002 at 11:02:09AM -0400, Jeff Trawick wrote: > Running HEAD, we get a segfault when the bogus request is for a > resource for which we aren't authorized. Here is the traceback:
In particular, this problem is related to the fact that we have two errors on this request: 401 and 413. The problem is that since 401 was reported "first," the 413 is "lost" in ap_die() when we find the recursive error (http_request.c:122) and we reset r->status to 401. However, 401 isn't listed as a status code that drops the connection (line 146). Therefore, ap_die() calls ap_discard_request_body again - which causes HTTP_IN to get called again. But, since we are 413, we're not supposed to re-read the body. Oops. My suggestion is as follows: if the ap_die() code is one that forces us to drop the connection, we don't report the recursive error, but instead just report this one. So the conditional on http_request.c:121 may work as: if (r->status != HTTP_OK && !ap_status_drops_connection(type)) { Can you try this? -- justin