Mercurial > hg > nginx
changeset 8031:d26db4f82d7d
All known output headers can be linked lists now.
The h->next pointer properly provided as NULL in all cases where known
output headers are added.
Note that there are 3rd party modules which might not do this, and it
might be risky to rely on this for arbitrary headers.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 30 May 2022 21:25:45 +0300 |
parents | cdc2724858ca |
children | 2025aae94739 |
files | src/http/modules/ngx_http_auth_basic_module.c src/http/modules/ngx_http_auth_request_module.c src/http/modules/ngx_http_dav_module.c src/http/modules/ngx_http_gzip_filter_module.c src/http/modules/ngx_http_gzip_static_module.c src/http/modules/ngx_http_headers_filter_module.c src/http/modules/ngx_http_memcached_module.c src/http/modules/ngx_http_range_filter_module.c src/http/modules/ngx_http_static_module.c src/http/modules/perl/nginx.xs src/http/ngx_http_core_module.c src/http/ngx_http_script.c src/http/ngx_http_special_response.c src/http/ngx_http_upstream.c |
diffstat | 14 files changed, 25 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_auth_basic_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/ngx_http_auth_basic_module.c Mon May 30 21:25:45 2022 +0300 @@ -339,6 +339,7 @@ *p = '"'; r->headers_out.www_authenticate->hash = 1; + r->headers_out.www_authenticate->next = NULL; ngx_str_set(&r->headers_out.www_authenticate->key, "WWW-Authenticate"); r->headers_out.www_authenticate->value.data = basic; r->headers_out.www_authenticate->value.len = len;
--- a/src/http/modules/ngx_http_auth_request_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/ngx_http_auth_request_module.c Mon May 30 21:25:45 2022 +0300 @@ -154,6 +154,7 @@ } *ho = *h; + ho->next = NULL; r->headers_out.www_authenticate = ho; }
--- a/src/http/modules/ngx_http_dav_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/ngx_http_dav_module.c Mon May 30 21:25:45 2022 +0300 @@ -1082,6 +1082,7 @@ } r->headers_out.location->hash = 1; + r->headers_out.location->next = NULL; ngx_str_set(&r->headers_out.location->key, "Location"); escape = 2 * ngx_escape_uri(NULL, r->uri.data, r->uri.len, NGX_ESCAPE_URI);
--- a/src/http/modules/ngx_http_gzip_filter_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/ngx_http_gzip_filter_module.c Mon May 30 21:25:45 2022 +0300 @@ -280,6 +280,7 @@ } h->hash = 1; + h->next = NULL; ngx_str_set(&h->key, "Content-Encoding"); ngx_str_set(&h->value, "gzip"); r->headers_out.content_encoding = h;
--- a/src/http/modules/ngx_http_gzip_static_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/ngx_http_gzip_static_module.c Mon May 30 21:25:45 2022 +0300 @@ -242,6 +242,7 @@ } h->hash = 1; + h->next = NULL; ngx_str_set(&h->key, "Content-Encoding"); ngx_str_set(&h->value, "gzip"); r->headers_out.content_encoding = h;
--- a/src/http/modules/ngx_http_headers_filter_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/ngx_http_headers_filter_module.c Mon May 30 21:25:45 2022 +0300 @@ -362,6 +362,7 @@ } r->headers_out.expires = e; + e->next = NULL; e->hash = 1; ngx_str_set(&e->key, "Expires"); @@ -621,6 +622,7 @@ } *old = h; + h->next = NULL; } h->hash = 1;
--- a/src/http/modules/ngx_http_memcached_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/ngx_http_memcached_module.c Mon May 30 21:25:45 2022 +0300 @@ -401,6 +401,7 @@ } h->hash = 1; + h->next = NULL; ngx_str_set(&h->key, "Content-Encoding"); ngx_str_set(&h->value, "gzip"); r->headers_out.content_encoding = h;
--- a/src/http/modules/ngx_http_range_filter_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/ngx_http_range_filter_module.c Mon May 30 21:25:45 2022 +0300 @@ -258,6 +258,7 @@ } r->headers_out.accept_ranges->hash = 1; + r->headers_out.accept_ranges->next = NULL; ngx_str_set(&r->headers_out.accept_ranges->key, "Accept-Ranges"); ngx_str_set(&r->headers_out.accept_ranges->value, "bytes"); @@ -427,6 +428,7 @@ r->headers_out.content_range = content_range; content_range->hash = 1; + content_range->next = NULL; ngx_str_set(&content_range->key, "Content-Range"); content_range->value.data = ngx_pnalloc(r->pool, @@ -599,6 +601,7 @@ r->headers_out.content_range = content_range; content_range->hash = 1; + content_range->next = NULL; ngx_str_set(&content_range->key, "Content-Range"); content_range->value.data = ngx_pnalloc(r->pool,
--- a/src/http/modules/ngx_http_static_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/ngx_http_static_module.c Mon May 30 21:25:45 2022 +0300 @@ -195,6 +195,7 @@ } r->headers_out.location->hash = 1; + r->headers_out.location->next = NULL; ngx_str_set(&r->headers_out.location->key, "Location"); r->headers_out.location->value.len = len; r->headers_out.location->value.data = location;
--- a/src/http/modules/perl/nginx.xs Mon May 30 21:25:43 2022 +0300 +++ b/src/http/modules/perl/nginx.xs Mon May 30 21:25:45 2022 +0300 @@ -573,6 +573,7 @@ } header->hash = 1; + header->next = NULL; if (ngx_http_perl_sv2str(aTHX_ r, &header->key, key) != NGX_OK) { header->hash = 0;
--- a/src/http/ngx_http_core_module.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/ngx_http_core_module.c Mon May 30 21:25:45 2022 +0300 @@ -1007,6 +1007,7 @@ } r->headers_out.location->hash = 1; + r->headers_out.location->next = NULL; ngx_str_set(&r->headers_out.location->key, "Location"); if (r->args.len == 0) { @@ -1687,6 +1688,7 @@ } etag->hash = 1; + etag->next = NULL; ngx_str_set(&etag->key, "ETag"); etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3); @@ -1781,6 +1783,7 @@ } r->headers_out.location->hash = 1; + r->headers_out.location->next = NULL; ngx_str_set(&r->headers_out.location->key, "Location"); r->headers_out.location->value = val;
--- a/src/http/ngx_http_script.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/ngx_http_script.c Mon May 30 21:25:45 2022 +0300 @@ -1243,6 +1243,7 @@ } r->headers_out.location->hash = 1; + r->headers_out.location->next = NULL; ngx_str_set(&r->headers_out.location->key, "Location"); r->headers_out.location->value = e->buf;
--- a/src/http/ngx_http_special_response.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/ngx_http_special_response.c Mon May 30 21:25:45 2022 +0300 @@ -649,6 +649,7 @@ } location->hash = 1; + location->next = NULL; ngx_str_set(&location->key, "Location"); location->value = uri;
--- a/src/http/ngx_http_upstream.c Mon May 30 21:25:43 2022 +0300 +++ b/src/http/ngx_http_upstream.c Mon May 30 21:25:45 2022 +0300 @@ -2681,6 +2681,7 @@ } *h = *u->headers_in.www_authenticate; + h->next = NULL; r->headers_out.www_authenticate = h; } @@ -5075,6 +5076,7 @@ if (offset) { ph = (ngx_table_elt_t **) ((char *) &r->headers_out + offset); *ph = ho; + ho->next = NULL; } return NGX_OK; @@ -5169,6 +5171,7 @@ } *ho = *h; + ho->next = NULL; r->headers_out.last_modified = ho; r->headers_out.last_modified_time = @@ -5191,6 +5194,7 @@ } *ho = *h; + ho->next = NULL; if (r->upstream->rewrite_redirect) { rc = r->upstream->rewrite_redirect(r, ho, 0); @@ -5236,6 +5240,7 @@ } *ho = *h; + ho->next = NULL; if (r->upstream->rewrite_redirect) { @@ -5281,6 +5286,7 @@ } *ho = *h; + ho->next = NULL; if (r->upstream->rewrite_cookie) { rc = r->upstream->rewrite_cookie(r, ho); @@ -5334,6 +5340,7 @@ } *ho = *h; + ho->next = NULL; r->headers_out.accept_ranges = ho;