annotate auto/lib/sha1/makefile.bcc @ 6422:768e287a6f36

Fixed sendfile in threads (or with aio preload) and subrequests. If sendfile in threads is used, it is possible that multiple subrequests will trigger multiple ngx_linux_sendfile_thread() calls, as operations are only serialized in output chain based on r->aio, that is, on subrequest level. This resulted in "task #N already active" alerts, in particular, when running proxy_store.t with "aio threads; sendfile on;". Fix is to tolerate duplicate calls, with an additional safety check that the file is the same as previously used. The same problem also affects "aio on; sendfile on;" on FreeBSD (previously known as "aio sendfile;"), where aio->preload_handler() could be called multiple times due to similar reasons, resulting in "second aio post" alerts. Fix is the same as well. It is also believed that similar problems can arise if a filter calls the next body filter multiple times for some reason. These are mostly theoretical though.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 03 Mar 2016 21:14:12 +0300
parents d620f497c50f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
653
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 # Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 2838
diff changeset
3 # Copyright (C) Nginx, Inc.
653
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6 CFLAGS = -q -O2 -tWM $(CPU_OPT) -DL_ENDIAN
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 !if "$(SHA1_ASM)" == "YES"
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 sha1.lib:
2838
ecdc41bf2047 backout r2833: CURDIR was set to Unix style path
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
11 cd $(SHA1)
653
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 bcc32 -c $(CFLAGS) -DSHA1_ASM sha1dgst.c
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 tlib sha1.lib +sha1dgst.obj +"asm\s-win32.obj"
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15 !else
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17 sha1.lib:
2838
ecdc41bf2047 backout r2833: CURDIR was set to Unix style path
Igor Sysoev <igor@sysoev.ru>
parents: 653
diff changeset
18 cd $(SHA1)
653
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19 bcc32 -c $(CFLAGS) sha1dgst.c
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
20 tlib sha1.lib +sha1dgst.obj
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21
7cbef16c71a1 nginx-0.3.48-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22 !endif