diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2003-07-11 15:17:50 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2003-07-11 15:17:50 +0000 |
| commit | 7f125081f4347118ba50066e6341e429b3a85c3c (patch) | |
| tree | 07b56b1b55e440f89c006eb51c18895e840805e5 /src/http | |
| parent | a7f7fa878ce271af23bbb6e1586bae1273eb10d2 (diff) | |
| download | nginx-7f125081f4347118ba50066e6341e429b3a85c3c.tar.gz nginx-7f125081f4347118ba50066e6341e429b3a85c3c.tar.bz2 | |
nginx-0.0.1-2003-07-11-19:17:50 import
Diffstat (limited to 'src/http')
| -rw-r--r-- | src/http/modules/ngx_http_range_filter.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/http/modules/ngx_http_range_filter.c b/src/http/modules/ngx_http_range_filter.c index 26c40c53c..e60cb2f2b 100644 --- a/src/http/modules/ngx_http_range_filter.c +++ b/src/http/modules/ngx_http_range_filter.c @@ -43,6 +43,7 @@ static int ngx_http_range_header_filter(ngx_http_request_t *r) int rc, boundary, len, i; char *p; off_t start, end; + ngx_table_elt_t *accept_ranges; ngx_http_range_t *range; ngx_http_range_filter_ctx_t *ctx; @@ -51,11 +52,24 @@ static int ngx_http_range_header_filter(ngx_http_request_t *r) || r->headers_out.status != NGX_HTTP_OK || r->headers_out.content_length == -1 /* STUB: we currently support ranges for file hunks only */ - || r->filter & NGX_HTTP_FILTER_NEED_IN_MEMORY - || r->headers_in.range == NULL + || r->filter & NGX_HTTP_FILTER_NEED_IN_MEMORY) + { + return next_header_filter(r); + } + + if (r->headers_in.range == NULL || r->headers_in.range->value.len < 7 || ngx_strncasecmp(r->headers_in.range->value.data, "bytes=", 6) != 0) { + ngx_test_null(accept_ranges, + ngx_push_table(r->headers_out.headers), + NGX_ERROR); + + accept_ranges->key.len = sizeof("Accept-Ranges") - 1; + accept_ranges->key.data = "Accept-Ranges"; + accept_ranges->value.len = sizeof("bytes") - 1; + accept_ranges->value.data = "bytes"; + return next_header_filter(r); } |
