summaryrefslogtreecommitdiffhomepage
path: root/src/http/ngx_http_upstream.c
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2014-03-21 19:33:21 +0400
committerMaxim Dounin <mdounin@mdounin.ru>2014-03-21 19:33:21 +0400
commiteffbf466aa44df725a9f68761b2793065bba6756 (patch)
tree8231bd358e880f9b927634dfdfdad6846e913734 /src/http/ngx_http_upstream.c
parentc6ca13592308badb125bdada372e33b4b24fd28c (diff)
downloadnginx-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.c5
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