comparison src/http/modules/ngx_http_range_filter.c @ 117:f6e3c5d019b6

nginx-0.0.1-2003-07-11-19:17:50 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 11 Jul 2003 15:17:50 +0000
parents d7f606e25b99
children b27548f540ad
comparison
equal deleted inserted replaced
116:571bcbff82c5 117:f6e3c5d019b6
41 static int ngx_http_range_header_filter(ngx_http_request_t *r) 41 static int ngx_http_range_header_filter(ngx_http_request_t *r)
42 { 42 {
43 int rc, boundary, len, i; 43 int rc, boundary, len, i;
44 char *p; 44 char *p;
45 off_t start, end; 45 off_t start, end;
46 ngx_table_elt_t *accept_ranges;
46 ngx_http_range_t *range; 47 ngx_http_range_t *range;
47 ngx_http_range_filter_ctx_t *ctx; 48 ngx_http_range_filter_ctx_t *ctx;
48 49
49 if (r->main 50 if (r->main
50 || r->http_version < NGX_HTTP_VERSION_10 51 || r->http_version < NGX_HTTP_VERSION_10
51 || r->headers_out.status != NGX_HTTP_OK 52 || r->headers_out.status != NGX_HTTP_OK
52 || r->headers_out.content_length == -1 53 || r->headers_out.content_length == -1
53 /* STUB: we currently support ranges for file hunks only */ 54 /* STUB: we currently support ranges for file hunks only */
54 || r->filter & NGX_HTTP_FILTER_NEED_IN_MEMORY 55 || r->filter & NGX_HTTP_FILTER_NEED_IN_MEMORY)
55 || r->headers_in.range == NULL 56 {
57 return next_header_filter(r);
58 }
59
60 if (r->headers_in.range == NULL
56 || r->headers_in.range->value.len < 7 61 || r->headers_in.range->value.len < 7
57 || ngx_strncasecmp(r->headers_in.range->value.data, "bytes=", 6) != 0) 62 || ngx_strncasecmp(r->headers_in.range->value.data, "bytes=", 6) != 0)
58 { 63 {
64 ngx_test_null(accept_ranges,
65 ngx_push_table(r->headers_out.headers),
66 NGX_ERROR);
67
68 accept_ranges->key.len = sizeof("Accept-Ranges") - 1;
69 accept_ranges->key.data = "Accept-Ranges";
70 accept_ranges->value.len = sizeof("bytes") - 1;
71 accept_ranges->value.data = "bytes";
72
59 return next_header_filter(r); 73 return next_header_filter(r);
60 } 74 }
61 75
62 ngx_init_array(r->headers_out.ranges, r->pool, 5, sizeof(ngx_http_range_t), 76 ngx_init_array(r->headers_out.ranges, r->pool, 5, sizeof(ngx_http_range_t),
63 NGX_ERROR); 77 NGX_ERROR);