Mercurial > hg > ngx_http_bytes_filter_module
changeset 2:13a2fbcc8bc4
Change Content-Length to match total requested length.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sun, 29 Jun 2008 04:24:19 +0400 |
parents | 6b995d5251ec |
children | 3e8648918913 |
files | ngx_http_bytes_filter_module.c |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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); }