Mercurial > hg > nginx
comparison src/http/modules/ngx_http_mp4_module.c @ 5621:345e4fd4bb64
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.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 21 Mar 2014 19:33:21 +0400 |
parents | 0a567878254b |
children | a23c35496c2f |
comparison
equal
deleted
inserted
replaced
5620:0a567878254b | 5621:345e4fd4bb64 |
---|---|
569 } | 569 } |
570 } | 570 } |
571 } | 571 } |
572 | 572 |
573 if (start >= 0) { | 573 if (start >= 0) { |
574 r->allow_ranges = 0; | 574 r->single_range = 1; |
575 | 575 |
576 mp4 = ngx_pcalloc(r->pool, sizeof(ngx_http_mp4_file_t)); | 576 mp4 = ngx_pcalloc(r->pool, sizeof(ngx_http_mp4_file_t)); |
577 if (mp4 == NULL) { | 577 if (mp4 == NULL) { |
578 return NGX_HTTP_INTERNAL_SERVER_ERROR; | 578 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
579 } | 579 } |