<div dir="ltr">Hi,<div>In my module I have a body filter. In the body filter, I respond with a 4XX if the body contains a matching pattern. This is working correctly.<br><br>However, I would like to send a custom response message when the above situation occurs. I tried doing this by attaching a buffer to the output headers and calling send header before returning from the filter handler as shown below.</div><div><br></div><div><font face="monospace">-----------------------------------------------------------------------</font></div><div><font face="monospace">  r->err_status = http_status;<br>  r->headers_out.status = http_status;<br>  r->headers_out.content_length_n = buf->last - buf->pos;<br>  ngx_str_set(&r->headers_out.content_type, "text/plain");<br><br>  rc = ngx_http_send_header(r);<br></font></div><div><div><font face="monospace">-----------------------------------------------------------------------</font></div><br class="gmail-Apple-interchange-newline"></div><div>However, this causes the "header already sent" error to be raised in the error.log. The reason for this is because, ngx_http_core_content_phase calls ngx_http_finalize_request after returning from the body filter. <br><br><font face="monospace">ngx_http_finalize_request</font> calls <font face="monospace">ngx_http_special_response_handler</font> if the body filter returns any codes greater than <font face="monospace">NGX_HTTP_SPECIAL_RESPONSE</font>. The <font face="monospace">ngx_http_special_response_handler</font> in turn calls <font face="monospace">ngx_http_send_special_response</font>  which again tries to send the response header using the stock error message in the <font face="monospace">ngx_http_error_pages</font> array for the return code in question. The alert is raised since we already sent it. <br><br>Is there a way to prevent the special_response handler from either sending this message again or use the buffer attached to the request in the body filter? <br><br>Thanks and regards,<br>Dk.</div><div><br></div></div>