diff options
author | Dmitry Volyntsev <xeioex@nginx.com> | 2022-07-06 16:52:50 -0700 |
---|---|---|
committer | Dmitry Volyntsev <xeioex@nginx.com> | 2022-07-06 16:52:50 -0700 |
commit | 7f37bf30ee5b43ee346649ce66c823a435bd70d8 (patch) | |
tree | 142243ff8f0ac6e28f0ab5ef8bf37a57e5d81d7c /nginx/ngx_http_js_module.c | |
parent | e0e56b0da80406a01d8c3e733c96b4bdfb7409ac (diff) | |
download | njs-7f37bf30ee5b43ee346649ce66c823a435bd70d8.tar.gz njs-7f37bf30ee5b43ee346649ce66c823a435bd70d8.zip |
HTTP: fixed r.headersOut setter for special headers.
The issue was introduced in 5b7676ec600d (0.7.5) when njs module was
adapted to changes in nginx/1.23 related to header structures.
When special headers (Content-Length, Content-Type, Content-Encoding)
were set, the value of the last outgoing header might be overwritten
with a new set value.
This closes #555 issue on Github.
Diffstat (limited to 'nginx/ngx_http_js_module.c')
-rw-r--r-- | nginx/ngx_http_js_module.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index 0c0d9114..5f8600df 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -3836,7 +3836,6 @@ ngx_http_js_header_out_special(njs_vm_t *vm, ngx_http_request_t *r, return NJS_ERROR; } - h = NULL; part = &headers->part; header = part->elts; @@ -3861,10 +3860,14 @@ ngx_http_js_header_out_special(njs_vm_t *vm, ngx_http_request_t *r, if (h->key.len == v->length && ngx_strncasecmp(h->key.data, v->start, v->length) == 0) { - break; + goto done; } } + h = NULL; + +done: + if (h != NULL && s.length == 0) { h->hash = 0; h = NULL; |