aboutsummaryrefslogtreecommitdiff
path: root/nginx/ngx_http_js_module.c
diff options
context:
space:
mode:
authorDmitry Volyntsev <xeioex@nginx.com>2022-07-06 16:52:50 -0700
committerDmitry Volyntsev <xeioex@nginx.com>2022-07-06 16:52:50 -0700
commit7f37bf30ee5b43ee346649ce66c823a435bd70d8 (patch)
tree142243ff8f0ac6e28f0ab5ef8bf37a57e5d81d7c /nginx/ngx_http_js_module.c
parente0e56b0da80406a01d8c3e733c96b4bdfb7409ac (diff)
downloadnjs-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.c7
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;