Changes with Apache 2.3.7
+ *) Proxy: get the headers right in a HEAD request with
+ ProxyErrorOverride, by checking for an overridden error
+ before not after going into a catch-all code path.
+ PR 41646.
+ Patch by Nick Kew, based on detailed analysis by Stuart Children.
+
*) support/rotatelogs: Support the simplest log rotation case, log
truncation. Useful when the log is being processed in real time
using a command like tail. [Graham Leggett]
e = apr_bucket_heap_create(buffer, cntr, NULL, c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, e);
}
+ /* PR 41646: get HEAD right with ProxyErrorOverride */
+ if (ap_is_HTTP_ERROR(r->status) && conf->error_override) {
+ /* clear r->status for override error, otherwise ErrorDocument
+ * thinks that this is a recursive error, and doesn't find the
+ * custom error page
+ */
+ r->status = HTTP_OK;
+ /* Discard body, if one is expected */
+ if (!r->header_only && /* not HEAD request */
+ (proxy_status != HTTP_NO_CONTENT) && /* not 204 */
+ (proxy_status != HTTP_NOT_MODIFIED)) { /* not 304 */
+ ap_discard_request_body(rp);
+ }
+ return proxy_status;
+ }
/* send body - but only if a body is expected */
if ((!r->header_only) && /* not HEAD request */
return DONE;
}
- if (conf->error_override) {
- /* the code above this checks for 'OK' which is what the hook expects */
- if (!ap_is_HTTP_ERROR(proxy_status)) {
- return OK;
- }
- else {
- /* clear r->status for override error, otherwise ErrorDocument
- * thinks that this is a recursive error, and doesn't find the
- * custom error page
- */
- r->status = HTTP_OK;
- /* Discard body, if one is expected */
- if (!r->header_only && /* not HEAD request */
- (proxy_status != HTTP_NO_CONTENT) && /* not 204 */
- (proxy_status != HTTP_NOT_MODIFIED)) { /* not 304 */
- ap_discard_request_body(rp);
- }
- return proxy_status;
- }
- }
- else {
- return OK;
- }
+ return OK;
}
static