Example:
client uses HTTP/1.1 to POST a 2MB file, to be handled by a module...
module says no way and returns 413...
admin has "ErrorDocument 413 http://file_too_big.html"...
Apache sends back 302 with Location=http://file_too_big.html, but since this is HTTP/1.1, Apache then tries to read the next request and blows up (invalid method in request)...
Depending on browser, you may get something odd. Mozilla still is able to display the error document after fetching it with GET. IE in HTTP/1.1 mode displays a "Method Not Implemented" error message with "Invalid method in request" and the first part of the POST body as the method.
(I don't have standalone patch... this is an addition to a patch posted earlier)
@@ -1117,7 +1120,15 @@ * apache code, and continue with the usual REDIRECT handler. * But note that the client will ultimately see the wrong * status... + * + * Also, before updating r->status, we may need to ensure that + * the connection is dropped. For example, there may be + * unread request body that would confuse us if we try + * to read another request. */ + if (ap_status_drops_connection(r->status)) { + r->connection->keepalive = -1; + } r->status = REDIRECT; ap_table_setn(r->headers_out, "Location", custom_response); }