c->error on 412 responses from not_modified_filter
Maxim Dounin
mdounin at mdounin.ru
Mon Aug 31 02:06:55 UTC 2020
Hello!
On Thu, Aug 27, 2020 at 06:37:56AM +0000, am55444 wrote:
> I am trying to understand reasoning behind nginx setting ngx_connection_t->error (via filter_finalize check in ngx_http_finalize_request) for 412 responses in ngx_http_not_modified_filter.
>
> From the initial introduction of filter_finalize, looks like it was intended to handle large responses for image filter. However I couldn't find c->error being read anywhere after ngx_http_terminate_request (which is called from ngx_http_finalize_request).
> https://github.com/nginx/nginx/blob/554916301c424f02b1cabc073845b64f8681099b/src/http/ngx_http_request.c#L2477
>
> Can someone please point me to the right direction?
The c->error flag is set by filter finalization to prevent further
output of the original response after the response produced by the
filter finalization is sent. The c->error flag is tested by the
ngx_http_write_filter() function.
(Note that this is a hack / a misuse of the c->error flag. And
this hack is known to cause various bad effects. Notably, it
prevents connections from being kept alive.)
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx-devel
mailing list