summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@nginx.com>2014-02-04 17:13:35 +0400
committerRuslan Ermilov <ru@nginx.com>2014-02-04 17:13:35 +0400
commit42c049bd2d08677ac1979c91924a7d14a0fb55c4 (patch)
tree5e9459926936b53bf467bd8d9f7fb19c3bfe48ac /src
parentab3c0f9250f248b37aac9f79359a773f06baa831 (diff)
downloadnginx-42c049bd2d08677ac1979c91924a7d14a0fb55c4.tar.gz
nginx-42c049bd2d08677ac1979c91924a7d14a0fb55c4.tar.bz2
Range filter: fixed duplicate charset.
If a proxied response had charset in Content-Type, the charset was duplicated in a response to client request with byte ranges.
Diffstat (limited to 'src')
-rw-r--r--src/http/modules/ngx_http_range_filter_module.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/http/modules/ngx_http_range_filter_module.c b/src/http/modules/ngx_http_range_filter_module.c
index 6143a8786..bcc64fd30 100644
--- a/src/http/modules/ngx_http_range_filter_module.c
+++ b/src/http/modules/ngx_http_range_filter_module.c
@@ -432,7 +432,9 @@ ngx_http_range_multipart_header(ngx_http_request_t *r,
+ r->headers_out.content_type.len
+ sizeof(CRLF "Content-Range: bytes ") - 1;
- if (r->headers_out.charset.len) {
+ if (r->headers_out.content_type_len == r->headers_out.content_type.len
+ && r->headers_out.charset.len)
+ {
len += sizeof("; charset=") - 1 + r->headers_out.charset.len;
}
@@ -451,7 +453,9 @@ ngx_http_range_multipart_header(ngx_http_request_t *r,
* "Content-Range: bytes "
*/
- if (r->headers_out.charset.len) {
+ if (r->headers_out.content_type_len == r->headers_out.content_type.len
+ && r->headers_out.charset.len)
+ {
ctx->boundary_header.len = ngx_sprintf(ctx->boundary_header.data,
CRLF "--%0muA" CRLF
"Content-Type: %V; charset=%V" CRLF
@@ -461,8 +465,6 @@ ngx_http_range_multipart_header(ngx_http_request_t *r,
&r->headers_out.charset)
- ctx->boundary_header.data;
- r->headers_out.charset.len = 0;
-
} else if (r->headers_out.content_type.len) {
ctx->boundary_header.len = ngx_sprintf(ctx->boundary_header.data,
CRLF "--%0muA" CRLF
@@ -501,6 +503,8 @@ ngx_http_range_multipart_header(ngx_http_request_t *r,
r->headers_out.content_type_len = r->headers_out.content_type.len;
+ r->headers_out.charset.len = 0;
+
/* the size of the last boundary CRLF "--0123456789--" CRLF */
len = sizeof(CRLF "--") - 1 + NGX_ATOMIC_T_LEN + sizeof("--" CRLF) - 1;