diff options
author | Maxim Dounin <mdounin@mdounin.ru> | 2012-07-07 21:16:21 +0000 |
---|---|---|
committer | Maxim Dounin <mdounin@mdounin.ru> | 2012-07-07 21:16:21 +0000 |
commit | 63d7ab16ff18b966674b1f7db0601a93ce9f252a (patch) | |
tree | d7256551223dd7e94c9e41da622853d2a95c92ce /src | |
parent | 8aaf9d35b785ea887adc020789ba162804fad869 (diff) | |
download | nginx-63d7ab16ff18b966674b1f7db0601a93ce9f252a.tar.gz nginx-63d7ab16ff18b966674b1f7db0601a93ce9f252a.zip |
Fixed If-Range with unknown last modified time.
If modification time isn't known, skip range processing and return full
entity body instead of just ignoring If-Range. Ignoring If-Range isn't
safe as client will assume entity wasn't changed since time specified.
Diffstat (limited to 'src')
-rw-r--r-- | src/http/modules/ngx_http_range_filter_module.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/http/modules/ngx_http_range_filter_module.c b/src/http/modules/ngx_http_range_filter_module.c index 0eaeff915..329f83d6f 100644 --- a/src/http/modules/ngx_http_range_filter_module.c +++ b/src/http/modules/ngx_http_range_filter_module.c @@ -174,7 +174,11 @@ ngx_http_range_header_filter(ngx_http_request_t *r) goto next_filter; } - if (r->headers_in.if_range && r->headers_out.last_modified_time != -1) { + if (r->headers_in.if_range) { + + if (r->headers_out.last_modified_time == (time_t) -1) { + goto next_filter; + } if_range = ngx_http_parse_time(r->headers_in.if_range->value.data, r->headers_in.if_range->value.len); |