diff src/http/modules/ngx_http_range_filter.c @ 153:c71aeb75c071

nginx-0.0.1-2003-10-21-20:49:56 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 21 Oct 2003 16:49:56 +0000
parents da00cde00e8a
children 46eb23d9471d
line wrap: on
line diff
--- a/src/http/modules/ngx_http_range_filter.c
+++ b/src/http/modules/ngx_http_range_filter.c
@@ -49,7 +49,7 @@ static int ngx_http_range_header_filter(
     if (r->main
         || r->http_version < NGX_HTTP_VERSION_10
         || r->headers_out.status != NGX_HTTP_OK
-        || r->headers_out.content_length == -1
+        || r->headers_out.content_length_n == -1
         /* STUB: we currently support ranges for file hunks only */
         || r->filter & NGX_HTTP_FILTER_NEED_IN_MEMORY)
     {
@@ -103,7 +103,7 @@ static int ngx_http_range_header_filter(
             break;
         }
 
-        if (start >= r->headers_out.content_length) {
+        if (start >= r->headers_out.content_length_n) {
             rc = NGX_HTTP_RANGE_NOT_SATISFIABLE;
             break;
         }
@@ -114,7 +114,7 @@ static int ngx_http_range_header_filter(
             ngx_test_null(range, ngx_push_array(&r->headers_out.ranges),
                           NGX_ERROR);
             range->start = start;
-            range->end = r->headers_out.content_length;
+            range->end = r->headers_out.content_length_n;
 
             if (*p++ == ',') {
                 continue;
@@ -139,7 +139,7 @@ static int ngx_http_range_header_filter(
             break;
         }
 
-        if (end >= r->headers_out.content_length || start >= end) {
+        if (end >= r->headers_out.content_length_n || start >= end) {
             rc = NGX_HTTP_RANGE_NOT_SATISFIABLE;
             break;
         }
@@ -170,9 +170,10 @@ static int ngx_http_range_header_filter(
         r->headers_out.content_range->value.len =
                         ngx_snprintf(r->headers_out.content_range->value.data,
                                      8 + 20 + 1, "bytes */" OFF_FMT,
-                                     r->headers_out.content_length);
+                                     r->headers_out.content_length_n);
 
-        r->headers_out.content_length = -1;
+        r->headers_out.content_length_n = -1;
+        r->headers_out.content_length = NULL;
 
         return rc;
 
@@ -193,9 +194,9 @@ static int ngx_http_range_header_filter(
                                       6 + 20 + 1 + 20 + 1 + 20 + 1,
                                       "bytes " OFF_FMT "-" OFF_FMT "/" OFF_FMT,
                                       range->start, range->end - 1,
-                                      r->headers_out.content_length);
+                                      r->headers_out.content_length_n);
 
-            r->headers_out.content_length = range->end - range->start;
+            r->headers_out.content_length_n = range->end - range->start;
 
         } else {
 
@@ -267,13 +268,14 @@ static int ngx_http_range_header_filter(
                                      20 + 1 + 20 + 1 + 20 + 5,
                                      OFF_FMT "-" OFF_FMT "/" OFF_FMT CRLF CRLF,
                                      range[i].start, range[i].end - 1,
-                                     r->headers_out.content_length);
+                                     r->headers_out.content_length_n);
 
                  len += ctx->boundary_header.len + range[i].content_range.len
                         + (size_t) (range[i].end - range[i].start);
             }
 
-            r->headers_out.content_length = len;
+            r->headers_out.content_length_n = len;
+            r->headers_out.content_length = NULL;
         }
     }