Mercurial > hg > nginx
comparison src/http/modules/ngx_http_range_filter.c @ 415:3c56e834be46
nginx-0.0.10-2004-09-05-23:54:02 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 05 Sep 2004 19:54:02 +0000 |
parents | 2e3cbc1bbe3c |
children | b9bd635011de |
comparison
equal
deleted
inserted
replaced
414:388a842cbbe1 | 415:3c56e834be46 |
---|---|
121 if (r->headers_in.range == NULL | 121 if (r->headers_in.range == NULL |
122 || r->headers_in.range->value.len < 7 | 122 || r->headers_in.range->value.len < 7 |
123 || ngx_strncasecmp(r->headers_in.range->value.data, "bytes=", 6) != 0) | 123 || ngx_strncasecmp(r->headers_in.range->value.data, "bytes=", 6) != 0) |
124 { | 124 { |
125 | 125 |
126 if (!(r->headers_out.accept_ranges = | 126 r->headers_out.accept_ranges = ngx_push_list(&r->headers_out.headers); |
127 ngx_http_add_header(&r->headers_out, ngx_http_headers_out))) | 127 if (r->headers_out.accept_ranges == NULL) { |
128 { | |
129 return NGX_ERROR; | 128 return NGX_ERROR; |
130 } | 129 } |
131 | 130 |
132 r->headers_out.accept_ranges->key.len = sizeof("Accept-Ranges") - 1; | 131 r->headers_out.accept_ranges->key.len = sizeof("Accept-Ranges") - 1; |
133 r->headers_out.accept_ranges->key.data = (u_char *) "Accept-Ranges"; | 132 r->headers_out.accept_ranges->key.data = (u_char *) "Accept-Ranges"; |
243 /* rc == NGX_HTTP_RANGE_NOT_SATISFIABLE */ | 242 /* rc == NGX_HTTP_RANGE_NOT_SATISFIABLE */ |
244 | 243 |
245 r->headers_out.status = rc; | 244 r->headers_out.status = rc; |
246 r->headers_out.ranges.nelts = 0; | 245 r->headers_out.ranges.nelts = 0; |
247 | 246 |
248 if (!(r->headers_out.content_range = | 247 r->headers_out.content_range = ngx_push_list(&r->headers_out.headers); |
249 ngx_http_add_header(&r->headers_out, ngx_http_headers_out))) | 248 if (r->headers_out.content_range == NULL) { |
250 { | |
251 return NGX_ERROR; | 249 return NGX_ERROR; |
252 } | 250 } |
253 | 251 |
254 r->headers_out.content_range->key.len = sizeof("Content-Range") - 1; | 252 r->headers_out.content_range->key.len = sizeof("Content-Range") - 1; |
255 r->headers_out.content_range->key.data = (u_char *) "Content-Range"; | 253 r->headers_out.content_range->key.data = (u_char *) "Content-Range"; |
256 | 254 |
257 ngx_test_null(r->headers_out.content_range->value.data, | 255 r->headers_out.content_range->value.data = |
258 ngx_palloc(r->pool, 8 + 20 + 1), | 256 ngx_palloc(r->pool, 8 + 20 + 1); |
259 NGX_ERROR); | 257 if (r->headers_out.content_range->value.data == NULL) { |
258 return NGX_ERROR; | |
259 } | |
260 | 260 |
261 r->headers_out.content_range->value.len = | 261 r->headers_out.content_range->value.len = |
262 ngx_snprintf((char *) r->headers_out.content_range->value.data, | 262 ngx_snprintf((char *) r->headers_out.content_range->value.data, |
263 8 + 20 + 1, "bytes */" OFF_T_FMT, | 263 8 + 20 + 1, "bytes */" OFF_T_FMT, |
264 r->headers_out.content_length_n); | 264 r->headers_out.content_length_n); |
274 } else { | 274 } else { |
275 r->headers_out.status = NGX_HTTP_PARTIAL_CONTENT; | 275 r->headers_out.status = NGX_HTTP_PARTIAL_CONTENT; |
276 | 276 |
277 if (r->headers_out.ranges.nelts == 1) { | 277 if (r->headers_out.ranges.nelts == 1) { |
278 | 278 |
279 if (!(r->headers_out.content_range = | 279 r->headers_out.content_range = |
280 ngx_http_add_header(&r->headers_out, ngx_http_headers_out))) | 280 ngx_push_list(&r->headers_out.headers); |
281 { | 281 if (r->headers_out.content_range == NULL) { |
282 return NGX_ERROR; | 282 return NGX_ERROR; |
283 } | 283 } |
284 | 284 |
285 r->headers_out.content_range->key.len = sizeof("Content-Range") - 1; | 285 r->headers_out.content_range->key.len = sizeof("Content-Range") - 1; |
286 r->headers_out.content_range->key.data = (u_char *) "Content-Range"; | 286 r->headers_out.content_range->key.data = (u_char *) "Content-Range"; |