]> git.kaiwu.me - nginx.git/commitdiff
Perl: disabled not_modified filter (ticket #1786).
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 17 Jun 2019 16:48:56 +0000 (19:48 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 17 Jun 2019 16:48:56 +0000 (19:48 +0300)
Embedded perl does not set any request fields needed for conditional
requests processing.  Further, filter finalization in the not_modified
filter can cause segmentation faults due to cleared ctx as in
ticket #1786.

Before 5fb1e57c758a (1.7.3) the not_modified filter was implicitly disabled
for perl responses, as r->headers_out.last_modified_time was -1.  This
change restores this behaviour by using the explicit r->disable_not_modified
flag.

Note that this patch doesn't try to address perl module robustness against
filter finalization and other errors returned from filter chains.  It should
be eventually reworked to handle errors instead of ignoring them.

src/http/modules/perl/nginx.xs

index ad1263287221c08d0c56037cf56375bdb2e3d381..848e501998a9d905e8ac82119fd42485052bd6aa 100644 (file)
@@ -147,6 +147,8 @@ send_http_header(r, ...)
         }
     }
 
+    r->disable_not_modified = 1;
+
     (void) ngx_http_send_header(r);