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";