annotate docs/GNUmakefile @ 7969:84c60a3cd12a stable-1.20

Changed ngx_chain_update_chains() to test tag first (ticket #2248). Without this change, aio used with HTTP/2 can result in connection hang, as observed with "aio threads; aio_write on;" and proxying (ticket #2248). The problem is that HTTP/2 updates buffers outside of the output filters (notably, marks them as sent), and then posts a write event to call output filters. If a filter does not call the next one for some reason (for example, because of an AIO operation in progress), this might result in a state when the owner of a buffer already called ngx_chain_update_chains() and can reuse the buffer, while the same buffer is still sitting in the busy chain of some other filter. In the particular case a buffer was sitting in output chain's ctx->busy, and was reused by event pipe. Output chain's ctx->busy was permanently blocked by it, and this resulted in connection hang. Fix is to change ngx_chain_update_chains() to skip buffers from other modules unconditionally, without trying to wait for these buffers to become empty.
author Maxim Dounin <mdounin@mdounin.ru>
date Sat, 30 Oct 2021 02:39:19 +0300
parents f303f3e43f7b
children 1bc938b270dc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
775
a452a0e13539 check nginx.pm version
Igor Sysoev <igor@sysoev.ru>
parents: 681
diff changeset
2 VER= $(shell grep 'define NGINX_VERSION' src/core/nginx.h \
5147
864030a4ff2a Configure: unified nginx version computation constructs.
Ruslan Ermilov <ru@nginx.com>
parents: 4831
diff changeset
3 | sed -e 's/^.*"\(.*\)".*/\1/')
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4 NGINX= nginx-$(VER)
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5 TEMP= tmp
5585
f303f3e43f7b Docs: switched from java XSLScript to xslscript.pl.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5147
diff changeset
6 XSLS?= xslscript.pl
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8
4187
b9dade63fcc2 The reference documentation is moving elsewhere.
Ruslan Ermilov <ru@nginx.com>
parents: 4110
diff changeset
9 all: changes
4068
22364b1f61c9 Initial English translation of Core and HTTP Core modules.
Ruslan Ermilov <ru@nginx.com>
parents: 4013
diff changeset
10
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11 changes: $(TEMP)/$(NGINX)/CHANGES.ru \
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 $(TEMP)/$(NGINX)/CHANGES
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
4831
5e3bda6f5208 Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents: 4776
diff changeset
15 $(TEMP)/$(NGINX)/CHANGES.ru: docs/dtd/changes.dtd \
5e3bda6f5208 Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents: 4776
diff changeset
16 docs/xml/nginx/changes.xml \
4013
b427290fb6bc - Added missing dependencies for the CHANGES{,ru} targets.
Ruslan Ermilov <ru@nginx.com>
parents: 3999
diff changeset
17 docs/xml/change_log_conf.xml \
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18 docs/xslt/changes.xslt
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19
4776
3032f4854b81 Simplified makefile that builds CHANGES.
Ruslan Ermilov <ru@nginx.com>
parents: 4187
diff changeset
20 mkdir -p $(TEMP)/$(NGINX)
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21
4831
5e3bda6f5208 Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents: 4776
diff changeset
22 xmllint --noout --valid docs/xml/nginx/changes.xml
4013
b427290fb6bc - Added missing dependencies for the CHANGES{,ru} targets.
Ruslan Ermilov <ru@nginx.com>
parents: 3999
diff changeset
23 xsltproc --stringparam lang ru \
4776
3032f4854b81 Simplified makefile that builds CHANGES.
Ruslan Ermilov <ru@nginx.com>
parents: 4187
diff changeset
24 -o $@ docs/xslt/changes.xslt docs/xml/nginx/changes.xml
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
25
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26
4831
5e3bda6f5208 Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents: 4776
diff changeset
27 $(TEMP)/$(NGINX)/CHANGES: docs/dtd/changes.dtd \
5e3bda6f5208 Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents: 4776
diff changeset
28 docs/xml/nginx/changes.xml \
4013
b427290fb6bc - Added missing dependencies for the CHANGES{,ru} targets.
Ruslan Ermilov <ru@nginx.com>
parents: 3999
diff changeset
29 docs/xml/change_log_conf.xml \
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
30 docs/xslt/changes.xslt
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
31
4776
3032f4854b81 Simplified makefile that builds CHANGES.
Ruslan Ermilov <ru@nginx.com>
parents: 4187
diff changeset
32 mkdir -p $(TEMP)/$(NGINX)
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
33
4831
5e3bda6f5208 Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents: 4776
diff changeset
34 xmllint --noout --valid docs/xml/nginx/changes.xml
4013
b427290fb6bc - Added missing dependencies for the CHANGES{,ru} targets.
Ruslan Ermilov <ru@nginx.com>
parents: 3999
diff changeset
35 xsltproc --stringparam lang en \
4776
3032f4854b81 Simplified makefile that builds CHANGES.
Ruslan Ermilov <ru@nginx.com>
parents: 4187
diff changeset
36 -o $@ docs/xslt/changes.xslt docs/xml/nginx/changes.xml
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
37
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
38
5585
f303f3e43f7b Docs: switched from java XSLScript to xslscript.pl.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5147
diff changeset
39 docs/xslt/changes.xslt: docs/xsls/changes.xsls
681
7e24168b0853 nginx-0.4.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
40
5585
f303f3e43f7b Docs: switched from java XSLScript to xslscript.pl.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5147
diff changeset
41 $(XSLS) -o $@ $<