Ignore:
Timestamp:
03/21/14 15:33:21 (4 years ago)
Author:
Maxim Dounin <mdounin@…>
Branch:
default
Message:

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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/http/modules/ngx_http_range_filter_module.c

    r5558 r5621  
    149149    time_t                        if_range_time;
    150150    ngx_str_t                    *if_range, *etag;
     151    ngx_uint_t                    ranges;
    151152    ngx_http_core_loc_conf_t     *clcf;
    152153    ngx_http_range_filter_ctx_t  *ctx;
     
    228229    }
    229230
    230     switch (ngx_http_range_parse(r, ctx, clcf->max_ranges)) {
     231    ranges = r->single_range ? 1 : clcf->max_ranges;
     232
     233    switch (ngx_http_range_parse(r, ctx, ranges)) {
    231234
    232235    case NGX_OK:
Note: See TracChangeset for help on using the changeset viewer.