diff options
| author | Maxim Dounin <mdounin@mdounin.ru> | 2014-03-21 19:33:21 +0400 |
|---|---|---|
| committer | Maxim Dounin <mdounin@mdounin.ru> | 2014-03-21 19:33:21 +0400 |
| commit | effbf466aa44df725a9f68761b2793065bba6756 (patch) | |
| tree | 8231bd358e880f9b927634dfdfdad6846e913734 /src/http/ngx_http_upstream.c | |
| parent | c6ca13592308badb125bdada372e33b4b24fd28c (diff) | |
| download | nginx-effbf466aa44df725a9f68761b2793065bba6756.tar.gz nginx-effbf466aa44df725a9f68761b2793065bba6756.tar.bz2 | |
Range filter: single_range flag in request.
If set, it means that response body is going to be in more than one buffer,
hence only range requests with a single range should be honored.
The flag is now used by mp4 and cacheable upstream responses, thus allowing
range requests of mp4 files with start/end, as well as range processing
on a first request to a not-yet-cached files with proxy_cache.
Notably this makes it possible to play mp4 files (with proxy_cache, or with
mp4 module) on iOS devices, as byte-range support is required by Apple.
Diffstat (limited to '')
| -rw-r--r-- | src/http/ngx_http_upstream.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c index cf9ca0d5c..040bda106 100644 --- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -4183,7 +4183,12 @@ ngx_http_upstream_copy_allow_ranges(ngx_http_request_t *r, if (r->cached) { r->allow_ranges = 1; return NGX_OK; + } + if (r->upstream->cacheable) { + r->allow_ranges = 1; + r->single_range = 1; + return NGX_OK; } #endif |
