Mercurial > hg > nginx
annotate docs/dtd/changes.dtd @ 9217:6765e5f6d991
Upstream: fixed X-Accel-Redirect handling from cache files.
The X-Accel-Redirect header might appear in cache files if its handling
is ignored with the "proxy_ignore_headers" directive. If the cache file
is later served with different settings, ngx_http_upstream_process_headers()
used to call ngx_http_upstream_finalize_request(NGX_DECLINED), which
is not expected to happen before the cleanup handler is installed and
resulted in ngx_http_finalize_request(NGX_DONE) (after 5994:5abf5af257a7,
nginx 1.7.11), leading to unexpected request counter decrement, "request
count is zero" alerts, and segmentation faults.
Similarly, errors in ngx_http_upstream_process_headers() resulted in
ngx_http_upstream_finalize_request(NGX_HTTP_INTERNAL_SERVER_ERROR) being
called. This is also not expected to happen before the cleanup handler is
installed, and resulted in ngx_http_finalize_request(NGX_DONE) without
proper request finalization.
Fix is to avoid calling ngx_http_upstream_finalize_request() from
ngx_http_upstream_process_headers(), notably when the cleanup handler
is not yet installed. Errors are now simply return NGX_ERROR, so the
caller is responsible for proper finalization by calling either
ngx_http_finalize_request() or ngx_http_upstream_finalize_request().
And X-Accel-Redirect handling now does not call
ngx_http_upstream_finalize_request(NGX_DECLINED) if no cleanup handler
is installed.
Reported by Jiří Setnička
(https://mailman.nginx.org/pipermail/nginx-devel/2024-February/HWLYHOO3DDB3XTFT6X3GRMXIEJ3SJRUA.html).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 20 Feb 2024 01:23:43 +0300 |
parents | e79c7521aaf4 |
children |
rev | line source |
---|---|
450 | 1 |
2 <!ENTITY nbsp " " > | |
547 | 3 <!ENTITY mdash " - " > |
450 | 4 |
5 | |
9215
e79c7521aaf4
Free nginx: support for sections in CHANGES.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4831
diff
changeset
|
6 <!ELEMENT change_log (section)* > |
e79c7521aaf4
Free nginx: support for sections in CHANGES.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4831
diff
changeset
|
7 |
e79c7521aaf4
Free nginx: support for sections in CHANGES.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4831
diff
changeset
|
8 <!ELEMENT section (changes)* > |
e79c7521aaf4
Free nginx: support for sections in CHANGES.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4831
diff
changeset
|
9 <!ATTLIST section title CDATA #REQUIRED > |
450 | 10 |
11 <!ELEMENT changes (change)* > | |
12 <!ATTLIST changes ver CDATA #REQUIRED | |
13 date CDATA #REQUIRED | |
14 > | |
15 | |
16 <!ELEMENT change (para)* > | |
4831
5e3bda6f5208
Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents:
547
diff
changeset
|
17 <!ATTLIST change type (bugfix | feature | change | security | workaround) #IMPLIED > |
450 | 18 |
19 <!ELEMENT para (#PCDATA | at | br | nobr)* > | |
4831
5e3bda6f5208
Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents:
547
diff
changeset
|
20 <!ATTLIST para lang (ru | en) #REQUIRED > |
450 | 21 |
22 <!ELEMENT at EMPTY > | |
23 <!ELEMENT br EMPTY > | |
24 <!ELEMENT nobr (#PCDATA) > |