# HG changeset patch # User Maxim Dounin # Date 1214699059 -14400 # Node ID 13a2fbcc8bc4ac8ce30765c675d134febec33c8f # Parent 6b995d5251ec26d6f28797b18852f46a989cd890 Change Content-Length to match total requested length. diff --git a/ngx_http_bytes_filter_module.c b/ngx_http_bytes_filter_module.c --- a/ngx_http_bytes_filter_module.c +++ b/ngx_http_bytes_filter_module.c @@ -83,7 +83,7 @@ static ngx_int_t ngx_http_bytes_header_filter(ngx_http_request_t *r) { u_char *p, *last; - off_t start, end; + off_t start, end, len; ngx_uint_t suffix, bad; ngx_http_bytes_t *range; ngx_http_bytes_conf_t *conf; @@ -134,6 +134,7 @@ ngx_http_bytes_header_filter(ngx_http_re */ bad = 0; + len = 0; while (p < last) { @@ -213,6 +214,7 @@ ngx_http_bytes_header_filter(ngx_http_re range->start = start; range->end = end + 1; + len += range->end - range->start; if (*p == ',') { p++; @@ -251,6 +253,7 @@ ngx_http_bytes_header_filter(ngx_http_re range->start = start; range->end = end + 1; + len += range->end - range->start; break; @@ -262,10 +265,14 @@ ngx_http_bytes_header_filter(ngx_http_re } done: - /* ... fix content-length */ + r->headers_out.content_length_n = len; ngx_http_set_ctx(r, ctx, ngx_http_bytes_filter_module); + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, + "bytes header filter: new length %O", + r->headers_out.content_length_n); + return ngx_http_next_header_filter(r); }