Fix processing
error_page 502 504 /zero;
location = /zero { return 204; }
The bug has been introduced in r3634.
The fix also allow to use:
error_page 502 504 = /zero;
location = /zero { return 200; }
This case still does not work:
error_page 502 504 /zero;
location = /zero { return 200; }
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 984d306..1654510 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1748,6 +1748,7 @@
r->headers_out.status = status;
if (status == NGX_HTTP_NO_CONTENT) {
+ r->header_only = 1;
return ngx_http_send_header(r);
}
diff --git a/src/http/ngx_http_header_filter_module.c b/src/http/ngx_http_header_filter_module.c
index a8687d0..bccf636 100644
--- a/src/http/ngx_http_header_filter_module.c
+++ b/src/http/ngx_http_header_filter_module.c
@@ -170,6 +170,10 @@
#endif
u_char addr[NGX_SOCKADDR_STRLEN];
+ if (r->header_sent) {
+ return NGX_OK;
+ }
+
r->header_sent = 1;
if (r != r->main) {