HAYASHI Kentaro
null+****@clear*****
Fri Mar 25 22:13:23 JST 2016
HAYASHI Kentaro 2016-03-25 22:13:23 +0900 (Fri, 25 Mar 2016) New Revision: f50c815774e035169f4a63fa58688d7cb575b6be https://github.com/groonga/groonga/commit/f50c815774e035169f4a63fa58688d7cb575b6be Message: Update bundled nginx % make update-nginx NEW_NGINX_VERSION=1.9.12 Added files: vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_huff_encode.c vendor/nginx-1.9.12/src/os/unix/ngx_setaffinity.c Removed files: vendor/nginx-1.9.11/src/http/v2/ngx_http_v2_huff_encode.c vendor/nginx-1.9.11/src/os/unix/ngx_setaffinity.c Modified files: nginx_version Renamed files: vendor/nginx-1.9.12/auto/cc/acc (from vendor/nginx-1.9.11/auto/cc/acc) vendor/nginx-1.9.12/auto/cc/bcc (from vendor/nginx-1.9.11/auto/cc/bcc) vendor/nginx-1.9.12/auto/cc/ccc (from vendor/nginx-1.9.11/auto/cc/ccc) vendor/nginx-1.9.12/auto/cc/clang (from vendor/nginx-1.9.11/auto/cc/clang) vendor/nginx-1.9.12/auto/cc/conf (from vendor/nginx-1.9.11/auto/cc/conf) vendor/nginx-1.9.12/auto/cc/gcc (from vendor/nginx-1.9.11/auto/cc/gcc) vendor/nginx-1.9.12/auto/cc/icc (from vendor/nginx-1.9.11/auto/cc/icc) vendor/nginx-1.9.12/auto/cc/msvc (from vendor/nginx-1.9.11/auto/cc/msvc) vendor/nginx-1.9.12/auto/cc/name (from vendor/nginx-1.9.11/auto/cc/name) vendor/nginx-1.9.12/auto/cc/owc (from vendor/nginx-1.9.11/auto/cc/owc) vendor/nginx-1.9.12/auto/cc/sunc (from vendor/nginx-1.9.11/auto/cc/sunc) vendor/nginx-1.9.12/auto/configure (from vendor/nginx-1.9.11/auto/configure) vendor/nginx-1.9.12/auto/define (from vendor/nginx-1.9.11/auto/define) vendor/nginx-1.9.12/auto/endianness (from vendor/nginx-1.9.11/auto/endianness) vendor/nginx-1.9.12/auto/feature (from vendor/nginx-1.9.11/auto/feature) vendor/nginx-1.9.12/auto/have (from vendor/nginx-1.9.11/auto/have) vendor/nginx-1.9.12/auto/have_headers (from vendor/nginx-1.9.11/auto/have_headers) vendor/nginx-1.9.12/auto/headers (from vendor/nginx-1.9.11/auto/headers) vendor/nginx-1.9.12/auto/include (from vendor/nginx-1.9.11/auto/include) vendor/nginx-1.9.12/auto/init (from vendor/nginx-1.9.11/auto/init) vendor/nginx-1.9.12/auto/install (from vendor/nginx-1.9.11/auto/install) vendor/nginx-1.9.12/auto/lib/conf (from vendor/nginx-1.9.11/auto/lib/conf) vendor/nginx-1.9.12/auto/lib/geoip/conf (from vendor/nginx-1.9.11/auto/lib/geoip/conf) vendor/nginx-1.9.12/auto/lib/google-perftools/conf (from vendor/nginx-1.9.11/auto/lib/google-perftools/conf) vendor/nginx-1.9.12/auto/lib/libatomic/conf (from vendor/nginx-1.9.11/auto/lib/libatomic/conf) vendor/nginx-1.9.12/auto/lib/libatomic/make (from vendor/nginx-1.9.11/auto/lib/libatomic/make) vendor/nginx-1.9.12/auto/lib/libgd/conf (from vendor/nginx-1.9.11/auto/lib/libgd/conf) vendor/nginx-1.9.12/auto/lib/libxslt/conf (from vendor/nginx-1.9.11/auto/lib/libxslt/conf) vendor/nginx-1.9.12/auto/lib/make (from vendor/nginx-1.9.11/auto/lib/make) vendor/nginx-1.9.12/auto/lib/md5/conf (from vendor/nginx-1.9.11/auto/lib/md5/conf) vendor/nginx-1.9.12/auto/lib/md5/make (from vendor/nginx-1.9.11/auto/lib/md5/make) vendor/nginx-1.9.12/auto/lib/md5/makefile.bcc (from vendor/nginx-1.9.11/auto/lib/md5/makefile.bcc) vendor/nginx-1.9.12/auto/lib/md5/makefile.msvc (from vendor/nginx-1.9.11/auto/lib/md5/makefile.msvc) vendor/nginx-1.9.12/auto/lib/md5/makefile.owc (from vendor/nginx-1.9.11/auto/lib/md5/makefile.owc) vendor/nginx-1.9.12/auto/lib/openssl/conf (from vendor/nginx-1.9.11/auto/lib/openssl/conf) vendor/nginx-1.9.12/auto/lib/openssl/make (from vendor/nginx-1.9.11/auto/lib/openssl/make) vendor/nginx-1.9.12/auto/lib/openssl/makefile.bcc (from vendor/nginx-1.9.11/auto/lib/openssl/makefile.bcc) vendor/nginx-1.9.12/auto/lib/openssl/makefile.msvc (from vendor/nginx-1.9.11/auto/lib/openssl/makefile.msvc) vendor/nginx-1.9.12/auto/lib/pcre/conf (from vendor/nginx-1.9.11/auto/lib/pcre/conf) vendor/nginx-1.9.12/auto/lib/pcre/make (from vendor/nginx-1.9.11/auto/lib/pcre/make) vendor/nginx-1.9.12/auto/lib/pcre/makefile.bcc (from vendor/nginx-1.9.11/auto/lib/pcre/makefile.bcc) vendor/nginx-1.9.12/auto/lib/pcre/makefile.msvc (from vendor/nginx-1.9.11/auto/lib/pcre/makefile.msvc) vendor/nginx-1.9.12/auto/lib/pcre/makefile.owc (from vendor/nginx-1.9.11/auto/lib/pcre/makefile.owc) vendor/nginx-1.9.12/auto/lib/perl/conf (from vendor/nginx-1.9.11/auto/lib/perl/conf) vendor/nginx-1.9.12/auto/lib/perl/make (from vendor/nginx-1.9.11/auto/lib/perl/make) vendor/nginx-1.9.12/auto/lib/sha1/conf (from vendor/nginx-1.9.11/auto/lib/sha1/conf) vendor/nginx-1.9.12/auto/lib/sha1/make (from vendor/nginx-1.9.11/auto/lib/sha1/make) vendor/nginx-1.9.12/auto/lib/sha1/makefile.bcc (from vendor/nginx-1.9.11/auto/lib/sha1/makefile.bcc) vendor/nginx-1.9.12/auto/lib/sha1/makefile.msvc (from vendor/nginx-1.9.11/auto/lib/sha1/makefile.msvc) vendor/nginx-1.9.12/auto/lib/sha1/makefile.owc (from vendor/nginx-1.9.11/auto/lib/sha1/makefile.owc) vendor/nginx-1.9.12/auto/lib/test (from vendor/nginx-1.9.11/auto/lib/test) vendor/nginx-1.9.12/auto/lib/zlib/conf (from vendor/nginx-1.9.11/auto/lib/zlib/conf) vendor/nginx-1.9.12/auto/lib/zlib/make (from vendor/nginx-1.9.11/auto/lib/zlib/make) vendor/nginx-1.9.12/auto/lib/zlib/makefile.bcc (from vendor/nginx-1.9.11/auto/lib/zlib/makefile.bcc) vendor/nginx-1.9.12/auto/lib/zlib/makefile.msvc (from vendor/nginx-1.9.11/auto/lib/zlib/makefile.msvc) vendor/nginx-1.9.12/auto/lib/zlib/makefile.owc (from vendor/nginx-1.9.11/auto/lib/zlib/makefile.owc) vendor/nginx-1.9.12/auto/make (from vendor/nginx-1.9.11/auto/make) vendor/nginx-1.9.12/auto/module (from vendor/nginx-1.9.11/auto/module) vendor/nginx-1.9.12/auto/modules (from vendor/nginx-1.9.11/auto/modules) vendor/nginx-1.9.12/auto/nohave (from vendor/nginx-1.9.11/auto/nohave) vendor/nginx-1.9.12/auto/options (from vendor/nginx-1.9.11/auto/options) vendor/nginx-1.9.12/auto/os/conf (from vendor/nginx-1.9.11/auto/os/conf) vendor/nginx-1.9.12/auto/os/darwin (from vendor/nginx-1.9.11/auto/os/darwin) vendor/nginx-1.9.12/auto/os/freebsd (from vendor/nginx-1.9.11/auto/os/freebsd) vendor/nginx-1.9.12/auto/os/linux (from vendor/nginx-1.9.11/auto/os/linux) vendor/nginx-1.9.12/auto/os/solaris (from vendor/nginx-1.9.11/auto/os/solaris) vendor/nginx-1.9.12/auto/os/win32 (from vendor/nginx-1.9.11/auto/os/win32) vendor/nginx-1.9.12/auto/sources (from vendor/nginx-1.9.11/auto/sources) vendor/nginx-1.9.12/auto/stubs (from vendor/nginx-1.9.11/auto/stubs) vendor/nginx-1.9.12/auto/summary (from vendor/nginx-1.9.11/auto/summary) vendor/nginx-1.9.12/auto/threads (from vendor/nginx-1.9.11/auto/threads) vendor/nginx-1.9.12/auto/types/sizeof (from vendor/nginx-1.9.11/auto/types/sizeof) vendor/nginx-1.9.12/auto/types/typedef (from vendor/nginx-1.9.11/auto/types/typedef) vendor/nginx-1.9.12/auto/types/uintptr_t (from vendor/nginx-1.9.11/auto/types/uintptr_t) vendor/nginx-1.9.12/auto/types/value (from vendor/nginx-1.9.11/auto/types/value) vendor/nginx-1.9.12/auto/unix (from vendor/nginx-1.9.11/auto/unix) vendor/nginx-1.9.12/conf/fastcgi.conf (from vendor/nginx-1.9.11/conf/fastcgi.conf) vendor/nginx-1.9.12/conf/fastcgi_params (from vendor/nginx-1.9.11/conf/fastcgi_params) vendor/nginx-1.9.12/conf/koi-utf (from vendor/nginx-1.9.11/conf/koi-utf) vendor/nginx-1.9.12/conf/koi-win (from vendor/nginx-1.9.11/conf/koi-win) vendor/nginx-1.9.12/conf/mime.types (from vendor/nginx-1.9.11/conf/mime.types) vendor/nginx-1.9.12/conf/nginx.conf (from vendor/nginx-1.9.11/conf/nginx.conf) vendor/nginx-1.9.12/conf/scgi_params (from vendor/nginx-1.9.11/conf/scgi_params) vendor/nginx-1.9.12/conf/uwsgi_params (from vendor/nginx-1.9.11/conf/uwsgi_params) vendor/nginx-1.9.12/conf/win-utf (from vendor/nginx-1.9.11/conf/win-utf) vendor/nginx-1.9.12/contrib/README (from vendor/nginx-1.9.11/contrib/README) vendor/nginx-1.9.12/contrib/geo2nginx.pl (from vendor/nginx-1.9.11/contrib/geo2nginx.pl) vendor/nginx-1.9.12/contrib/unicode2nginx/koi-utf (from vendor/nginx-1.9.11/contrib/unicode2nginx/koi-utf) vendor/nginx-1.9.12/contrib/unicode2nginx/unicode-to-nginx.pl (from vendor/nginx-1.9.11/contrib/unicode2nginx/unicode-to-nginx.pl) vendor/nginx-1.9.12/contrib/unicode2nginx/win-utf (from vendor/nginx-1.9.11/contrib/unicode2nginx/win-utf) vendor/nginx-1.9.12/contrib/vim/ftdetect/nginx.vim (from vendor/nginx-1.9.11/contrib/vim/ftdetect/nginx.vim) vendor/nginx-1.9.12/contrib/vim/indent/nginx.vim (from vendor/nginx-1.9.11/contrib/vim/indent/nginx.vim) vendor/nginx-1.9.12/contrib/vim/syntax/nginx.vim (from vendor/nginx-1.9.11/contrib/vim/syntax/nginx.vim) vendor/nginx-1.9.12/docs/GNUmakefile (from vendor/nginx-1.9.11/docs/GNUmakefile) vendor/nginx-1.9.12/docs/dtd/change_log_conf.dtd (from vendor/nginx-1.9.11/docs/dtd/change_log_conf.dtd) vendor/nginx-1.9.12/docs/dtd/changes.dtd (from vendor/nginx-1.9.11/docs/dtd/changes.dtd) vendor/nginx-1.9.12/docs/html/50x.html (from vendor/nginx-1.9.11/docs/html/50x.html) vendor/nginx-1.9.12/docs/html/index.html (from vendor/nginx-1.9.11/docs/html/index.html) vendor/nginx-1.9.12/docs/man/nginx.8 (from vendor/nginx-1.9.11/docs/man/nginx.8) vendor/nginx-1.9.12/docs/text/LICENSE (from vendor/nginx-1.9.11/docs/text/LICENSE) vendor/nginx-1.9.12/docs/text/README (from vendor/nginx-1.9.11/docs/text/README) vendor/nginx-1.9.12/docs/xml/change_log_conf.xml (from vendor/nginx-1.9.11/docs/xml/change_log_conf.xml) vendor/nginx-1.9.12/docs/xml/nginx/changes.xml (from vendor/nginx-1.9.11/docs/xml/nginx/changes.xml) vendor/nginx-1.9.12/docs/xsls/changes.xsls (from vendor/nginx-1.9.11/docs/xsls/changes.xsls) vendor/nginx-1.9.12/docs/xslt/changes.xslt (from vendor/nginx-1.9.11/docs/xslt/changes.xslt) vendor/nginx-1.9.12/misc/GNUmakefile (from vendor/nginx-1.9.11/misc/GNUmakefile) vendor/nginx-1.9.12/misc/README (from vendor/nginx-1.9.11/misc/README) vendor/nginx-1.9.12/src/core/nginx.c (from vendor/nginx-1.9.11/src/core/nginx.c) vendor/nginx-1.9.12/src/core/nginx.h (from vendor/nginx-1.9.11/src/core/nginx.h) vendor/nginx-1.9.12/src/core/ngx_array.c (from vendor/nginx-1.9.11/src/core/ngx_array.c) vendor/nginx-1.9.12/src/core/ngx_array.h (from vendor/nginx-1.9.11/src/core/ngx_array.h) vendor/nginx-1.9.12/src/core/ngx_buf.c (from vendor/nginx-1.9.11/src/core/ngx_buf.c) vendor/nginx-1.9.12/src/core/ngx_buf.h (from vendor/nginx-1.9.11/src/core/ngx_buf.h) vendor/nginx-1.9.12/src/core/ngx_conf_file.c (from vendor/nginx-1.9.11/src/core/ngx_conf_file.c) vendor/nginx-1.9.12/src/core/ngx_conf_file.h (from vendor/nginx-1.9.11/src/core/ngx_conf_file.h) vendor/nginx-1.9.12/src/core/ngx_config.h (from vendor/nginx-1.9.11/src/core/ngx_config.h) vendor/nginx-1.9.12/src/core/ngx_connection.c (from vendor/nginx-1.9.11/src/core/ngx_connection.c) vendor/nginx-1.9.12/src/core/ngx_connection.h (from vendor/nginx-1.9.11/src/core/ngx_connection.h) vendor/nginx-1.9.12/src/core/ngx_core.h (from vendor/nginx-1.9.11/src/core/ngx_core.h) vendor/nginx-1.9.12/src/core/ngx_cpuinfo.c (from vendor/nginx-1.9.11/src/core/ngx_cpuinfo.c) vendor/nginx-1.9.12/src/core/ngx_crc.h (from vendor/nginx-1.9.11/src/core/ngx_crc.h) vendor/nginx-1.9.12/src/core/ngx_crc32.c (from vendor/nginx-1.9.11/src/core/ngx_crc32.c) vendor/nginx-1.9.12/src/core/ngx_crc32.h (from vendor/nginx-1.9.11/src/core/ngx_crc32.h) vendor/nginx-1.9.12/src/core/ngx_crypt.c (from vendor/nginx-1.9.11/src/core/ngx_crypt.c) vendor/nginx-1.9.12/src/core/ngx_crypt.h (from vendor/nginx-1.9.11/src/core/ngx_crypt.h) vendor/nginx-1.9.12/src/core/ngx_cycle.c (from vendor/nginx-1.9.11/src/core/ngx_cycle.c) vendor/nginx-1.9.12/src/core/ngx_cycle.h (from vendor/nginx-1.9.11/src/core/ngx_cycle.h) vendor/nginx-1.9.12/src/core/ngx_file.c (from vendor/nginx-1.9.11/src/core/ngx_file.c) vendor/nginx-1.9.12/src/core/ngx_file.h (from vendor/nginx-1.9.11/src/core/ngx_file.h) vendor/nginx-1.9.12/src/core/ngx_hash.c (from vendor/nginx-1.9.11/src/core/ngx_hash.c) vendor/nginx-1.9.12/src/core/ngx_hash.h (from vendor/nginx-1.9.11/src/core/ngx_hash.h) vendor/nginx-1.9.12/src/core/ngx_inet.c (from vendor/nginx-1.9.11/src/core/ngx_inet.c) vendor/nginx-1.9.12/src/core/ngx_inet.h (from vendor/nginx-1.9.11/src/core/ngx_inet.h) vendor/nginx-1.9.12/src/core/ngx_list.c (from vendor/nginx-1.9.11/src/core/ngx_list.c) vendor/nginx-1.9.12/src/core/ngx_list.h (from vendor/nginx-1.9.11/src/core/ngx_list.h) vendor/nginx-1.9.12/src/core/ngx_log.c (from vendor/nginx-1.9.11/src/core/ngx_log.c) vendor/nginx-1.9.12/src/core/ngx_log.h (from vendor/nginx-1.9.11/src/core/ngx_log.h) vendor/nginx-1.9.12/src/core/ngx_md5.c (from vendor/nginx-1.9.11/src/core/ngx_md5.c) vendor/nginx-1.9.12/src/core/ngx_md5.h (from vendor/nginx-1.9.11/src/core/ngx_md5.h) vendor/nginx-1.9.12/src/core/ngx_module.c (from vendor/nginx-1.9.11/src/core/ngx_module.c) vendor/nginx-1.9.12/src/core/ngx_module.h (from vendor/nginx-1.9.11/src/core/ngx_module.h) vendor/nginx-1.9.12/src/core/ngx_murmurhash.c (from vendor/nginx-1.9.11/src/core/ngx_murmurhash.c) vendor/nginx-1.9.12/src/core/ngx_murmurhash.h (from vendor/nginx-1.9.11/src/core/ngx_murmurhash.h) vendor/nginx-1.9.12/src/core/ngx_open_file_cache.c (from vendor/nginx-1.9.11/src/core/ngx_open_file_cache.c) vendor/nginx-1.9.12/src/core/ngx_open_file_cache.h (from vendor/nginx-1.9.11/src/core/ngx_open_file_cache.h) vendor/nginx-1.9.12/src/core/ngx_output_chain.c (from vendor/nginx-1.9.11/src/core/ngx_output_chain.c) vendor/nginx-1.9.12/src/core/ngx_palloc.c (from vendor/nginx-1.9.11/src/core/ngx_palloc.c) vendor/nginx-1.9.12/src/core/ngx_palloc.h (from vendor/nginx-1.9.11/src/core/ngx_palloc.h) vendor/nginx-1.9.12/src/core/ngx_parse.c (from vendor/nginx-1.9.11/src/core/ngx_parse.c) vendor/nginx-1.9.12/src/core/ngx_parse.h (from vendor/nginx-1.9.11/src/core/ngx_parse.h) vendor/nginx-1.9.12/src/core/ngx_parse_time.c (from vendor/nginx-1.9.11/src/core/ngx_parse_time.c) vendor/nginx-1.9.12/src/core/ngx_parse_time.h (from vendor/nginx-1.9.11/src/core/ngx_parse_time.h) vendor/nginx-1.9.12/src/core/ngx_proxy_protocol.c (from vendor/nginx-1.9.11/src/core/ngx_proxy_protocol.c) vendor/nginx-1.9.12/src/core/ngx_proxy_protocol.h (from vendor/nginx-1.9.11/src/core/ngx_proxy_protocol.h) vendor/nginx-1.9.12/src/core/ngx_queue.c (from vendor/nginx-1.9.11/src/core/ngx_queue.c) vendor/nginx-1.9.12/src/core/ngx_queue.h (from vendor/nginx-1.9.11/src/core/ngx_queue.h) vendor/nginx-1.9.12/src/core/ngx_radix_tree.c (from vendor/nginx-1.9.11/src/core/ngx_radix_tree.c) vendor/nginx-1.9.12/src/core/ngx_radix_tree.h (from vendor/nginx-1.9.11/src/core/ngx_radix_tree.h) vendor/nginx-1.9.12/src/core/ngx_rbtree.c (from vendor/nginx-1.9.11/src/core/ngx_rbtree.c) vendor/nginx-1.9.12/src/core/ngx_rbtree.h (from vendor/nginx-1.9.11/src/core/ngx_rbtree.h) vendor/nginx-1.9.12/src/core/ngx_regex.c (from vendor/nginx-1.9.11/src/core/ngx_regex.c) vendor/nginx-1.9.12/src/core/ngx_regex.h (from vendor/nginx-1.9.11/src/core/ngx_regex.h) vendor/nginx-1.9.12/src/core/ngx_resolver.c (from vendor/nginx-1.9.11/src/core/ngx_resolver.c) vendor/nginx-1.9.12/src/core/ngx_resolver.h (from vendor/nginx-1.9.11/src/core/ngx_resolver.h) vendor/nginx-1.9.12/src/core/ngx_rwlock.c (from vendor/nginx-1.9.11/src/core/ngx_rwlock.c) vendor/nginx-1.9.12/src/core/ngx_rwlock.h (from vendor/nginx-1.9.11/src/core/ngx_rwlock.h) vendor/nginx-1.9.12/src/core/ngx_sha1.h (from vendor/nginx-1.9.11/src/core/ngx_sha1.h) vendor/nginx-1.9.12/src/core/ngx_shmtx.c (from vendor/nginx-1.9.11/src/core/ngx_shmtx.c) vendor/nginx-1.9.12/src/core/ngx_shmtx.h (from vendor/nginx-1.9.11/src/core/ngx_shmtx.h) vendor/nginx-1.9.12/src/core/ngx_slab.c (from vendor/nginx-1.9.11/src/core/ngx_slab.c) vendor/nginx-1.9.12/src/core/ngx_slab.h (from vendor/nginx-1.9.11/src/core/ngx_slab.h) vendor/nginx-1.9.12/src/core/ngx_spinlock.c (from vendor/nginx-1.9.11/src/core/ngx_spinlock.c) vendor/nginx-1.9.12/src/core/ngx_string.c (from vendor/nginx-1.9.11/src/core/ngx_string.c) vendor/nginx-1.9.12/src/core/ngx_string.h (from vendor/nginx-1.9.11/src/core/ngx_string.h) vendor/nginx-1.9.12/src/core/ngx_syslog.c (from vendor/nginx-1.9.11/src/core/ngx_syslog.c) vendor/nginx-1.9.12/src/core/ngx_syslog.h (from vendor/nginx-1.9.11/src/core/ngx_syslog.h) vendor/nginx-1.9.12/src/core/ngx_thread_pool.c (from vendor/nginx-1.9.11/src/core/ngx_thread_pool.c) vendor/nginx-1.9.12/src/core/ngx_thread_pool.h (from vendor/nginx-1.9.11/src/core/ngx_thread_pool.h) vendor/nginx-1.9.12/src/core/ngx_times.c (from vendor/nginx-1.9.11/src/core/ngx_times.c) vendor/nginx-1.9.12/src/core/ngx_times.h (from vendor/nginx-1.9.11/src/core/ngx_times.h) vendor/nginx-1.9.12/src/event/modules/ngx_devpoll_module.c (from vendor/nginx-1.9.11/src/event/modules/ngx_devpoll_module.c) vendor/nginx-1.9.12/src/event/modules/ngx_epoll_module.c (from vendor/nginx-1.9.11/src/event/modules/ngx_epoll_module.c) vendor/nginx-1.9.12/src/event/modules/ngx_eventport_module.c (from vendor/nginx-1.9.11/src/event/modules/ngx_eventport_module.c) vendor/nginx-1.9.12/src/event/modules/ngx_iocp_module.c (from vendor/nginx-1.9.11/src/event/modules/ngx_iocp_module.c) vendor/nginx-1.9.12/src/event/modules/ngx_iocp_module.h (from vendor/nginx-1.9.11/src/event/modules/ngx_iocp_module.h) vendor/nginx-1.9.12/src/event/modules/ngx_kqueue_module.c (from vendor/nginx-1.9.11/src/event/modules/ngx_kqueue_module.c) vendor/nginx-1.9.12/src/event/modules/ngx_poll_module.c (from vendor/nginx-1.9.11/src/event/modules/ngx_poll_module.c) vendor/nginx-1.9.12/src/event/modules/ngx_select_module.c (from vendor/nginx-1.9.11/src/event/modules/ngx_select_module.c) vendor/nginx-1.9.12/src/event/modules/ngx_win32_select_module.c (from vendor/nginx-1.9.11/src/event/modules/ngx_win32_select_module.c) vendor/nginx-1.9.12/src/event/ngx_event.c (from vendor/nginx-1.9.11/src/event/ngx_event.c) vendor/nginx-1.9.12/src/event/ngx_event.h (from vendor/nginx-1.9.11/src/event/ngx_event.h) vendor/nginx-1.9.12/src/event/ngx_event_accept.c (from vendor/nginx-1.9.11/src/event/ngx_event_accept.c) vendor/nginx-1.9.12/src/event/ngx_event_acceptex.c (from vendor/nginx-1.9.11/src/event/ngx_event_acceptex.c) vendor/nginx-1.9.12/src/event/ngx_event_connect.c (from vendor/nginx-1.9.11/src/event/ngx_event_connect.c) vendor/nginx-1.9.12/src/event/ngx_event_connect.h (from vendor/nginx-1.9.11/src/event/ngx_event_connect.h) vendor/nginx-1.9.12/src/event/ngx_event_connectex.c (from vendor/nginx-1.9.11/src/event/ngx_event_connectex.c) vendor/nginx-1.9.12/src/event/ngx_event_openssl.c (from vendor/nginx-1.9.11/src/event/ngx_event_openssl.c) vendor/nginx-1.9.12/src/event/ngx_event_openssl.h (from vendor/nginx-1.9.11/src/event/ngx_event_openssl.h) vendor/nginx-1.9.12/src/event/ngx_event_openssl_stapling.c (from vendor/nginx-1.9.11/src/event/ngx_event_openssl_stapling.c) vendor/nginx-1.9.12/src/event/ngx_event_pipe.c (from vendor/nginx-1.9.11/src/event/ngx_event_pipe.c) vendor/nginx-1.9.12/src/event/ngx_event_pipe.h (from vendor/nginx-1.9.11/src/event/ngx_event_pipe.h) vendor/nginx-1.9.12/src/event/ngx_event_posted.c (from vendor/nginx-1.9.11/src/event/ngx_event_posted.c) vendor/nginx-1.9.12/src/event/ngx_event_posted.h (from vendor/nginx-1.9.11/src/event/ngx_event_posted.h) vendor/nginx-1.9.12/src/event/ngx_event_timer.c (from vendor/nginx-1.9.11/src/event/ngx_event_timer.c) vendor/nginx-1.9.12/src/event/ngx_event_timer.h (from vendor/nginx-1.9.11/src/event/ngx_event_timer.h) vendor/nginx-1.9.12/src/http/modules/ngx_http_access_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_access_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_addition_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_addition_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_auth_basic_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_auth_basic_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_auth_request_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_auth_request_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_autoindex_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_autoindex_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_browser_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_browser_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_charset_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_charset_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_chunked_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_chunked_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_dav_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_dav_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_degradation_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_degradation_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_empty_gif_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_empty_gif_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_fastcgi_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_fastcgi_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_flv_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_flv_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_geo_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_geo_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_geoip_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_geoip_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_gunzip_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_gunzip_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_gzip_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_gzip_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_gzip_static_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_gzip_static_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_headers_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_headers_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_image_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_image_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_index_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_index_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_limit_conn_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_limit_conn_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_limit_req_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_limit_req_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_log_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_log_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_map_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_map_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_memcached_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_memcached_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_mp4_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_mp4_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_not_modified_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_not_modified_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_proxy_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_proxy_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_random_index_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_random_index_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_range_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_range_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_realip_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_realip_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_referer_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_referer_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_rewrite_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_rewrite_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_scgi_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_scgi_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_secure_link_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_secure_link_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_slice_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_slice_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_split_clients_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_split_clients_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_ssi_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_ssi_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_ssi_filter_module.h (from vendor/nginx-1.9.11/src/http/modules/ngx_http_ssi_filter_module.h) vendor/nginx-1.9.12/src/http/modules/ngx_http_ssl_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_ssl_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_ssl_module.h (from vendor/nginx-1.9.11/src/http/modules/ngx_http_ssl_module.h) vendor/nginx-1.9.12/src/http/modules/ngx_http_static_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_static_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_stub_status_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_stub_status_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_sub_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_sub_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_hash_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_upstream_hash_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_ip_hash_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_upstream_ip_hash_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_keepalive_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_upstream_keepalive_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_least_conn_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_upstream_least_conn_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_zone_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_upstream_zone_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_userid_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_userid_filter_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_uwsgi_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_uwsgi_module.c) vendor/nginx-1.9.12/src/http/modules/ngx_http_xslt_filter_module.c (from vendor/nginx-1.9.11/src/http/modules/ngx_http_xslt_filter_module.c) vendor/nginx-1.9.12/src/http/modules/perl/Makefile.PL (from vendor/nginx-1.9.11/src/http/modules/perl/Makefile.PL) vendor/nginx-1.9.12/src/http/modules/perl/nginx.pm (from vendor/nginx-1.9.11/src/http/modules/perl/nginx.pm) vendor/nginx-1.9.12/src/http/modules/perl/nginx.xs (from vendor/nginx-1.9.11/src/http/modules/perl/nginx.xs) vendor/nginx-1.9.12/src/http/modules/perl/ngx_http_perl_module.c (from vendor/nginx-1.9.11/src/http/modules/perl/ngx_http_perl_module.c) vendor/nginx-1.9.12/src/http/modules/perl/ngx_http_perl_module.h (from vendor/nginx-1.9.11/src/http/modules/perl/ngx_http_perl_module.h) vendor/nginx-1.9.12/src/http/modules/perl/typemap (from vendor/nginx-1.9.11/src/http/modules/perl/typemap) vendor/nginx-1.9.12/src/http/ngx_http.c (from vendor/nginx-1.9.11/src/http/ngx_http.c) vendor/nginx-1.9.12/src/http/ngx_http.h (from vendor/nginx-1.9.11/src/http/ngx_http.h) vendor/nginx-1.9.12/src/http/ngx_http_cache.h (from vendor/nginx-1.9.11/src/http/ngx_http_cache.h) vendor/nginx-1.9.12/src/http/ngx_http_config.h (from vendor/nginx-1.9.11/src/http/ngx_http_config.h) vendor/nginx-1.9.12/src/http/ngx_http_copy_filter_module.c (from vendor/nginx-1.9.11/src/http/ngx_http_copy_filter_module.c) vendor/nginx-1.9.12/src/http/ngx_http_core_module.c (from vendor/nginx-1.9.11/src/http/ngx_http_core_module.c) vendor/nginx-1.9.12/src/http/ngx_http_core_module.h (from vendor/nginx-1.9.11/src/http/ngx_http_core_module.h) vendor/nginx-1.9.12/src/http/ngx_http_file_cache.c (from vendor/nginx-1.9.11/src/http/ngx_http_file_cache.c) vendor/nginx-1.9.12/src/http/ngx_http_header_filter_module.c (from vendor/nginx-1.9.11/src/http/ngx_http_header_filter_module.c) vendor/nginx-1.9.12/src/http/ngx_http_parse.c (from vendor/nginx-1.9.11/src/http/ngx_http_parse.c) vendor/nginx-1.9.12/src/http/ngx_http_postpone_filter_module.c (from vendor/nginx-1.9.11/src/http/ngx_http_postpone_filter_module.c) vendor/nginx-1.9.12/src/http/ngx_http_request.c (from vendor/nginx-1.9.11/src/http/ngx_http_request.c) vendor/nginx-1.9.12/src/http/ngx_http_request.h (from vendor/nginx-1.9.11/src/http/ngx_http_request.h) vendor/nginx-1.9.12/src/http/ngx_http_request_body.c (from vendor/nginx-1.9.11/src/http/ngx_http_request_body.c) vendor/nginx-1.9.12/src/http/ngx_http_script.c (from vendor/nginx-1.9.11/src/http/ngx_http_script.c) vendor/nginx-1.9.12/src/http/ngx_http_script.h (from vendor/nginx-1.9.11/src/http/ngx_http_script.h) vendor/nginx-1.9.12/src/http/ngx_http_special_response.c (from vendor/nginx-1.9.11/src/http/ngx_http_special_response.c) vendor/nginx-1.9.12/src/http/ngx_http_upstream.c (from vendor/nginx-1.9.11/src/http/ngx_http_upstream.c) vendor/nginx-1.9.12/src/http/ngx_http_upstream.h (from vendor/nginx-1.9.11/src/http/ngx_http_upstream.h) vendor/nginx-1.9.12/src/http/ngx_http_upstream_round_robin.c (from vendor/nginx-1.9.11/src/http/ngx_http_upstream_round_robin.c) vendor/nginx-1.9.12/src/http/ngx_http_upstream_round_robin.h (from vendor/nginx-1.9.11/src/http/ngx_http_upstream_round_robin.h) vendor/nginx-1.9.12/src/http/ngx_http_variables.c (from vendor/nginx-1.9.11/src/http/ngx_http_variables.c) vendor/nginx-1.9.12/src/http/ngx_http_variables.h (from vendor/nginx-1.9.11/src/http/ngx_http_variables.h) vendor/nginx-1.9.12/src/http/ngx_http_write_filter_module.c (from vendor/nginx-1.9.11/src/http/ngx_http_write_filter_module.c) vendor/nginx-1.9.12/src/http/v2/ngx_http_v2.c (from vendor/nginx-1.9.11/src/http/v2/ngx_http_v2.c) vendor/nginx-1.9.12/src/http/v2/ngx_http_v2.h (from vendor/nginx-1.9.11/src/http/v2/ngx_http_v2.h) vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_filter_module.c (from vendor/nginx-1.9.11/src/http/v2/ngx_http_v2_filter_module.c) vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_huff_decode.c (from vendor/nginx-1.9.11/src/http/v2/ngx_http_v2_huff_decode.c) vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_module.c (from vendor/nginx-1.9.11/src/http/v2/ngx_http_v2_module.c) vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_module.h (from vendor/nginx-1.9.11/src/http/v2/ngx_http_v2_module.h) vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_table.c (from vendor/nginx-1.9.11/src/http/v2/ngx_http_v2_table.c) vendor/nginx-1.9.12/src/mail/ngx_mail.c (from vendor/nginx-1.9.11/src/mail/ngx_mail.c) vendor/nginx-1.9.12/src/mail/ngx_mail.h (from vendor/nginx-1.9.11/src/mail/ngx_mail.h) vendor/nginx-1.9.12/src/mail/ngx_mail_auth_http_module.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_auth_http_module.c) vendor/nginx-1.9.12/src/mail/ngx_mail_core_module.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_core_module.c) vendor/nginx-1.9.12/src/mail/ngx_mail_handler.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_handler.c) vendor/nginx-1.9.12/src/mail/ngx_mail_imap_handler.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_imap_handler.c) vendor/nginx-1.9.12/src/mail/ngx_mail_imap_module.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_imap_module.c) vendor/nginx-1.9.12/src/mail/ngx_mail_imap_module.h (from vendor/nginx-1.9.11/src/mail/ngx_mail_imap_module.h) vendor/nginx-1.9.12/src/mail/ngx_mail_parse.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_parse.c) vendor/nginx-1.9.12/src/mail/ngx_mail_pop3_handler.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_pop3_handler.c) vendor/nginx-1.9.12/src/mail/ngx_mail_pop3_module.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_pop3_module.c) vendor/nginx-1.9.12/src/mail/ngx_mail_pop3_module.h (from vendor/nginx-1.9.11/src/mail/ngx_mail_pop3_module.h) vendor/nginx-1.9.12/src/mail/ngx_mail_proxy_module.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_proxy_module.c) vendor/nginx-1.9.12/src/mail/ngx_mail_smtp_handler.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_smtp_handler.c) vendor/nginx-1.9.12/src/mail/ngx_mail_smtp_module.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_smtp_module.c) vendor/nginx-1.9.12/src/mail/ngx_mail_smtp_module.h (from vendor/nginx-1.9.11/src/mail/ngx_mail_smtp_module.h) vendor/nginx-1.9.12/src/mail/ngx_mail_ssl_module.c (from vendor/nginx-1.9.11/src/mail/ngx_mail_ssl_module.c) vendor/nginx-1.9.12/src/mail/ngx_mail_ssl_module.h (from vendor/nginx-1.9.11/src/mail/ngx_mail_ssl_module.h) vendor/nginx-1.9.12/src/misc/ngx_cpp_test_module.cpp (from vendor/nginx-1.9.11/src/misc/ngx_cpp_test_module.cpp) vendor/nginx-1.9.12/src/misc/ngx_google_perftools_module.c (from vendor/nginx-1.9.11/src/misc/ngx_google_perftools_module.c) vendor/nginx-1.9.12/src/mysql/config (from vendor/nginx-1.9.11/src/mysql/config) vendor/nginx-1.9.12/src/mysql/ngx_http_mysql_test.c (from vendor/nginx-1.9.11/src/mysql/ngx_http_mysql_test.c) vendor/nginx-1.9.12/src/mysql/ngx_mysql.c (from vendor/nginx-1.9.11/src/mysql/ngx_mysql.c) vendor/nginx-1.9.12/src/mysql/ngx_mysql.h (from vendor/nginx-1.9.11/src/mysql/ngx_mysql.h) vendor/nginx-1.9.12/src/os/unix/ngx_alloc.c (from vendor/nginx-1.9.11/src/os/unix/ngx_alloc.c) vendor/nginx-1.9.12/src/os/unix/ngx_alloc.h (from vendor/nginx-1.9.11/src/os/unix/ngx_alloc.h) vendor/nginx-1.9.12/src/os/unix/ngx_atomic.h (from vendor/nginx-1.9.11/src/os/unix/ngx_atomic.h) vendor/nginx-1.9.12/src/os/unix/ngx_channel.c (from vendor/nginx-1.9.11/src/os/unix/ngx_channel.c) vendor/nginx-1.9.12/src/os/unix/ngx_channel.h (from vendor/nginx-1.9.11/src/os/unix/ngx_channel.h) vendor/nginx-1.9.12/src/os/unix/ngx_daemon.c (from vendor/nginx-1.9.11/src/os/unix/ngx_daemon.c) vendor/nginx-1.9.12/src/os/unix/ngx_darwin.h (from vendor/nginx-1.9.11/src/os/unix/ngx_darwin.h) vendor/nginx-1.9.12/src/os/unix/ngx_darwin_config.h (from vendor/nginx-1.9.11/src/os/unix/ngx_darwin_config.h) vendor/nginx-1.9.12/src/os/unix/ngx_darwin_init.c (from vendor/nginx-1.9.11/src/os/unix/ngx_darwin_init.c) vendor/nginx-1.9.12/src/os/unix/ngx_darwin_sendfile_chain.c (from vendor/nginx-1.9.11/src/os/unix/ngx_darwin_sendfile_chain.c) vendor/nginx-1.9.12/src/os/unix/ngx_dlopen.c (from vendor/nginx-1.9.11/src/os/unix/ngx_dlopen.c) vendor/nginx-1.9.12/src/os/unix/ngx_dlopen.h (from vendor/nginx-1.9.11/src/os/unix/ngx_dlopen.h) vendor/nginx-1.9.12/src/os/unix/ngx_errno.c (from vendor/nginx-1.9.11/src/os/unix/ngx_errno.c) vendor/nginx-1.9.12/src/os/unix/ngx_errno.h (from vendor/nginx-1.9.11/src/os/unix/ngx_errno.h) vendor/nginx-1.9.12/src/os/unix/ngx_file_aio_read.c (from vendor/nginx-1.9.11/src/os/unix/ngx_file_aio_read.c) vendor/nginx-1.9.12/src/os/unix/ngx_files.c (from vendor/nginx-1.9.11/src/os/unix/ngx_files.c) vendor/nginx-1.9.12/src/os/unix/ngx_files.h (from vendor/nginx-1.9.11/src/os/unix/ngx_files.h) vendor/nginx-1.9.12/src/os/unix/ngx_freebsd.h (from vendor/nginx-1.9.11/src/os/unix/ngx_freebsd.h) vendor/nginx-1.9.12/src/os/unix/ngx_freebsd_config.h (from vendor/nginx-1.9.11/src/os/unix/ngx_freebsd_config.h) vendor/nginx-1.9.12/src/os/unix/ngx_freebsd_init.c (from vendor/nginx-1.9.11/src/os/unix/ngx_freebsd_init.c) vendor/nginx-1.9.12/src/os/unix/ngx_freebsd_sendfile_chain.c (from vendor/nginx-1.9.11/src/os/unix/ngx_freebsd_sendfile_chain.c) vendor/nginx-1.9.12/src/os/unix/ngx_gcc_atomic_amd64.h (from vendor/nginx-1.9.11/src/os/unix/ngx_gcc_atomic_amd64.h) vendor/nginx-1.9.12/src/os/unix/ngx_gcc_atomic_ppc.h (from vendor/nginx-1.9.11/src/os/unix/ngx_gcc_atomic_ppc.h) vendor/nginx-1.9.12/src/os/unix/ngx_gcc_atomic_sparc64.h (from vendor/nginx-1.9.11/src/os/unix/ngx_gcc_atomic_sparc64.h) vendor/nginx-1.9.12/src/os/unix/ngx_gcc_atomic_x86.h (from vendor/nginx-1.9.11/src/os/unix/ngx_gcc_atomic_x86.h) vendor/nginx-1.9.12/src/os/unix/ngx_linux.h (from vendor/nginx-1.9.11/src/os/unix/ngx_linux.h) vendor/nginx-1.9.12/src/os/unix/ngx_linux_aio_read.c (from vendor/nginx-1.9.11/src/os/unix/ngx_linux_aio_read.c) vendor/nginx-1.9.12/src/os/unix/ngx_linux_config.h (from vendor/nginx-1.9.11/src/os/unix/ngx_linux_config.h) vendor/nginx-1.9.12/src/os/unix/ngx_linux_init.c (from vendor/nginx-1.9.11/src/os/unix/ngx_linux_init.c) vendor/nginx-1.9.12/src/os/unix/ngx_linux_sendfile_chain.c (from vendor/nginx-1.9.11/src/os/unix/ngx_linux_sendfile_chain.c) vendor/nginx-1.9.12/src/os/unix/ngx_os.h (from vendor/nginx-1.9.11/src/os/unix/ngx_os.h) vendor/nginx-1.9.12/src/os/unix/ngx_posix_config.h (from vendor/nginx-1.9.11/src/os/unix/ngx_posix_config.h) vendor/nginx-1.9.12/src/os/unix/ngx_posix_init.c (from vendor/nginx-1.9.11/src/os/unix/ngx_posix_init.c) vendor/nginx-1.9.12/src/os/unix/ngx_process.c (from vendor/nginx-1.9.11/src/os/unix/ngx_process.c) vendor/nginx-1.9.12/src/os/unix/ngx_process.h (from vendor/nginx-1.9.11/src/os/unix/ngx_process.h) vendor/nginx-1.9.12/src/os/unix/ngx_process_cycle.c (from vendor/nginx-1.9.11/src/os/unix/ngx_process_cycle.c) vendor/nginx-1.9.12/src/os/unix/ngx_process_cycle.h (from vendor/nginx-1.9.11/src/os/unix/ngx_process_cycle.h) vendor/nginx-1.9.12/src/os/unix/ngx_readv_chain.c (from vendor/nginx-1.9.11/src/os/unix/ngx_readv_chain.c) vendor/nginx-1.9.12/src/os/unix/ngx_recv.c (from vendor/nginx-1.9.11/src/os/unix/ngx_recv.c) vendor/nginx-1.9.12/src/os/unix/ngx_send.c (from vendor/nginx-1.9.11/src/os/unix/ngx_send.c) vendor/nginx-1.9.12/src/os/unix/ngx_setaffinity.h (from vendor/nginx-1.9.11/src/os/unix/ngx_setaffinity.h) vendor/nginx-1.9.12/src/os/unix/ngx_setproctitle.c (from vendor/nginx-1.9.11/src/os/unix/ngx_setproctitle.c) vendor/nginx-1.9.12/src/os/unix/ngx_setproctitle.h (from vendor/nginx-1.9.11/src/os/unix/ngx_setproctitle.h) vendor/nginx-1.9.12/src/os/unix/ngx_shmem.c (from vendor/nginx-1.9.11/src/os/unix/ngx_shmem.c) vendor/nginx-1.9.12/src/os/unix/ngx_shmem.h (from vendor/nginx-1.9.11/src/os/unix/ngx_shmem.h) vendor/nginx-1.9.12/src/os/unix/ngx_socket.c (from vendor/nginx-1.9.11/src/os/unix/ngx_socket.c) vendor/nginx-1.9.12/src/os/unix/ngx_socket.h (from vendor/nginx-1.9.11/src/os/unix/ngx_socket.h) vendor/nginx-1.9.12/src/os/unix/ngx_solaris.h (from vendor/nginx-1.9.11/src/os/unix/ngx_solaris.h) vendor/nginx-1.9.12/src/os/unix/ngx_solaris_config.h (from vendor/nginx-1.9.11/src/os/unix/ngx_solaris_config.h) vendor/nginx-1.9.12/src/os/unix/ngx_solaris_init.c (from vendor/nginx-1.9.11/src/os/unix/ngx_solaris_init.c) vendor/nginx-1.9.12/src/os/unix/ngx_solaris_sendfilev_chain.c (from vendor/nginx-1.9.11/src/os/unix/ngx_solaris_sendfilev_chain.c) vendor/nginx-1.9.12/src/os/unix/ngx_sunpro_amd64.il (from vendor/nginx-1.9.11/src/os/unix/ngx_sunpro_amd64.il) vendor/nginx-1.9.12/src/os/unix/ngx_sunpro_atomic_sparc64.h (from vendor/nginx-1.9.11/src/os/unix/ngx_sunpro_atomic_sparc64.h) vendor/nginx-1.9.12/src/os/unix/ngx_sunpro_sparc64.il (from vendor/nginx-1.9.11/src/os/unix/ngx_sunpro_sparc64.il) vendor/nginx-1.9.12/src/os/unix/ngx_sunpro_x86.il (from vendor/nginx-1.9.11/src/os/unix/ngx_sunpro_x86.il) vendor/nginx-1.9.12/src/os/unix/ngx_thread.h (from vendor/nginx-1.9.11/src/os/unix/ngx_thread.h) vendor/nginx-1.9.12/src/os/unix/ngx_thread_cond.c (from vendor/nginx-1.9.11/src/os/unix/ngx_thread_cond.c) vendor/nginx-1.9.12/src/os/unix/ngx_thread_id.c (from vendor/nginx-1.9.11/src/os/unix/ngx_thread_id.c) vendor/nginx-1.9.12/src/os/unix/ngx_thread_mutex.c (from vendor/nginx-1.9.11/src/os/unix/ngx_thread_mutex.c) vendor/nginx-1.9.12/src/os/unix/ngx_time.c (from vendor/nginx-1.9.11/src/os/unix/ngx_time.c) vendor/nginx-1.9.12/src/os/unix/ngx_time.h (from vendor/nginx-1.9.11/src/os/unix/ngx_time.h) vendor/nginx-1.9.12/src/os/unix/ngx_udp_recv.c (from vendor/nginx-1.9.11/src/os/unix/ngx_udp_recv.c) vendor/nginx-1.9.12/src/os/unix/ngx_user.c (from vendor/nginx-1.9.11/src/os/unix/ngx_user.c) vendor/nginx-1.9.12/src/os/unix/ngx_user.h (from vendor/nginx-1.9.11/src/os/unix/ngx_user.h) vendor/nginx-1.9.12/src/os/unix/ngx_writev_chain.c (from vendor/nginx-1.9.11/src/os/unix/ngx_writev_chain.c) vendor/nginx-1.9.12/src/os/win32/nginx.ico (from vendor/nginx-1.9.11/src/os/win32/nginx.ico) vendor/nginx-1.9.12/src/os/win32/nginx.rc (from vendor/nginx-1.9.11/src/os/win32/nginx.rc) vendor/nginx-1.9.12/src/os/win32/nginx_icon16.xpm (from vendor/nginx-1.9.11/src/os/win32/nginx_icon16.xpm) vendor/nginx-1.9.12/src/os/win32/nginx_icon32.xpm (from vendor/nginx-1.9.11/src/os/win32/nginx_icon32.xpm) vendor/nginx-1.9.12/src/os/win32/nginx_icon48.xpm (from vendor/nginx-1.9.11/src/os/win32/nginx_icon48.xpm) vendor/nginx-1.9.12/src/os/win32/ngx_alloc.c (from vendor/nginx-1.9.11/src/os/win32/ngx_alloc.c) vendor/nginx-1.9.12/src/os/win32/ngx_alloc.h (from vendor/nginx-1.9.11/src/os/win32/ngx_alloc.h) vendor/nginx-1.9.12/src/os/win32/ngx_atomic.h (from vendor/nginx-1.9.11/src/os/win32/ngx_atomic.h) vendor/nginx-1.9.12/src/os/win32/ngx_dlopen.c (from vendor/nginx-1.9.11/src/os/win32/ngx_dlopen.c) vendor/nginx-1.9.12/src/os/win32/ngx_dlopen.h (from vendor/nginx-1.9.11/src/os/win32/ngx_dlopen.h) vendor/nginx-1.9.12/src/os/win32/ngx_errno.c (from vendor/nginx-1.9.11/src/os/win32/ngx_errno.c) vendor/nginx-1.9.12/src/os/win32/ngx_errno.h (from vendor/nginx-1.9.11/src/os/win32/ngx_errno.h) vendor/nginx-1.9.12/src/os/win32/ngx_event_log.c (from vendor/nginx-1.9.11/src/os/win32/ngx_event_log.c) vendor/nginx-1.9.12/src/os/win32/ngx_files.c (from vendor/nginx-1.9.11/src/os/win32/ngx_files.c) vendor/nginx-1.9.12/src/os/win32/ngx_files.h (from vendor/nginx-1.9.11/src/os/win32/ngx_files.h) vendor/nginx-1.9.12/src/os/win32/ngx_os.h (from vendor/nginx-1.9.11/src/os/win32/ngx_os.h) vendor/nginx-1.9.12/src/os/win32/ngx_process.c (from vendor/nginx-1.9.11/src/os/win32/ngx_process.c) vendor/nginx-1.9.12/src/os/win32/ngx_process.h (from vendor/nginx-1.9.11/src/os/win32/ngx_process.h) vendor/nginx-1.9.12/src/os/win32/ngx_process_cycle.c (from vendor/nginx-1.9.11/src/os/win32/ngx_process_cycle.c) vendor/nginx-1.9.12/src/os/win32/ngx_process_cycle.h (from vendor/nginx-1.9.11/src/os/win32/ngx_process_cycle.h) vendor/nginx-1.9.12/src/os/win32/ngx_service.c (from vendor/nginx-1.9.11/src/os/win32/ngx_service.c) vendor/nginx-1.9.12/src/os/win32/ngx_shmem.c (from vendor/nginx-1.9.11/src/os/win32/ngx_shmem.c) vendor/nginx-1.9.12/src/os/win32/ngx_shmem.h (from vendor/nginx-1.9.11/src/os/win32/ngx_shmem.h) vendor/nginx-1.9.12/src/os/win32/ngx_socket.c (from vendor/nginx-1.9.11/src/os/win32/ngx_socket.c) vendor/nginx-1.9.12/src/os/win32/ngx_socket.h (from vendor/nginx-1.9.11/src/os/win32/ngx_socket.h) vendor/nginx-1.9.12/src/os/win32/ngx_stat.c (from vendor/nginx-1.9.11/src/os/win32/ngx_stat.c) vendor/nginx-1.9.12/src/os/win32/ngx_thread.c (from vendor/nginx-1.9.11/src/os/win32/ngx_thread.c) vendor/nginx-1.9.12/src/os/win32/ngx_thread.h (from vendor/nginx-1.9.11/src/os/win32/ngx_thread.h) vendor/nginx-1.9.12/src/os/win32/ngx_time.c (from vendor/nginx-1.9.11/src/os/win32/ngx_time.c) vendor/nginx-1.9.12/src/os/win32/ngx_time.h (from vendor/nginx-1.9.11/src/os/win32/ngx_time.h) vendor/nginx-1.9.12/src/os/win32/ngx_udp_wsarecv.c (from vendor/nginx-1.9.11/src/os/win32/ngx_udp_wsarecv.c) vendor/nginx-1.9.12/src/os/win32/ngx_user.c (from vendor/nginx-1.9.11/src/os/win32/ngx_user.c) vendor/nginx-1.9.12/src/os/win32/ngx_user.h (from vendor/nginx-1.9.11/src/os/win32/ngx_user.h) vendor/nginx-1.9.12/src/os/win32/ngx_win32_config.h (from vendor/nginx-1.9.11/src/os/win32/ngx_win32_config.h) vendor/nginx-1.9.12/src/os/win32/ngx_win32_init.c (from vendor/nginx-1.9.11/src/os/win32/ngx_win32_init.c) vendor/nginx-1.9.12/src/os/win32/ngx_wsarecv.c (from vendor/nginx-1.9.11/src/os/win32/ngx_wsarecv.c) vendor/nginx-1.9.12/src/os/win32/ngx_wsarecv_chain.c (from vendor/nginx-1.9.11/src/os/win32/ngx_wsarecv_chain.c) vendor/nginx-1.9.12/src/os/win32/ngx_wsasend.c (from vendor/nginx-1.9.11/src/os/win32/ngx_wsasend.c) vendor/nginx-1.9.12/src/os/win32/ngx_wsasend_chain.c (from vendor/nginx-1.9.11/src/os/win32/ngx_wsasend_chain.c) vendor/nginx-1.9.12/src/stream/ngx_stream.c (from vendor/nginx-1.9.11/src/stream/ngx_stream.c) vendor/nginx-1.9.12/src/stream/ngx_stream.h (from vendor/nginx-1.9.11/src/stream/ngx_stream.h) vendor/nginx-1.9.12/src/stream/ngx_stream_access_module.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_access_module.c) vendor/nginx-1.9.12/src/stream/ngx_stream_core_module.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_core_module.c) vendor/nginx-1.9.12/src/stream/ngx_stream_handler.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_handler.c) vendor/nginx-1.9.12/src/stream/ngx_stream_limit_conn_module.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_limit_conn_module.c) vendor/nginx-1.9.12/src/stream/ngx_stream_proxy_module.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_proxy_module.c) vendor/nginx-1.9.12/src/stream/ngx_stream_ssl_module.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_ssl_module.c) vendor/nginx-1.9.12/src/stream/ngx_stream_ssl_module.h (from vendor/nginx-1.9.11/src/stream/ngx_stream_ssl_module.h) vendor/nginx-1.9.12/src/stream/ngx_stream_upstream.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_upstream.c) vendor/nginx-1.9.12/src/stream/ngx_stream_upstream.h (from vendor/nginx-1.9.11/src/stream/ngx_stream_upstream.h) vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_hash_module.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_upstream_hash_module.c) vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_least_conn_module.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_upstream_least_conn_module.c) vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_round_robin.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_upstream_round_robin.c) vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_round_robin.h (from vendor/nginx-1.9.11/src/stream/ngx_stream_upstream_round_robin.h) vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_zone_module.c (from vendor/nginx-1.9.11/src/stream/ngx_stream_upstream_zone_module.c) Modified: nginx_version (+1 -1) =================================================================== --- nginx_version 2016-03-25 21:02:44 +0900 (5e9287b) +++ nginx_version 2016-03-25 22:13:23 +0900 (1fe2d37) @@ -1 +1 @@ -1.9.11 +1.9.12 Deleted: vendor/nginx-1.9.11/src/http/v2/ngx_http_v2_huff_encode.c (+0 -10) 100644 =================================================================== --- vendor/nginx-1.9.11/src/http/v2/ngx_http_v2_huff_encode.c 2016-03-25 21:02:44 +0900 (6c412cf) +++ /dev/null @@ -1,10 +0,0 @@ - -/* - * Copyright (C) Nginx, Inc. - * Copyright (C) Valentin V. Bartenev - */ - - -#include <ngx_config.h> -#include <ngx_core.h> -#include <ngx_http.h> Deleted: vendor/nginx-1.9.11/src/os/unix/ngx_setaffinity.c (+0 -69) 100644 =================================================================== --- vendor/nginx-1.9.11/src/os/unix/ngx_setaffinity.c 2016-03-25 21:02:44 +0900 (8f6cf35) +++ /dev/null @@ -1,69 +0,0 @@ - -/* - * Copyright (C) Nginx, Inc. - */ - - -#include <ngx_config.h> -#include <ngx_core.h> - - -#if (NGX_HAVE_CPUSET_SETAFFINITY) - -#include <sys/cpuset.h> - -void -ngx_setaffinity(uint64_t cpu_affinity, ngx_log_t *log) -{ - cpuset_t mask; - ngx_uint_t i; - - ngx_log_error(NGX_LOG_NOTICE, log, 0, - "cpuset_setaffinity(0x%08Xl)", cpu_affinity); - - CPU_ZERO(&mask); - i = 0; - do { - if (cpu_affinity & 1) { - CPU_SET(i, &mask); - } - i++; - cpu_affinity >>= 1; - } while (cpu_affinity); - - if (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, - sizeof(cpuset_t), &mask) == -1) - { - ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, - "cpuset_setaffinity() failed"); - } -} - -#elif (NGX_HAVE_SCHED_SETAFFINITY) - -void -ngx_setaffinity(uint64_t cpu_affinity, ngx_log_t *log) -{ - cpu_set_t mask; - ngx_uint_t i; - - ngx_log_error(NGX_LOG_NOTICE, log, 0, - "sched_setaffinity(0x%08Xl)", cpu_affinity); - - CPU_ZERO(&mask); - i = 0; - do { - if (cpu_affinity & 1) { - CPU_SET(i, &mask); - } - i++; - cpu_affinity >>= 1; - } while (cpu_affinity); - - if (sched_setaffinity(0, sizeof(cpu_set_t), &mask) == -1) { - ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, - "sched_setaffinity() failed"); - } -} - -#endif Renamed: vendor/nginx-1.9.12/auto/cc/acc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/cc/bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/cc/ccc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/cc/clang (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/cc/conf (+10 -0) 95% =================================================================== --- vendor/nginx-1.9.11/auto/cc/conf 2016-03-25 21:02:44 +0900 (35fd39c) +++ vendor/nginx-1.9.12/auto/cc/conf 2016-03-25 22:13:23 +0900 (f2c25ed) @@ -225,6 +225,16 @@ if [ "$NGX_PLATFORM" != win32 ]; then . auto/feature + ngx_feature="gcc builtin 64 bit byteswap" + ngx_feature_name="NGX_HAVE_GCC_BSWAP64" + ngx_feature_run=no + ngx_feature_incs= + ngx_feature_path= + ngx_feature_libs= + ngx_feature_test="__builtin_bswap64(0)" + . auto/feature + + # ngx_feature="inline" # ngx_feature_name= # ngx_feature_run=no Renamed: vendor/nginx-1.9.12/auto/cc/gcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/cc/icc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/cc/msvc (+23 -8) 75% =================================================================== --- vendor/nginx-1.9.11/auto/cc/msvc 2016-03-25 21:02:44 +0900 (e588c48) +++ vendor/nginx-1.9.12/auto/cc/msvc 2016-03-25 22:13:23 +0900 (4eef101) @@ -3,9 +3,24 @@ # Copyright (C) Nginx, Inc. -# MSVC 6.0 SP2 -# MSVC Toolkit 2003 (7.1) -# MSVC 2005 Express Edition SP1 (8.0) +# MSVC 6.0 SP2 cl 12.00 +# MSVC Toolkit 2003 (7.1) cl 13.10 +# MSVC 2005 Express Edition SP1 (8.0) cl 14.00 +# MSVC 2008 Express Edition (9.0) cl 15.00 +# MSVC 2010 (10.0) cl 16.00 +# MSVC 2015 (14.0) cl 19.00 + + +NGX_MSVC_VER=`$NGX_WINE $CC 2>&1 | grep 'Compiler Version' 2>&1 \ + | sed -e 's/^.* Version \(.*\)/\1/'` + +echo " + cl version: $NGX_MSVC_VER" + +have=NGX_COMPILER value="\"cl $NGX_MSVC_VER\"" . auto/define + + +ngx_msvc_ver=`echo $NGX_MSVC_VER | sed -e 's/^\([0-9]*\).*/\1/'` + # optimizations @@ -90,17 +105,17 @@ CORE_LIBS="$CORE_LIBS kernel32.lib user32.lib" #CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup" # debug -# msvc8 under Wine issues -# Program database manager mismatch; please check your installation -if [ $NGX_CC_NAME != msvc8 ]; then +# msvc under Wine issues +# C1902: Program database manager mismatch; please check your installation +if [ -z "$NGX_WINE" ]; then CFLAGS="$CFLAGS -Zi" CORE_LINK="$CORE_LINK -debug" fi # MSVC 2005 supports C99 variadic macros -if [ $NGX_CC_NAME = msvc8 ]; then - have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have +if [ "$ngx_msvc_ver" -ge 14 ]; then + have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have fi Renamed: vendor/nginx-1.9.12/auto/cc/name (+2 -25) 64% =================================================================== --- vendor/nginx-1.9.11/auto/cc/name 2016-03-25 21:02:44 +0900 (51a7ed9) +++ vendor/nginx-1.9.12/auto/cc/name 2016-03-25 22:13:23 +0900 (35d319e) @@ -25,31 +25,8 @@ fi if [ "$CC" = cl ]; then - if `$NGX_WINE $CC -v 2>&1 \ - | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16' \ - >/dev/null 2>&1`; then - - NGX_CC_NAME=msvc10 - echo " + using Microsoft Visual C++ 10 compiler" - - elif `$NGX_WINE $CC -v 2>&1 \ - | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14' \ - >/dev/null 2>&1`; then - - NGX_CC_NAME=msvc8 - echo " + using Microsoft Visual C++ 8 compiler" - - elif `$NGX_WINE $CC -v 2>&1 \ - | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13' \ - >/dev/null 2>&1`; then - - NGX_CC_NAME=msvc7 - echo " + using Microsoft Visual C++ 7 compiler" - - else - NGX_CC_NAME=msvc - echo " + using Microsoft Visual C++ compiler" - fi + NGX_CC_NAME=msvc + echo " + using Microsoft Visual C++ compiler" elif [ "$CC" = wcl386 ]; then NGX_CC_NAME=owc Renamed: vendor/nginx-1.9.12/auto/cc/owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/cc/sunc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/configure (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/define (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/endianness (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/feature (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/have (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/have_headers (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/headers (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/include (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/init (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/install (+1 -4) 96% =================================================================== --- vendor/nginx-1.9.11/auto/install 2016-03-25 21:02:44 +0900 (4dcc743) +++ vendor/nginx-1.9.12/auto/install 2016-03-25 22:13:23 +0900 (9469a49) @@ -104,8 +104,7 @@ $NGX_OBJS/nginx.8: $NGX_MAN $NGX_AUTO_CONFIG_H -e "s|%%ERROR_LOG_PATH%%|${NGX_ERROR_LOG_PATH:-stderr}|" \\ < $NGX_MAN > \$@ -install: $NGX_OBJS${ngx_dirsep}nginx${ngx_binext} \ - $NGX_INSTALL_PERL_MODULES +install: build $NGX_INSTALL_PERL_MODULES test -d '\$(DESTDIR)$NGX_PREFIX' || mkdir -p '\$(DESTDIR)$NGX_PREFIX' test -d '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`' \ @@ -187,8 +186,6 @@ cat << END >> Makefile build: \$(MAKE) -f $NGX_MAKEFILE - \$(MAKE) -f $NGX_MAKEFILE modules - \$(MAKE) -f $NGX_MAKEFILE manpage install: \$(MAKE) -f $NGX_MAKEFILE install Renamed: vendor/nginx-1.9.12/auto/lib/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/geoip/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/google-perftools/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/libatomic/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/libatomic/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/libgd/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/libxslt/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/md5/conf (+2 -2) 98% =================================================================== --- vendor/nginx-1.9.11/auto/lib/md5/conf 2016-03-25 21:02:44 +0900 (eb5dfd1) +++ vendor/nginx-1.9.12/auto/lib/md5/conf 2016-03-25 22:13:23 +0900 (49c0ddf) @@ -20,12 +20,12 @@ if [ $MD5 != NONE ]; then case "$NGX_CC_NAME" in - msvc* | owc* | bcc) + msvc | owc | bcc) LINK_DEPS="$LINK_DEPS $MD5/md5.lib" CORE_LIBS="$CORE_LIBS $MD5/md5.lib" ;; - icc*) + icc) LINK_DEPS="$LINK_DEPS $MD5/libmd5.a" # to allow -ipo optimization we link with the *.o but not library Renamed: vendor/nginx-1.9.12/auto/lib/md5/make (+2 -2) 98% =================================================================== --- vendor/nginx-1.9.11/auto/lib/md5/make 2016-03-25 21:02:44 +0900 (81f138a) +++ vendor/nginx-1.9.12/auto/lib/md5/make 2016-03-25 22:13:23 +0900 (7000b20) @@ -5,13 +5,13 @@ case "$NGX_CC_NAME" in - msvc*) + msvc) ngx_makefile=makefile.msvc ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC MD5_ASM=$MD5_ASM" ngx_md5="MD5=\"$MD5\"" ;; - owc*) + owc) ngx_makefile=makefile.owc ngx_opt="CPU_OPT=\"$CPU_OPT\"" ngx_md5=`echo MD5=\"$MD5\" | sed -e "s/\//$ngx_regex_dirsep/g"` Renamed: vendor/nginx-1.9.12/auto/lib/md5/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/md5/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/md5/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/openssl/conf (+8 -7) 91% =================================================================== --- vendor/nginx-1.9.11/auto/lib/openssl/conf 2016-03-25 21:02:44 +0900 (2187e5c) +++ vendor/nginx-1.9.12/auto/lib/openssl/conf 2016-03-25 22:13:23 +0900 (e438050) @@ -32,6 +32,7 @@ if [ $OPENSSL != NONE ]; then CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h" CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a" CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a" + CORE_LIBS="$CORE_LIBS $NGX_LIBDL" if [ "$NGX_PLATFORM" = win32 ]; then CORE_LIBS="$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32" @@ -50,7 +51,7 @@ else ngx_feature_run=no ngx_feature_incs="#include <openssl/ssl.h>" ngx_feature_path= - ngx_feature_libs="-lssl -lcrypto" + ngx_feature_libs="-lssl -lcrypto $NGX_LIBDL" ngx_feature_test="SSL_library_init()" . auto/feature @@ -62,9 +63,9 @@ else ngx_feature_path="/usr/local/include" if [ $NGX_RPATH = YES ]; then - ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto" + ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto $NGX_LIBDL" else - ngx_feature_libs="-L/usr/local/lib -lssl -lcrypto" + ngx_feature_libs="-L/usr/local/lib -lssl -lcrypto $NGX_LIBDL" fi . auto/feature @@ -78,9 +79,9 @@ else ngx_feature_path="/usr/pkg/include" if [ $NGX_RPATH = YES ]; then - ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lssl -lcrypto" + ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lssl -lcrypto $NGX_LIBDL" else - ngx_feature_libs="-L/usr/pkg/lib -lssl -lcrypto" + ngx_feature_libs="-L/usr/pkg/lib -lssl -lcrypto $NGX_LIBDL" fi . auto/feature @@ -94,9 +95,9 @@ else ngx_feature_path="/opt/local/include" if [ $NGX_RPATH = YES ]; then - ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto" + ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto $NGX_LIBDL" else - ngx_feature_libs="-L/opt/local/lib -lssl -lcrypto" + ngx_feature_libs="-L/opt/local/lib -lssl -lcrypto $NGX_LIBDL" fi . auto/feature Renamed: vendor/nginx-1.9.12/auto/lib/openssl/make (+1 -1) 97% =================================================================== --- vendor/nginx-1.9.11/auto/lib/openssl/make 2016-03-25 21:02:44 +0900 (765cd06) +++ vendor/nginx-1.9.12/auto/lib/openssl/make 2016-03-25 22:13:23 +0900 (a6090c6) @@ -53,7 +53,7 @@ $OPENSSL/.openssl/include/openssl/ssl.h: $NGX_MAKEFILE && if [ -f Makefile ]; then \$(MAKE) clean; fi \\ && ./config --prefix=$ngx_prefix no-shared $OPENSSL_OPT \\ && \$(MAKE) \\ - && \$(MAKE) install LIBDIR=lib + && \$(MAKE) install_sw LIBDIR=lib END Renamed: vendor/nginx-1.9.12/auto/lib/openssl/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/openssl/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/pcre/conf (+2 -2) 99% =================================================================== --- vendor/nginx-1.9.11/auto/lib/pcre/conf 2016-03-25 21:02:44 +0900 (939f01b) +++ vendor/nginx-1.9.12/auto/lib/pcre/conf 2016-03-25 22:13:23 +0900 (5e3960f) @@ -8,7 +8,7 @@ if [ $PCRE != NONE ]; then case "$NGX_CC_NAME" in - msvc* | owc* | bcc) + msvc | owc | bcc) have=NGX_PCRE . auto/have have=PCRE_STATIC . auto/have CORE_DEPS="$CORE_DEPS $PCRE/pcre.h" @@ -16,7 +16,7 @@ if [ $PCRE != NONE ]; then CORE_LIBS="$CORE_LIBS $PCRE/pcre.lib" ;; - icc* ) + icc) have=NGX_PCRE . auto/have CORE_DEPS="$CORE_DEPS $PCRE/pcre.h" Renamed: vendor/nginx-1.9.12/auto/lib/pcre/make (+2 -2) 98% =================================================================== --- vendor/nginx-1.9.11/auto/lib/pcre/make 2016-03-25 21:02:44 +0900 (0a27a11) +++ vendor/nginx-1.9.12/auto/lib/pcre/make 2016-03-25 22:13:23 +0900 (97c9f3b) @@ -5,13 +5,13 @@ case "$NGX_CC_NAME" in - msvc*) + msvc) ngx_makefile=makefile.msvc ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC" ngx_pcre="PCRE=\"$PCRE\"" ;; - owc*) + owc) ngx_makefile=makefile.owc ngx_opt="CPU_OPT=\"$CPU_OPT\"" ngx_pcre=`echo PCRE=\"$PCRE\" | sed -e "s/\//$ngx_regex_dirsep/g"` Renamed: vendor/nginx-1.9.12/auto/lib/pcre/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/pcre/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/pcre/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/perl/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/perl/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/sha1/conf (+2 -2) 97% =================================================================== --- vendor/nginx-1.9.11/auto/lib/sha1/conf 2016-03-25 21:02:44 +0900 (fd69afd) +++ vendor/nginx-1.9.12/auto/lib/sha1/conf 2016-03-25 22:13:23 +0900 (78f9efd) @@ -10,12 +10,12 @@ if [ $SHA1 != NONE ]; then case "$NGX_CC_NAME" in - msvc* | owc* | bcc) + msvc | owc | bcc) LINK_DEPS="$LINK_DEPS $SHA1/sha1.lib" CORE_LIBS="$CORE_LIBS $SHA1/sha1.lib" ;; - icc*) + icc) LINK_DEPS="$LINK_DEPS $SHA1/libsha.a" # to allow -ipo optimization we link with the *.o but not library Renamed: vendor/nginx-1.9.12/auto/lib/sha1/make (+2 -2) 98% =================================================================== --- vendor/nginx-1.9.11/auto/lib/sha1/make 2016-03-25 21:02:44 +0900 (fc10aae) +++ vendor/nginx-1.9.12/auto/lib/sha1/make 2016-03-25 22:13:23 +0900 (fc3b340) @@ -5,13 +5,13 @@ case "$NGX_CC_NAME" in - msvc*) + msvc) ngx_makefile=makefile.msvc ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC SHA1_ASM=$SHA1_ASM" ngx_sha1="SHA1=\"$SHA1\"" ;; - owc*) + owc) ngx_makefile=makefile.owc ngx_opt="CPU_OPT=\"$CPU_OPT\"" ngx_sha1=`echo SHA1=\"$SHA1\" | sed -e "s/\//$ngx_regex_dirsep/g"` Renamed: vendor/nginx-1.9.12/auto/lib/sha1/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/sha1/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/sha1/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/test (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/zlib/conf (+2 -2) 97% =================================================================== --- vendor/nginx-1.9.11/auto/lib/zlib/conf 2016-03-25 21:02:44 +0900 (26db642) +++ vendor/nginx-1.9.12/auto/lib/zlib/conf 2016-03-25 22:13:23 +0900 (239592e) @@ -8,13 +8,13 @@ if [ $ZLIB != NONE ]; then case "$NGX_CC_NAME" in - msvc* | owc* | bcc) + msvc | owc | bcc) have=NGX_ZLIB . auto/have LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib" CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib" ;; - icc*) + icc) have=NGX_ZLIB . auto/have LINK_DEPS="$LINK_DEPS $ZLIB/libz.a" Renamed: vendor/nginx-1.9.12/auto/lib/zlib/make (+2 -2) 99% =================================================================== --- vendor/nginx-1.9.11/auto/lib/zlib/make 2016-03-25 21:02:44 +0900 (7875ef6) +++ vendor/nginx-1.9.12/auto/lib/zlib/make 2016-03-25 22:13:23 +0900 (0082ad5) @@ -5,14 +5,14 @@ case "$NGX_CC_NAME" in - msvc*) + msvc) ngx_makefile=makefile.msvc ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC" ngx_zlib="ZLIB=\"$ZLIB\"" ;; - owc*) + owc) ngx_makefile=makefile.owc ngx_opt="CPU_OPT=\"$CPU_OPT\"" ngx_zlib=`echo ZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"` Renamed: vendor/nginx-1.9.12/auto/lib/zlib/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/zlib/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/lib/zlib/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/make (+4 -0) 99% =================================================================== --- vendor/nginx-1.9.11/auto/make 2016-03-25 21:02:44 +0900 (039a70f) +++ vendor/nginx-1.9.12/auto/make 2016-03-25 22:13:23 +0900 (560924b) @@ -223,6 +223,10 @@ ngx_main_link=${MAIN_LINK:+`echo $MAIN_LINK \ cat << END >> $NGX_MAKEFILE +build: binary modules manpage + +binary: $NGX_OBJS${ngx_dirsep}nginx${ngx_binext} + $NGX_OBJS${ngx_dirsep}nginx${ngx_binext}: $ngx_deps$ngx_spacer \$(LINK) ${ngx_long_start}${ngx_binout}$NGX_OBJS${ngx_dirsep}nginx$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_main_link $ngx_rcc Renamed: vendor/nginx-1.9.12/auto/module (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/modules (+1 -2) 99% =================================================================== --- vendor/nginx-1.9.11/auto/modules 2016-03-25 21:02:44 +0900 (2074778) +++ vendor/nginx-1.9.12/auto/modules 2016-03-25 22:13:23 +0900 (ebfc91d) @@ -530,11 +530,10 @@ if [ $HTTP_AUTH_BASIC = YES ]; then ngx_module_incs= ngx_module_deps= ngx_module_srcs=src/http/modules/ngx_http_auth_basic_module.c - ngx_module_libs= + ngx_module_libs=$CRYPT_LIB ngx_module_link=$HTTP_AUTH_BASIC . auto/module - CORE_LIBS="$CORE_LIBS $CRYPT_LIB" fi if [ $HTTP_ACCESS = YES ]; then Renamed: vendor/nginx-1.9.12/auto/nohave (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/options (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/os/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/os/darwin (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/os/freebsd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/os/linux (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/os/solaris (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/os/win32 (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/sources (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/stubs (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/summary (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/threads (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/types/sizeof (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/types/typedef (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/types/uintptr_t (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/types/value (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/auto/unix (+1 -0) 99% =================================================================== --- vendor/nginx-1.9.11/auto/unix 2016-03-25 21:02:44 +0900 (e07df08) +++ vendor/nginx-1.9.12/auto/unix 2016-03-25 22:13:23 +0900 (ce01791) @@ -272,6 +272,7 @@ if [ $ngx_found != yes ]; then if [ $ngx_found = yes ]; then CORE_LIBS="$CORE_LIBS -ldl" + NGX_LIBDL="-ldl" fi fi Renamed: vendor/nginx-1.9.12/conf/fastcgi.conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/conf/fastcgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/conf/koi-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/conf/koi-win (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/conf/mime.types (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/conf/nginx.conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/conf/scgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/conf/uwsgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/conf/win-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/contrib/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/contrib/geo2nginx.pl (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/contrib/unicode2nginx/koi-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/contrib/unicode2nginx/unicode-to-nginx.pl (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/contrib/unicode2nginx/win-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/contrib/vim/ftdetect/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/contrib/vim/indent/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/contrib/vim/syntax/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/GNUmakefile (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/dtd/change_log_conf.dtd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/dtd/changes.dtd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/html/50x.html (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/html/index.html (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/man/nginx.8 (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/text/LICENSE (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/text/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/xml/change_log_conf.xml (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/xml/nginx/changes.xml (+102 -0) 99% =================================================================== --- vendor/nginx-1.9.11/docs/xml/nginx/changes.xml 2016-03-25 21:02:44 +0900 (bf68cb5) +++ vendor/nginx-1.9.12/docs/xml/nginx/changes.xml 2016-03-25 22:13:23 +0900 (f126886) @@ -5,6 +5,108 @@ <change_log title="nginx"> +<changes ver="1.9.12" date="24.02.2016"> + +<change type="feature"> +<para lang="ru"> +кодирование Хаффмана заголовков ответов в HTTP/2.<br/> +Спасибо Владу Краснову. +</para> +<para lang="en"> +Huffman encoding of response headers in HTTP/2.<br/> +Thanks to Vlad Krasnov. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +директива worker_cpu_affinity теперь поддерживает более 64 процессоров. +</para> +<para lang="en"> +the "worker_cpu_affinity" directive now supports more than 64 CPUs. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +совместимость со сторонними модулями на C++; +ошибка появилась в 1.9.11.<br/> +Спасибо Piotr Sikora. +</para> +<para lang="en"> +compatibility with 3rd party C++ modules; +the bug had appeared in 1.9.11.<br/> +Thanks to Piotr Sikora. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +nginx не собирался статически с OpenSSL на Linux; +ошибка появилась в 1.9.11. +</para> +<para lang="en"> +nginx could not be built statically with OpenSSL on Linux; +the bug had appeared in 1.9.11. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +директива "add_header ... always" с пустым значением +не удаляла из заголовков ошибочных ответов +строки Last-Modified и ETag. +</para> +<para lang="en"> +the "add_header ... always" directive with an empty value +did not delete "Last-Modified" and "ETag" header lines +from error responses. +</para> +</change> + +<change type="workaround"> +<para lang="ru"> +при использовании OpenSSL 1.0.2f в логах могли появляться +сообщения "called a function you should not call" и +"shutdown while in init". +</para> +<para lang="en"> +"called a function you should not call" +and "shutdown while in init" messages might appear in logs +when using OpenSSL 1.0.2f. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +ошибочные заголовки могли логгироваться некорректно. +</para> +<para lang="en"> +invalid headers might be logged incorrectly. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +утечки сокетов при использовании HTTP/2. +</para> +<para lang="en"> +socket leak when using HTTP/2. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +в модуле ngx_http_v2_module. +</para> +<para lang="en"> +in the ngx_http_v2_module. +</para> +</change> + +</changes> + + <changes ver="1.9.11" date="09.02.2016"> <change type="feature"> Renamed: vendor/nginx-1.9.12/docs/xsls/changes.xsls (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/docs/xslt/changes.xslt (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/misc/GNUmakefile (+1 -1) 99% =================================================================== --- vendor/nginx-1.9.11/misc/GNUmakefile 2016-03-25 21:02:44 +0900 (ba7b26e) +++ vendor/nginx-1.9.12/misc/GNUmakefile 2016-03-25 22:13:23 +0900 (adec088) @@ -5,7 +5,7 @@ NGINX = nginx-$(VER) TEMP = tmp OBJS = objs.msvc8 -OPENSSL = openssl-1.0.2e +OPENSSL = openssl-1.0.2f ZLIB = zlib-1.2.8 PCRE = pcre-8.38 Renamed: vendor/nginx-1.9.12/misc/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/nginx.c (+54 -25) 96% =================================================================== --- vendor/nginx-1.9.11/src/core/nginx.c 2016-03-25 21:02:44 +0900 (6ce030c) +++ vendor/nginx-1.9.12/src/core/nginx.c 2016-03-25 22:13:23 +0900 (cdc067e) @@ -481,6 +481,12 @@ ngx_add_inherited_sockets(ngx_cycle_t *cycle) } } + if (v != p) { + ngx_log_error(NGX_LOG_EMERG, cycle->log, 0, + "invalid socket number \"%s\" in " NGINX_VAR + " environment variable, ignoring", v); + } + ngx_inherited = 1; return ngx_set_inherited_sockets(cycle); @@ -1264,16 +1270,16 @@ ngx_set_cpu_affinity(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) #if (NGX_HAVE_CPU_AFFINITY) ngx_core_conf_t *ccf = conf; - u_char ch; - uint64_t *mask; + u_char ch, *p; ngx_str_t *value; ngx_uint_t i, n; + ngx_cpuset_t *mask; if (ccf->cpu_affinity) { return "is duplicate"; } - mask = ngx_palloc(cf->pool, (cf->args->nelts - 1) * sizeof(uint64_t)); + mask = ngx_palloc(cf->pool, (cf->args->nelts - 1) * sizeof(ngx_cpuset_t)); if (mask == NULL) { return NGX_CONF_ERROR; } @@ -1293,7 +1299,12 @@ ngx_set_cpu_affinity(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) } ccf->cpu_affinity_auto = 1; - mask[0] = (uint64_t) -1 >> (64 - ngx_min(64, ngx_ncpu)); + + CPU_ZERO(&mask[0]); + for (i = 0; i < (ngx_uint_t) ngx_min(ngx_ncpu, CPU_SETSIZE); i++) { + CPU_SET(i, &mask[0]); + } + n = 2; } else { @@ -1302,30 +1313,34 @@ ngx_set_cpu_affinity(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) for ( /* void */ ; n < cf->args->nelts; n++) { - if (value[n].len > 64) { + if (value[n].len > CPU_SETSIZE) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "\"worker_cpu_affinity\" supports up to 64 CPUs only"); + "\"worker_cpu_affinity\" supports up to %d CPUs only", + CPU_SETSIZE); return NGX_CONF_ERROR; } - mask[n - 1] = 0; - - for (i = 0; i < value[n].len; i++) { + i = 0; + CPU_ZERO(&mask[n - 1]); - ch = value[n].data[i]; + for (p = value[n].data + value[n].len - 1; + p >= value[n].data; + p--) + { + ch = *p; if (ch == ' ') { continue; } - mask[n - 1] <<= 1; + i++; if (ch == '0') { continue; } if (ch == '1') { - mask[n - 1] |= 1; + CPU_SET(i - 1, &mask[n - 1]); continue; } @@ -1347,43 +1362,57 @@ ngx_set_cpu_affinity(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) } -uint64_t +ngx_cpuset_t * ngx_get_cpu_affinity(ngx_uint_t n) { - uint64_t mask; - ngx_uint_t i; +#if (NGX_HAVE_CPU_AFFINITY) + ngx_uint_t i, j; + ngx_cpuset_t *mask; ngx_core_conf_t *ccf; + static ngx_cpuset_t result; + ccf = (ngx_core_conf_t *) ngx_get_conf(ngx_cycle->conf_ctx, ngx_core_module); if (ccf->cpu_affinity == NULL) { - return 0; + return NULL; } if (ccf->cpu_affinity_auto) { - mask = ccf->cpu_affinity[ccf->cpu_affinity_n - 1]; + mask = &ccf->cpu_affinity[ccf->cpu_affinity_n - 1]; - if (mask == 0) { - return 0; - } + for (i = 0, j = n; /* void */ ; i++) { - for (i = 0; /* void */ ; i++) { - if ((mask & ((uint64_t) 1 << (i % 64))) && n-- == 0) { + if (CPU_ISSET(i % CPU_SETSIZE, mask) && j-- == 0) { break; } + if (i == CPU_SETSIZE && j == n) { + /* empty mask */ + return NULL; + } + /* void */ } - return (uint64_t) 1 << (i % 64); + CPU_ZERO(&result); + CPU_SET(i % CPU_SETSIZE, &result); + + return &result; } if (ccf->cpu_affinity_n > n) { - return ccf->cpu_affinity[n]; + return &ccf->cpu_affinity[n]; } - return ccf->cpu_affinity[ccf->cpu_affinity_n - 1]; + return &ccf->cpu_affinity[ccf->cpu_affinity_n - 1]; + +#else + + return NULL; + +#endif } Renamed: vendor/nginx-1.9.12/src/core/nginx.h (+2 -2) 85% =================================================================== --- vendor/nginx-1.9.11/src/core/nginx.h 2016-03-25 21:02:44 +0900 (e416e90) +++ vendor/nginx-1.9.12/src/core/nginx.h 2016-03-25 22:13:23 +0900 (dec7b88) @@ -9,8 +9,8 @@ #define _NGINX_H_INCLUDED_ -#define nginx_version 1009011 -#define NGINX_VERSION "1.9.11" +#define nginx_version 1009012 +#define NGINX_VERSION "1.9.12" #define NGINX_VER "nginx/" NGINX_VERSION #ifdef NGX_BUILD Renamed: vendor/nginx-1.9.12/src/core/ngx_array.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_array.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_buf.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_buf.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_conf_file.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_conf_file.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_connection.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_connection.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_core.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_cpuinfo.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_crc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_crc32.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_crc32.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_crypt.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_crypt.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_cycle.h (+2 -2) 97% =================================================================== --- vendor/nginx-1.9.11/src/core/ngx_cycle.h 2016-03-25 21:02:44 +0900 (27401d0) +++ vendor/nginx-1.9.12/src/core/ngx_cycle.h 2016-03-25 22:13:23 +0900 (cfdbb55) @@ -94,7 +94,7 @@ typedef struct { ngx_uint_t cpu_affinity_auto; ngx_uint_t cpu_affinity_n; - uint64_t *cpu_affinity; + ngx_cpuset_t *cpu_affinity; char *username; ngx_uid_t user; @@ -121,7 +121,7 @@ ngx_int_t ngx_signal_process(ngx_cycle_t *cycle, char *sig); void ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user); char **ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last); ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv); -uint64_t ngx_get_cpu_affinity(ngx_uint_t n); +ngx_cpuset_t *ngx_get_cpu_affinity(ngx_uint_t n); ngx_shm_zone_t *ngx_shared_memory_add(ngx_conf_t *cf, ngx_str_t *name, size_t size, void *tag); Renamed: vendor/nginx-1.9.12/src/core/ngx_file.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_file.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_hash.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_hash.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_inet.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_inet.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_list.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_list.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_log.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_log.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_md5.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_md5.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_module.c (+1 -1) 99% =================================================================== --- vendor/nginx-1.9.11/src/core/ngx_module.c 2016-03-25 21:02:44 +0900 (1e947c9) +++ vendor/nginx-1.9.12/src/core/ngx_module.c 2016-03-25 22:13:23 +0900 (f5ec86a) @@ -171,7 +171,7 @@ ngx_add_module(ngx_conf_t *cf, ngx_str_t *file, ngx_module_t *module, if (module->version != nginx_version) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "module \"%V\" version %ui instead of %ui", - file, module->version, nginx_version); + file, module->version, (ngx_uint_t) nginx_version); return NGX_ERROR; } Renamed: vendor/nginx-1.9.12/src/core/ngx_module.h (+1 -1) 99% =================================================================== --- vendor/nginx-1.9.11/src/core/ngx_module.h 2016-03-25 21:02:44 +0900 (cd28c49) +++ vendor/nginx-1.9.12/src/core/ngx_module.h 2016-03-25 22:13:23 +0900 (3e74def) @@ -253,7 +253,7 @@ struct ngx_module_s { ngx_uint_t spare1; ngx_uint_t version; - char *signature; + const char *signature; void *ctx; ngx_command_t *commands; Renamed: vendor/nginx-1.9.12/src/core/ngx_murmurhash.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_murmurhash.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_open_file_cache.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_open_file_cache.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_output_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_palloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_palloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_parse.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_parse_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_parse_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_proxy_protocol.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_proxy_protocol.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_queue.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_queue.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_radix_tree.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_radix_tree.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_rbtree.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_rbtree.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_regex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_regex.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_resolver.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_resolver.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_rwlock.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_rwlock.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_sha1.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_shmtx.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_shmtx.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_slab.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_slab.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_spinlock.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_string.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_string.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_syslog.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_syslog.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_thread_pool.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_thread_pool.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_times.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/core/ngx_times.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/modules/ngx_devpoll_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/modules/ngx_epoll_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/modules/ngx_eventport_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/modules/ngx_iocp_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/modules/ngx_iocp_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/modules/ngx_kqueue_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/modules/ngx_poll_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/modules/ngx_select_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/modules/ngx_win32_select_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_accept.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_acceptex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_connect.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_connect.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_connectex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_openssl.c (+14 -1) 99% =================================================================== --- vendor/nginx-1.9.11/src/event/ngx_event_openssl.c 2016-03-25 21:02:44 +0900 (57dfc6c) +++ vendor/nginx-1.9.12/src/event/ngx_event_openssl.c 2016-03-25 22:13:23 +0900 (de10d48) @@ -1767,6 +1767,19 @@ ngx_ssl_shutdown(ngx_connection_t *c) int n, sslerr, mode; ngx_err_t err; + if (SSL_in_init(c->ssl->connection)) { + /* + * OpenSSL 1.0.2f complains if SSL_shutdown() is called during + * an SSL handshake, while previous versions always return 0. + * Avoid calling SSL_shutdown() if handshake wasn't completed. + */ + + SSL_free(c->ssl->connection); + c->ssl = NULL; + + return NGX_OK; + } + if (c->timedout) { mode = SSL_RECEIVED_SHUTDOWN|SSL_SENT_SHUTDOWN; SSL_set_quiet_shutdown(c->ssl->connection, 1); @@ -1797,7 +1810,7 @@ ngx_ssl_shutdown(ngx_connection_t *c) sslerr = 0; - /* SSL_shutdown() never returns -1, on error it returns 0 */ + /* before 0.9.8m SSL_shutdown() returned 0 instead of -1 on errors */ if (n != 1 && ERR_peek_error()) { sslerr = SSL_get_error(c->ssl->connection, n); Renamed: vendor/nginx-1.9.12/src/event/ngx_event_openssl.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_openssl_stapling.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_pipe.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_pipe.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_posted.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_posted.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_timer.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/event/ngx_event_timer.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_access_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_addition_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_auth_basic_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_auth_request_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_autoindex_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_browser_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_charset_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_chunked_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_dav_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_degradation_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_empty_gif_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_fastcgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_flv_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_geo_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_geoip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_gunzip_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_gzip_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_gzip_static_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_headers_filter_module.c (+8 -8) 98% =================================================================== --- vendor/nginx-1.9.11/src/http/modules/ngx_http_headers_filter_module.c 2016-03-25 21:02:44 +0900 (985e5b3) +++ vendor/nginx-1.9.12/src/http/modules/ngx_http_headers_filter_module.c 2016-03-25 22:13:23 +0900 (6738afe) @@ -712,17 +712,17 @@ ngx_http_headers_add(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) if (value[2].len == 0) { ngx_memzero(&hv->value, sizeof(ngx_http_complex_value_t)); - return NGX_CONF_OK; - } - ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t)); + } else { + ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t)); - ccv.cf = cf; - ccv.value = &value[2]; - ccv.complex_value = &hv->value; + ccv.cf = cf; + ccv.value = &value[2]; + ccv.complex_value = &hv->value; - if (ngx_http_compile_complex_value(&ccv) != NGX_OK) { - return NGX_CONF_ERROR; + if (ngx_http_compile_complex_value(&ccv) != NGX_OK) { + return NGX_CONF_ERROR; + } } if (cf->args->nelts == 3) { Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_image_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_index_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_limit_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_limit_req_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_log_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_map_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_memcached_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_mp4_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_not_modified_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_proxy_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_random_index_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_range_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_realip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_referer_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_rewrite_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_scgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_secure_link_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_slice_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_split_clients_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_ssi_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_ssi_filter_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_ssl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_ssl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_static_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_stub_status_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_sub_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_hash_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_ip_hash_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_keepalive_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_least_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_upstream_zone_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_userid_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_uwsgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/ngx_http_xslt_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/perl/Makefile.PL (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/perl/nginx.pm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/perl/nginx.xs (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/perl/ngx_http_perl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/perl/ngx_http_perl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/modules/perl/typemap (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_cache.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_copy_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_core_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_core_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_file_cache.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_header_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_postpone_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_request.c (+3 -16) 99% =================================================================== --- vendor/nginx-1.9.11/src/http/ngx_http_request.c 2016-03-25 21:02:44 +0900 (99e9325) +++ vendor/nginx-1.9.12/src/http/ngx_http_request.c 2016-03-25 22:13:23 +0900 (fd790e1) @@ -1351,12 +1351,11 @@ ngx_http_process_request_headers(ngx_event_t *rev) continue; } - /* rc == NGX_HTTP_PARSE_INVALID_HEADER: "\r" is not followed by "\n" */ + /* rc == NGX_HTTP_PARSE_INVALID_HEADER */ ngx_log_error(NGX_LOG_INFO, c->log, 0, - "client sent invalid header line: \"%*s\\r...\"", - r->header_end - r->header_name_start, - r->header_name_start); + "client sent invalid header line"); + ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST); return; } @@ -2574,12 +2573,6 @@ ngx_http_set_write_handler(ngx_http_request_t *r) ngx_http_test_reading; r->write_event_handler = ngx_http_writer; -#if (NGX_HTTP_V2) - if (r->stream) { - return NGX_OK; - } -#endif - wev = r->connection->write; if (wev->ready && wev->delayed) { @@ -2665,12 +2658,6 @@ ngx_http_writer(ngx_http_request_t *r) if (r->buffered || r->postponed || (r == r->main && c->buffered)) { -#if (NGX_HTTP_V2) - if (r->stream) { - return; - } -#endif - if (!wev->delayed) { ngx_add_timer(wev, clcf->send_timeout); } Renamed: vendor/nginx-1.9.12/src/http/ngx_http_request.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_request_body.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_script.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_script.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_special_response.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_upstream.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_upstream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_upstream_round_robin.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_upstream_round_robin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_variables.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_variables.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/ngx_http_write_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/v2/ngx_http_v2.c (+174 -63) 95% =================================================================== --- vendor/nginx-1.9.11/src/http/v2/ngx_http_v2.c 2016-03-25 21:02:44 +0900 (4e378c9) +++ vendor/nginx-1.9.12/src/http/v2/ngx_http_v2.c 2016-03-25 22:13:23 +0900 (4c4a4e7) @@ -112,10 +112,10 @@ static u_char *ngx_http_v2_state_skip_padded(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end); static u_char *ngx_http_v2_state_skip(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end); -static u_char *ngx_http_v2_state_skip_headers(ngx_http_v2_connection_t *h2c, - u_char *pos, u_char *end); static u_char *ngx_http_v2_state_save(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end, ngx_http_v2_handler_pt handler); +static u_char *ngx_http_v2_state_headers_save(ngx_http_v2_connection_t *h2c, + u_char *pos, u_char *end, ngx_http_v2_handler_pt handler); static u_char *ngx_http_v2_connection_error(ngx_http_v2_connection_t *h2c, ngx_uint_t err); @@ -164,6 +164,7 @@ static ngx_int_t ngx_http_v2_cookie(ngx_http_request_t *r, static ngx_int_t ngx_http_v2_construct_cookie_header(ngx_http_request_t *r); static void ngx_http_v2_run_request(ngx_http_request_t *r); static ngx_int_t ngx_http_v2_init_request_body(ngx_http_request_t *r); +static void ngx_http_v2_read_client_request_body_handler(ngx_http_request_t *r); static ngx_int_t ngx_http_v2_terminate_stream(ngx_http_v2_connection_t *h2c, ngx_http_v2_stream_t *stream, ngx_uint_t status); @@ -432,6 +433,10 @@ ngx_http_v2_write_handler(ngx_event_t *wev) "run http2 stream %ui", stream->node->id); wev = stream->request->connection->write; + + wev->active = 0; + wev->ready = 1; + wev->handler(wev); } @@ -885,6 +890,7 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos, ngx_buf_t *buf; ngx_int_t rc; ngx_temp_file_t *tf; + ngx_connection_t *fc; ngx_http_request_t *r; ngx_http_v2_stream_t *stream; ngx_http_request_body_t *rb; @@ -921,6 +927,7 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos, return ngx_http_v2_state_skip_padded(h2c, pos, end); } + fc = r->connection; rb = r->request_body; tf = rb->temp_file; buf = rb->buf; @@ -931,7 +938,7 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos, if (r->headers_in.content_length_n != -1 && r->headers_in.content_length_n < rb->rest) { - ngx_log_error(NGX_LOG_INFO, r->connection->log, 0, + ngx_log_error(NGX_LOG_INFO, fc->log, 0, "client intended to send body data " "larger than declared"); @@ -944,7 +951,7 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos, if (clcf->client_max_body_size && clcf->client_max_body_size < rb->rest) { - ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, + ngx_log_error(NGX_LOG_ERR, fc->log, 0, "client intended to send " "too large chunked body: %O bytes", rb->rest); @@ -984,6 +991,11 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos, } if (h2c->state.length) { + if (rb->post_handler) { + clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); + ngx_add_timer(fc->read, clcf->client_body_timeout); + } + return ngx_http_v2_state_save(h2c, pos, end, ngx_http_v2_state_read_data); } @@ -995,7 +1007,7 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos, r->headers_in.content_length_n = rb->rest; } else if (r->headers_in.content_length_n != rb->rest) { - ngx_log_error(NGX_LOG_INFO, r->connection->log, 0, + ngx_log_error(NGX_LOG_INFO, fc->log, 0, "client prematurely closed stream: " "only %O out of %O bytes of request body received", rb->rest, r->headers_in.content_length_n); @@ -1015,9 +1027,17 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos, } if (rb->post_handler) { + if (fc->read->timer_set) { + ngx_del_timer(fc->read); + } + r->read_event_handler = ngx_http_block_reading; rb->post_handler(r); } + + } else if (rb->post_handler) { + clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); + ngx_add_timer(fc->read, clcf->client_body_timeout); } if (h2c->state.padding) { @@ -1029,6 +1049,9 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos, error: if (rb->post_handler) { + if (fc->read->timer_set) { + ngx_del_timer(fc->read); + } if (stream->skip_data == NGX_HTTP_V2_DATA_ERROR) { rc = (r->headers_in.content_length_n == -1) @@ -1133,6 +1156,11 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos, h2c->last_sid = h2c->state.sid; + h2c->state.pool = ngx_create_pool(1024, h2c->connection->log); + if (h2c->state.pool == NULL) { + return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_INTERNAL_ERROR); + } + if (depend == h2c->state.sid) { ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0, "client sent HEADERS frame for stream %ui " @@ -1146,7 +1174,7 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos, NGX_HTTP_V2_INTERNAL_ERROR); } - return ngx_http_v2_state_skip_headers(h2c, pos, end); + return ngx_http_v2_state_header_block(h2c, pos, end); } h2scf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx, @@ -1166,7 +1194,7 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos, NGX_HTTP_V2_INTERNAL_ERROR); } - return ngx_http_v2_state_skip_headers(h2c, pos, end); + return ngx_http_v2_state_header_block(h2c, pos, end); } node = ngx_http_v2_get_node_by_id(h2c, h2c->state.sid, 1); @@ -1185,6 +1213,11 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos, return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_INTERNAL_ERROR); } + h2c->state.stream = stream; + + stream->pool = h2c->state.pool; + h2c->state.keep_pool = 1; + stream->request->request_length = h2c->state.length; stream->in_closed = h2c->state.flags & NGX_HTTP_V2_END_STREAM_FLAG; @@ -1192,9 +1225,6 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos, node->stream = stream; - h2c->state.stream = stream; - h2c->state.pool = stream->request->pool; - if (priority || node->parent == NULL) { node->weight = weight; ngx_http_v2_set_dependency(h2c, node, depend, excl); @@ -1213,8 +1243,8 @@ ngx_http_v2_state_header_block(ngx_http_v2_connection_t *h2c, u_char *pos, ngx_uint_t indexed, size_update, prefix; if (end - pos < 1) { - return ngx_http_v2_state_save(h2c, pos, end, - ngx_http_v2_state_header_block); + return ngx_http_v2_state_headers_save(h2c, pos, end, + ngx_http_v2_state_header_block); } if (!(h2c->state.flags & NGX_HTTP_V2_END_HEADERS_FLAG) @@ -1257,8 +1287,8 @@ ngx_http_v2_state_header_block(ngx_http_v2_connection_t *h2c, u_char *pos, if (value < 0) { if (value == NGX_AGAIN) { - return ngx_http_v2_state_save(h2c, pos, end, - ngx_http_v2_state_header_block); + return ngx_http_v2_state_headers_save(h2c, pos, end, + ngx_http_v2_state_header_block); } if (value == NGX_DECLINED) { @@ -1328,8 +1358,8 @@ ngx_http_v2_state_field_len(ngx_http_v2_connection_t *h2c, u_char *pos, } if (end - pos < 1) { - return ngx_http_v2_state_save(h2c, pos, end, - ngx_http_v2_state_field_len); + return ngx_http_v2_state_headers_save(h2c, pos, end, + ngx_http_v2_state_field_len); } huff = *pos >> 7; @@ -1337,8 +1367,8 @@ ngx_http_v2_state_field_len(ngx_http_v2_connection_t *h2c, u_char *pos, if (len < 0) { if (len == NGX_AGAIN) { - return ngx_http_v2_state_save(h2c, pos, end, - ngx_http_v2_state_field_len); + return ngx_http_v2_state_headers_save(h2c, pos, end, + ngx_http_v2_state_field_len); } if (len == NGX_DECLINED) { @@ -1430,8 +1460,8 @@ ngx_http_v2_state_field_huff(ngx_http_v2_connection_t *h2c, u_char *pos, } if (h2c->state.length) { - return ngx_http_v2_state_save(h2c, pos, end, - ngx_http_v2_state_field_huff); + return ngx_http_v2_state_headers_save(h2c, pos, end, + ngx_http_v2_state_field_huff); } if (h2c->state.flags & NGX_HTTP_V2_END_HEADERS_FLAG) { @@ -1475,8 +1505,8 @@ ngx_http_v2_state_field_raw(ngx_http_v2_connection_t *h2c, u_char *pos, } if (h2c->state.length) { - return ngx_http_v2_state_save(h2c, pos, end, - ngx_http_v2_state_field_raw); + return ngx_http_v2_state_headers_save(h2c, pos, end, + ngx_http_v2_state_field_raw); } if (h2c->state.flags & NGX_HTTP_V2_END_HEADERS_FLAG) { @@ -1686,7 +1716,6 @@ ngx_http_v2_state_process_header(ngx_http_v2_connection_t *h2c, u_char *pos, error: h2c->state.stream = NULL; - h2c->state.pool = NULL; return ngx_http_v2_state_header_complete(h2c, pos, end); } @@ -1699,8 +1728,7 @@ ngx_http_v2_state_header_complete(ngx_http_v2_connection_t *h2c, u_char *pos, ngx_http_v2_stream_t *stream; if (h2c->state.length) { - h2c->state.handler = h2c->state.pool ? ngx_http_v2_state_header_block - : ngx_http_v2_state_skip_headers; + h2c->state.handler = ngx_http_v2_state_header_block; return pos; } @@ -1713,12 +1741,14 @@ ngx_http_v2_state_header_complete(ngx_http_v2_connection_t *h2c, u_char *pos, if (stream) { ngx_http_v2_run_request(stream->request); + } - } else if (h2c->state.pool) { + if (!h2c->state.keep_pool) { ngx_destroy_pool(h2c->state.pool); } h2c->state.pool = NULL; + h2c->state.keep_pool = 0; if (h2c->state.padding) { return ngx_http_v2_state_skip_padded(h2c, pos, end); @@ -1749,7 +1779,7 @@ ngx_http_v2_handle_continuation(ngx_http_v2_connection_t *h2c, u_char *pos, } if ((size_t) (end - pos) < len + NGX_HTTP_V2_FRAME_HEADER_SIZE) { - return ngx_http_v2_state_save(h2c, pos, end, handler); + return ngx_http_v2_state_headers_save(h2c, pos, end, handler); } p = pos + len; @@ -2224,8 +2254,10 @@ ngx_http_v2_state_window_update(ngx_http_v2_connection_t *h2c, u_char *pos, wev = stream->request->connection->write; - if (!wev->timer_set) { - wev->delayed = 0; + wev->active = 0; + wev->ready = 1; + + if (!wev->delayed) { wev->handler(wev); } } @@ -2257,8 +2289,10 @@ ngx_http_v2_state_window_update(ngx_http_v2_connection_t *h2c, u_char *pos, wev = stream->request->connection->write; - if (!wev->timer_set) { - wev->delayed = 0; + wev->active = 0; + wev->ready = 1; + + if (!wev->delayed) { wev->handler(wev); if (h2c->send_window == 0) { @@ -2337,19 +2371,6 @@ ngx_http_v2_state_skip(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end) static u_char * -ngx_http_v2_state_skip_headers(ngx_http_v2_connection_t *h2c, u_char *pos, - u_char *end) -{ - h2c->state.pool = ngx_create_pool(1024, h2c->connection->log); - if (h2c->state.pool == NULL) { - return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_INTERNAL_ERROR); - } - - return ngx_http_v2_state_header_block(h2c, pos, end); -} - - -static u_char * ngx_http_v2_state_save(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end, ngx_http_v2_handler_pt handler) { @@ -2379,6 +2400,28 @@ ngx_http_v2_state_save(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end, static u_char * +ngx_http_v2_state_headers_save(ngx_http_v2_connection_t *h2c, u_char *pos, + u_char *end, ngx_http_v2_handler_pt handler) +{ + ngx_event_t *rev; + ngx_http_request_t *r; + ngx_http_core_srv_conf_t *cscf; + + if (h2c->state.stream) { + r = h2c->state.stream->request; + rev = r->connection->read; + + if (!rev->timer_set) { + cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module); + ngx_add_timer(rev, cscf->client_header_timeout); + } + } + + return ngx_http_v2_state_save(h2c, pos, end, handler); +} + + +static u_char * ngx_http_v2_connection_error(ngx_http_v2_connection_t *h2c, ngx_uint_t err) { @@ -2756,6 +2799,7 @@ ngx_http_v2_create_stream(ngx_http_v2_connection_t *h2c) ngx_memcpy(log, h2c->connection->log, sizeof(ngx_log_t)); log->data = ctx; + log->action = "reading client request headers"; ngx_memzero(rev, sizeof(ngx_event_t)); @@ -3562,7 +3606,8 @@ ngx_int_t ngx_http_v2_read_request_body(ngx_http_request_t *r, ngx_http_client_body_handler_pt post_handler) { - ngx_http_v2_stream_t *stream; + ngx_http_v2_stream_t *stream; + ngx_http_core_loc_conf_t *clcf; ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "http2 read request body"); @@ -3598,13 +3643,48 @@ ngx_http_v2_read_request_body(ngx_http_request_t *r, r->request_body->post_handler = post_handler; - r->read_event_handler = ngx_http_test_reading; + r->read_event_handler = ngx_http_v2_read_client_request_body_handler; r->write_event_handler = ngx_http_request_empty_handler; + clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); + ngx_add_timer(r->connection->read, clcf->client_body_timeout); + return NGX_AGAIN; } +static void +ngx_http_v2_read_client_request_body_handler(ngx_http_request_t *r) +{ + ngx_connection_t *fc; + + fc = r->connection; + + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 read client request body handler"); + + if (fc->read->timedout) { + ngx_log_error(NGX_LOG_INFO, fc->log, NGX_ETIMEDOUT, "client timed out"); + + fc->timedout = 1; + r->stream->skip_data = NGX_HTTP_V2_DATA_DISCARD; + + ngx_http_finalize_request(r, NGX_HTTP_REQUEST_TIME_OUT); + return; + } + + if (fc->error) { + ngx_log_error(NGX_LOG_INFO, fc->log, 0, + "client prematurely closed stream"); + + r->stream->skip_data = NGX_HTTP_V2_DATA_DISCARD; + + ngx_http_finalize_request(r, NGX_HTTP_CLIENT_CLOSED_REQUEST); + return; + } +} + + static ngx_int_t ngx_http_v2_terminate_stream(ngx_http_v2_connection_t *h2c, ngx_http_v2_stream_t *stream, ngx_uint_t status) @@ -3633,6 +3713,7 @@ ngx_http_v2_terminate_stream(ngx_http_v2_connection_t *h2c, void ngx_http_v2_close_stream(ngx_http_v2_stream_t *stream, ngx_int_t rc) { + ngx_pool_t *pool; ngx_event_t *ev; ngx_connection_t *fc; ngx_http_v2_node_t *node; @@ -3654,27 +3735,44 @@ ngx_http_v2_close_stream(ngx_http_v2_stream_t *stream, ngx_int_t rc) if (!stream->out_closed) { if (ngx_http_v2_send_rst_stream(h2c, node->id, - NGX_HTTP_V2_INTERNAL_ERROR) + fc->timedout ? NGX_HTTP_V2_PROTOCOL_ERROR + : NGX_HTTP_V2_INTERNAL_ERROR) != NGX_OK) { h2c->connection->error = 1; } } + if (h2c->state.stream == stream) { + h2c->state.stream = NULL; + } + node->stream = NULL; ngx_queue_insert_tail(&h2c->closed, &node->reuse); h2c->closed_nodes++; + /* + * This pool keeps decoded request headers which can be used by log phase + * handlers in ngx_http_free_request(). + * + * The pointer is stored into local variable because the stream object + * will be destroyed after a call to ngx_http_free_request(). + */ + pool = stream->pool; + ngx_http_free_request(stream->request, rc); - ev = fc->read; + if (pool != h2c->state.pool) { + ngx_destroy_pool(pool); - if (ev->active || ev->disabled) { - ngx_log_error(NGX_LOG_ALERT, h2c->connection->log, 0, - "fake read event was activated"); + } else { + /* pool will be destroyed when the complete header is parsed */ + h2c->state.keep_pool = 0; } + ev = fc->read; + if (ev->timer_set) { ngx_del_timer(ev); } @@ -3685,11 +3783,6 @@ ngx_http_v2_close_stream(ngx_http_v2_stream_t *stream, ngx_int_t rc) ev = fc->write; - if (ev->active || ev->disabled) { - ngx_log_error(NGX_LOG_ALERT, h2c->connection->log, 0, - "fake write event was activated"); - } - if (ev->timer_set) { ngx_del_timer(ev); } @@ -3723,9 +3816,18 @@ ngx_http_v2_close_stream_handler(ngx_event_t *ev) fc = ev->data; r = fc->data; - ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, "http2 close stream handler"); + if (ev->timedout) { + ngx_log_error(NGX_LOG_INFO, fc->log, NGX_ETIMEDOUT, "client timed out"); + + fc->timedout = 1; + + ngx_http_v2_close_stream(r->stream, NGX_HTTP_REQUEST_TIME_OUT); + return; + } + ngx_http_v2_close_stream(r->stream, 0); } @@ -3733,7 +3835,11 @@ ngx_http_v2_close_stream_handler(ngx_event_t *ev) static void ngx_http_v2_handle_connection_handler(ngx_event_t *rev) { - ngx_connection_t *c; + ngx_connection_t *c; + ngx_http_v2_connection_t *h2c; + + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, rev->log, 0, + "http2 handle connection handler"); rev->handler = ngx_http_v2_read_handler; @@ -3743,6 +3849,12 @@ ngx_http_v2_handle_connection_handler(ngx_event_t *rev) } c = rev->data; + h2c = c->data; + + if (h2c->last_out && ngx_http_v2_send_output_queue(h2c) == NGX_ERROR) { + ngx_http_v2_finalize_connection(h2c, 0); + return; + } ngx_http_v2_handle_connection(c->data); } @@ -3821,7 +3933,6 @@ ngx_http_v2_finalize_connection(ngx_http_v2_connection_t *h2c, if (h2c->state.stream) { h2c->state.stream->out_closed = 1; - h2c->state.pool = NULL; ngx_http_v2_close_stream(h2c->state.stream, NGX_HTTP_BAD_REQUEST); } @@ -3865,9 +3976,7 @@ ngx_http_v2_finalize_connection(ngx_http_v2_connection_t *h2c, if (stream->queued) { stream->queued = 0; - ev = fc->write; - ev->delayed = 0; } else { ev = fc->read; @@ -3936,8 +4045,10 @@ ngx_http_v2_adjust_windows(ngx_http_v2_connection_t *h2c, ssize_t delta) wev = stream->request->connection->write; - if (!wev->timer_set) { - wev->delayed = 0; + wev->active = 0; + wev->ready = 1; + + if (!wev->delayed) { wev->handler(wev); } } Renamed: vendor/nginx-1.9.12/src/http/v2/ngx_http_v2.h (+5 -0) 98% =================================================================== --- vendor/nginx-1.9.11/src/http/v2/ngx_http_v2.h 2016-03-25 21:02:44 +0900 (0f03922) +++ vendor/nginx-1.9.12/src/http/v2/ngx_http_v2.h 2016-03-25 22:13:23 +0900 (5a791e6) @@ -73,6 +73,7 @@ typedef struct { unsigned flags:8; unsigned incomplete:1; + unsigned keep_pool:1; /* HPACK */ unsigned parse_name:1; @@ -186,6 +187,8 @@ struct ngx_http_v2_stream_s { size_t header_limit; + ngx_pool_t *pool; + unsigned handled:1; unsigned blocked:1; unsigned exhausted:1; @@ -274,6 +277,8 @@ ngx_int_t ngx_http_v2_table_size(ngx_http_v2_connection_t *h2c, size_t size); ngx_int_t ngx_http_v2_huff_decode(u_char *state, u_char *src, size_t len, u_char **dst, ngx_uint_t last, ngx_log_t *log); +size_t ngx_http_v2_huff_encode(u_char *src, size_t len, u_char *dst, + ngx_uint_t lower); #define ngx_http_v2_prefix(bits) ((1 << (bits)) - 1) Renamed: vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_filter_module.c (+154 -70) 83% =================================================================== --- vendor/nginx-1.9.11/src/http/v2/ngx_http_v2_filter_module.c 2016-03-25 21:02:44 +0900 (ea58979) +++ vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_filter_module.c 2016-03-25 22:13:23 +0900 (caa835d) @@ -25,6 +25,11 @@ #define ngx_http_v2_indexed(i) (128 + (i)) #define ngx_http_v2_inc_indexed(i) (64 + (i)) +#define ngx_http_v2_write_name(dst, src, len, tmp) \ + ngx_http_v2_string_encode(dst, src, len, tmp, 1) +#define ngx_http_v2_write_value(dst, src, len, tmp) \ + ngx_http_v2_string_encode(dst, src, len, tmp, 0) + #define NGX_HTTP_V2_ENCODE_RAW 0 #define NGX_HTTP_V2_ENCODE_HUFF 0x80 @@ -46,6 +51,8 @@ #define NGX_HTTP_V2_VARY_INDEX 59 +static u_char *ngx_http_v2_string_encode(u_char *dst, u_char *src, size_t len, + u_char *tmp, ngx_uint_t lower); static u_char *ngx_http_v2_write_int(u_char *pos, ngx_uint_t prefix, ngx_uint_t value); static ngx_http_v2_out_frame_t *ngx_http_v2_create_headers_frame( @@ -119,8 +126,8 @@ static ngx_http_output_header_filter_pt ngx_http_next_header_filter; static ngx_int_t ngx_http_v2_header_filter(ngx_http_request_t *r) { - u_char status, *pos, *start, *p; - size_t len; + u_char status, *pos, *start, *p, *tmp; + size_t len, tmp_len; ngx_str_t host, location; ngx_uint_t i, port; ngx_list_part_t *part; @@ -136,6 +143,14 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) #endif u_char addr[NGX_SOCKADDR_STRLEN]; + static const u_char nginx[5] = "\x84\xaa\x63\x55\xe7"; +#if (NGX_HTTP_GZIP) + static const u_char accept_encoding[12] = + "\x8b\x84\x84\x2d\x69\x5b\x05\x44\x3c\x86\xaa\x6f"; +#endif + + static size_t nginx_ver_len = ngx_http_v2_literal_size(NGINX_VER); + static u_char nginx_ver[ngx_http_v2_literal_size(NGINX_VER)]; if (!r->stream) { return ngx_http_next_header_filter(r); @@ -215,8 +230,7 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); if (r->headers_out.server == NULL) { - len += 1 + (clcf->server_tokens ? ngx_http_v2_literal_size(NGINX_VER) - : ngx_http_v2_literal_size("nginx")); + len += 1 + (clcf->server_tokens ? nginx_ver_len : sizeof(nginx)); } if (r->headers_out.date == NULL) { @@ -340,10 +354,12 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) len += 1 + NGX_HTTP_V2_INT_OCTETS + r->headers_out.location->value.len; } + tmp_len = len; + #if (NGX_HTTP_GZIP) if (r->gzip_vary) { if (clcf->gzip_vary) { - len += 1 + ngx_http_v2_literal_size("Accept-Encoding"); + len += 1 + sizeof(accept_encoding); } else { r->gzip_vary = 0; @@ -371,14 +387,14 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) } if (header[i].key.len > NGX_HTTP_V2_MAX_FIELD) { - ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0, + ngx_log_error(NGX_LOG_CRIT, fc->log, 0, "too long response header name: \"%V\"", &header[i].key); return NGX_ERROR; } if (header[i].value.len > NGX_HTTP_V2_MAX_FIELD) { - ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0, + ngx_log_error(NGX_LOG_CRIT, fc->log, 0, "too long response header value: \"%V: %V\"", &header[i].key, &header[i].value); return NGX_ERROR; @@ -386,15 +402,29 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) len += 1 + NGX_HTTP_V2_INT_OCTETS + header[i].key.len + NGX_HTTP_V2_INT_OCTETS + header[i].value.len; + + if (header[i].key.len > tmp_len) { + tmp_len = header[i].key.len; + } + + if (header[i].value.len > tmp_len) { + tmp_len = header[i].value.len; + } } - pos = ngx_palloc(r->pool, len); - if (pos == NULL) { + tmp = ngx_palloc(r->pool, tmp_len); + pos = ngx_pnalloc(r->pool, len); + + if (pos == NULL || tmp == NULL) { return NGX_ERROR; } start = pos; + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \":status: %03ui\"", + r->headers_out.status); + if (status) { *pos++ = status; @@ -405,24 +435,34 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) } if (r->headers_out.server == NULL) { + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"server: %s\"", + clcf->server_tokens ? NGINX_VER : "nginx"); + *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_SERVER_INDEX); if (clcf->server_tokens) { - *pos++ = NGX_HTTP_V2_ENCODE_RAW | (sizeof(NGINX_VER) - 1); - pos = ngx_cpymem(pos, NGINX_VER, sizeof(NGINX_VER) - 1); + if (nginx_ver[0] == '\0') { + p = ngx_http_v2_write_value(nginx_ver, (u_char *) NGINX_VER, + sizeof(NGINX_VER) - 1, tmp); + nginx_ver_len = p - nginx_ver; + } + + pos = ngx_cpymem(pos, nginx_ver, nginx_ver_len); } else { - *pos++ = NGX_HTTP_V2_ENCODE_RAW | (sizeof("nginx") - 1); - pos = ngx_cpymem(pos, "nginx", sizeof("nginx") - 1); + pos = ngx_cpymem(pos, nginx, sizeof(nginx)); } } if (r->headers_out.date == NULL) { - *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_DATE_INDEX); - *pos++ = (u_char) ngx_cached_http_time.len; + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"date: %V\"", + &ngx_cached_http_time); - pos = ngx_cpymem(pos, ngx_cached_http_time.data, - ngx_cached_http_time.len); + *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_DATE_INDEX); + pos = ngx_http_v2_write_value(pos, ngx_cached_http_time.data, + ngx_cached_http_time.len, tmp); } if (r->headers_out.content_type.len) { @@ -431,39 +471,43 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) if (r->headers_out.content_type_len == r->headers_out.content_type.len && r->headers_out.charset.len) { - *pos = NGX_HTTP_V2_ENCODE_RAW; - pos = ngx_http_v2_write_int(pos, ngx_http_v2_prefix(7), - r->headers_out.content_type.len - + sizeof("; charset=") - 1 - + r->headers_out.charset.len); - - p = pos; + len = r->headers_out.content_type.len + sizeof("; charset=") - 1 + + r->headers_out.charset.len; - pos = ngx_cpymem(pos, r->headers_out.content_type.data, - r->headers_out.content_type.len); + p = ngx_pnalloc(r->pool, len); + if (p == NULL) { + return NGX_ERROR; + } - pos = ngx_cpymem(pos, "; charset=", sizeof("; charset=") - 1); + p = ngx_cpymem(p, r->headers_out.content_type.data, + r->headers_out.content_type.len); - pos = ngx_cpymem(pos, r->headers_out.charset.data, - r->headers_out.charset.len); + p = ngx_cpymem(p, "; charset=", sizeof("; charset=") - 1); - /* update r->headers_out.content_type for possible logging */ + p = ngx_cpymem(p, r->headers_out.charset.data, + r->headers_out.charset.len); - r->headers_out.content_type.len = pos - p; - r->headers_out.content_type.data = p; + /* updated r->headers_out.content_type is also needed for logging */ - } else { - *pos = NGX_HTTP_V2_ENCODE_RAW; - pos = ngx_http_v2_write_int(pos, ngx_http_v2_prefix(7), - r->headers_out.content_type.len); - pos = ngx_cpymem(pos, r->headers_out.content_type.data, - r->headers_out.content_type.len); + r->headers_out.content_type.len = len; + r->headers_out.content_type.data = p - len; } + + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"content-type: %V\"", + &r->headers_out.content_type); + + pos = ngx_http_v2_write_value(pos, r->headers_out.content_type.data, + r->headers_out.content_type.len, tmp); } if (r->headers_out.content_length == NULL && r->headers_out.content_length_n >= 0) { + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"content-length: %O\"", + r->headers_out.content_length_n); + *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_CONTENT_LENGTH_INDEX); p = pos; @@ -476,26 +520,37 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) { *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_LAST_MODIFIED_INDEX); - *pos++ = NGX_HTTP_V2_ENCODE_RAW - | (sizeof("Wed, 31 Dec 1986 18:00:00 GMT") - 1); - pos = ngx_http_time(pos, r->headers_out.last_modified_time); + ngx_http_time(pos, r->headers_out.last_modified_time); + len = sizeof("Wed, 31 Dec 1986 18:00:00 GMT") - 1; + + ngx_log_debug2(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"last-modified: %*s\"", + len, pos); + + /* + * Date will always be encoded using huffman in the temporary buffer, + * so it's safe here to use src and dst pointing to the same address. + */ + pos = ngx_http_v2_write_value(pos, pos, len, tmp); } if (r->headers_out.location && r->headers_out.location->value.len) { - *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_LOCATION_INDEX); + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"location: %V\"", + &r->headers_out.location->value); - *pos = NGX_HTTP_V2_ENCODE_RAW; - pos = ngx_http_v2_write_int(pos, ngx_http_v2_prefix(7), - r->headers_out.location->value.len); - pos = ngx_cpymem(pos, r->headers_out.location->value.data, - r->headers_out.location->value.len); + *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_LOCATION_INDEX); + pos = ngx_http_v2_write_value(pos, r->headers_out.location->value.data, + r->headers_out.location->value.len, tmp); } #if (NGX_HTTP_GZIP) if (r->gzip_vary) { + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"vary: Accept-Encoding\""); + *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_VARY_INDEX); - *pos++ = NGX_HTTP_V2_ENCODE_RAW | (sizeof("Accept-Encoding") - 1); - pos = ngx_cpymem(pos, "Accept-Encoding", sizeof("Accept-Encoding") - 1); + pos = ngx_cpymem(pos, accept_encoding, sizeof(accept_encoding)); } #endif @@ -518,18 +573,23 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) continue; } +#if (NGX_DEBUG) + if (fc->log->log_level & NGX_LOG_DEBUG_HTTP) { + ngx_strlow(tmp, header[i].key.data, header[i].key.len); + + ngx_log_debug3(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"%*s: %V\"", + header[i].key.len, tmp, &header[i].value); + } +#endif + *pos++ = 0; - *pos = NGX_HTTP_V2_ENCODE_RAW; - pos = ngx_http_v2_write_int(pos, ngx_http_v2_prefix(7), - header[i].key.len); - ngx_strlow(pos, header[i].key.data, header[i].key.len); - pos += header[i].key.len; + pos = ngx_http_v2_write_name(pos, header[i].key.data, + header[i].key.len, tmp); - *pos = NGX_HTTP_V2_ENCODE_RAW; - pos = ngx_http_v2_write_int(pos, ngx_http_v2_prefix(7), - header[i].value.len); - pos = ngx_cpymem(pos, header[i].value.data, header[i].value.len); + pos = ngx_http_v2_write_value(pos, header[i].value.data, + header[i].value.len, tmp); } frame = ngx_http_v2_create_headers_frame(r, start, pos); @@ -557,6 +617,32 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) static u_char * +ngx_http_v2_string_encode(u_char *dst, u_char *src, size_t len, u_char *tmp, + ngx_uint_t lower) +{ + size_t hlen; + + hlen = ngx_http_v2_huff_encode(src, len, tmp, lower); + + if (hlen > 0) { + *dst = NGX_HTTP_V2_ENCODE_HUFF; + dst = ngx_http_v2_write_int(dst, ngx_http_v2_prefix(7), hlen); + return ngx_cpymem(dst, tmp, hlen); + } + + *dst = NGX_HTTP_V2_ENCODE_RAW; + dst = ngx_http_v2_write_int(dst, ngx_http_v2_prefix(7), len); + + if (lower) { + ngx_strlow(dst, src, len); + return dst + len; + } + + return ngx_cpymem(dst, src, len); +} + + +static u_char * ngx_http_v2_write_int(u_char *pos, ngx_uint_t prefix, ngx_uint_t value) { if (value < prefix) { @@ -713,7 +799,9 @@ ngx_http_v2_send_chain(ngx_connection_t *fc, ngx_chain_t *in, off_t limit) if (in == NULL) { if (stream->queued) { - fc->write->delayed = 1; + fc->write->active = 1; + fc->write->ready = 0; + } else { fc->buffered &= ~NGX_HTTP_V2_BUFFERED; } @@ -724,7 +812,8 @@ ngx_http_v2_send_chain(ngx_connection_t *fc, ngx_chain_t *in, off_t limit) h2c = stream->connection; if (size && ngx_http_v2_flow_control(h2c, stream) == NGX_DECLINED) { - fc->write->delayed = 1; + fc->write->active = 1; + fc->write->ready = 0; return in; } @@ -861,7 +950,8 @@ ngx_http_v2_send_chain(ngx_connection_t *fc, ngx_chain_t *in, off_t limit) } if (in && ngx_http_v2_flow_control(h2c, stream) == NGX_DECLINED) { - fc->write->delayed = 1; + fc->write->active = 1; + fc->write->ready = 0; } return in; @@ -992,7 +1082,8 @@ ngx_http_v2_filter_send(ngx_connection_t *fc, ngx_http_v2_stream_t *stream) if (stream->queued) { fc->buffered |= NGX_HTTP_V2_BUFFERED; - fc->write->delayed = 1; + fc->write->active = 1; + fc->write->ready = 0; return NGX_AGAIN; } @@ -1230,14 +1321,7 @@ ngx_http_v2_handle_stream(ngx_http_v2_connection_t *h2c, wev = stream->request->connection->write; - /* - * This timer can only be set if the stream was delayed because of rate - * limit. In that case the event should be triggered by the timer. - */ - - if (!wev->timer_set) { - wev->delayed = 0; - + if (!wev->delayed) { stream->handled = 1; ngx_queue_insert_tail(&h2c->posted, &stream->queue); } Renamed: vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_huff_decode.c (+0 -0) 100% =================================================================== Added: vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_huff_encode.c (+254 -0) 100644 =================================================================== --- /dev/null +++ vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_huff_encode.c 2016-03-25 22:13:23 +0900 (3f822cd) @@ -0,0 +1,254 @@ + +/* + * Copyright (C) Nginx, Inc. + * Copyright (C) Valentin V. Bartenev + * Copyright (C) 2015 Vlad Krasnov + */ + + +#include <ngx_config.h> +#include <ngx_core.h> +#include <ngx_http.h> + + +typedef struct { + uint32_t code; + uint32_t len; +} ngx_http_v2_huff_encode_code_t; + + +static ngx_http_v2_huff_encode_code_t ngx_http_v2_huff_encode_table[256] = +{ + {0x00001ff8, 13}, {0x007fffd8, 23}, {0x0fffffe2, 28}, {0x0fffffe3, 28}, + {0x0fffffe4, 28}, {0x0fffffe5, 28}, {0x0fffffe6, 28}, {0x0fffffe7, 28}, + {0x0fffffe8, 28}, {0x00ffffea, 24}, {0x3ffffffc, 30}, {0x0fffffe9, 28}, + {0x0fffffea, 28}, {0x3ffffffd, 30}, {0x0fffffeb, 28}, {0x0fffffec, 28}, + {0x0fffffed, 28}, {0x0fffffee, 28}, {0x0fffffef, 28}, {0x0ffffff0, 28}, + {0x0ffffff1, 28}, {0x0ffffff2, 28}, {0x3ffffffe, 30}, {0x0ffffff3, 28}, + {0x0ffffff4, 28}, {0x0ffffff5, 28}, {0x0ffffff6, 28}, {0x0ffffff7, 28}, + {0x0ffffff8, 28}, {0x0ffffff9, 28}, {0x0ffffffa, 28}, {0x0ffffffb, 28}, + {0x00000014, 6}, {0x000003f8, 10}, {0x000003f9, 10}, {0x00000ffa, 12}, + {0x00001ff9, 13}, {0x00000015, 6}, {0x000000f8, 8}, {0x000007fa, 11}, + {0x000003fa, 10}, {0x000003fb, 10}, {0x000000f9, 8}, {0x000007fb, 11}, + {0x000000fa, 8}, {0x00000016, 6}, {0x00000017, 6}, {0x00000018, 6}, + {0x00000000, 5}, {0x00000001, 5}, {0x00000002, 5}, {0x00000019, 6}, + {0x0000001a, 6}, {0x0000001b, 6}, {0x0000001c, 6}, {0x0000001d, 6}, + {0x0000001e, 6}, {0x0000001f, 6}, {0x0000005c, 7}, {0x000000fb, 8}, + {0x00007ffc, 15}, {0x00000020, 6}, {0x00000ffb, 12}, {0x000003fc, 10}, + {0x00001ffa, 13}, {0x00000021, 6}, {0x0000005d, 7}, {0x0000005e, 7}, + {0x0000005f, 7}, {0x00000060, 7}, {0x00000061, 7}, {0x00000062, 7}, + {0x00000063, 7}, {0x00000064, 7}, {0x00000065, 7}, {0x00000066, 7}, + {0x00000067, 7}, {0x00000068, 7}, {0x00000069, 7}, {0x0000006a, 7}, + {0x0000006b, 7}, {0x0000006c, 7}, {0x0000006d, 7}, {0x0000006e, 7}, + {0x0000006f, 7}, {0x00000070, 7}, {0x00000071, 7}, {0x00000072, 7}, + {0x000000fc, 8}, {0x00000073, 7}, {0x000000fd, 8}, {0x00001ffb, 13}, + {0x0007fff0, 19}, {0x00001ffc, 13}, {0x00003ffc, 14}, {0x00000022, 6}, + {0x00007ffd, 15}, {0x00000003, 5}, {0x00000023, 6}, {0x00000004, 5}, + {0x00000024, 6}, {0x00000005, 5}, {0x00000025, 6}, {0x00000026, 6}, + {0x00000027, 6}, {0x00000006, 5}, {0x00000074, 7}, {0x00000075, 7}, + {0x00000028, 6}, {0x00000029, 6}, {0x0000002a, 6}, {0x00000007, 5}, + {0x0000002b, 6}, {0x00000076, 7}, {0x0000002c, 6}, {0x00000008, 5}, + {0x00000009, 5}, {0x0000002d, 6}, {0x00000077, 7}, {0x00000078, 7}, + {0x00000079, 7}, {0x0000007a, 7}, {0x0000007b, 7}, {0x00007ffe, 15}, + {0x000007fc, 11}, {0x00003ffd, 14}, {0x00001ffd, 13}, {0x0ffffffc, 28}, + {0x000fffe6, 20}, {0x003fffd2, 22}, {0x000fffe7, 20}, {0x000fffe8, 20}, + {0x003fffd3, 22}, {0x003fffd4, 22}, {0x003fffd5, 22}, {0x007fffd9, 23}, + {0x003fffd6, 22}, {0x007fffda, 23}, {0x007fffdb, 23}, {0x007fffdc, 23}, + {0x007fffdd, 23}, {0x007fffde, 23}, {0x00ffffeb, 24}, {0x007fffdf, 23}, + {0x00ffffec, 24}, {0x00ffffed, 24}, {0x003fffd7, 22}, {0x007fffe0, 23}, + {0x00ffffee, 24}, {0x007fffe1, 23}, {0x007fffe2, 23}, {0x007fffe3, 23}, + {0x007fffe4, 23}, {0x001fffdc, 21}, {0x003fffd8, 22}, {0x007fffe5, 23}, + {0x003fffd9, 22}, {0x007fffe6, 23}, {0x007fffe7, 23}, {0x00ffffef, 24}, + {0x003fffda, 22}, {0x001fffdd, 21}, {0x000fffe9, 20}, {0x003fffdb, 22}, + {0x003fffdc, 22}, {0x007fffe8, 23}, {0x007fffe9, 23}, {0x001fffde, 21}, + {0x007fffea, 23}, {0x003fffdd, 22}, {0x003fffde, 22}, {0x00fffff0, 24}, + {0x001fffdf, 21}, {0x003fffdf, 22}, {0x007fffeb, 23}, {0x007fffec, 23}, + {0x001fffe0, 21}, {0x001fffe1, 21}, {0x003fffe0, 22}, {0x001fffe2, 21}, + {0x007fffed, 23}, {0x003fffe1, 22}, {0x007fffee, 23}, {0x007fffef, 23}, + {0x000fffea, 20}, {0x003fffe2, 22}, {0x003fffe3, 22}, {0x003fffe4, 22}, + {0x007ffff0, 23}, {0x003fffe5, 22}, {0x003fffe6, 22}, {0x007ffff1, 23}, + {0x03ffffe0, 26}, {0x03ffffe1, 26}, {0x000fffeb, 20}, {0x0007fff1, 19}, + {0x003fffe7, 22}, {0x007ffff2, 23}, {0x003fffe8, 22}, {0x01ffffec, 25}, + {0x03ffffe2, 26}, {0x03ffffe3, 26}, {0x03ffffe4, 26}, {0x07ffffde, 27}, + {0x07ffffdf, 27}, {0x03ffffe5, 26}, {0x00fffff1, 24}, {0x01ffffed, 25}, + {0x0007fff2, 19}, {0x001fffe3, 21}, {0x03ffffe6, 26}, {0x07ffffe0, 27}, + {0x07ffffe1, 27}, {0x03ffffe7, 26}, {0x07ffffe2, 27}, {0x00fffff2, 24}, + {0x001fffe4, 21}, {0x001fffe5, 21}, {0x03ffffe8, 26}, {0x03ffffe9, 26}, + {0x0ffffffd, 28}, {0x07ffffe3, 27}, {0x07ffffe4, 27}, {0x07ffffe5, 27}, + {0x000fffec, 20}, {0x00fffff3, 24}, {0x000fffed, 20}, {0x001fffe6, 21}, + {0x003fffe9, 22}, {0x001fffe7, 21}, {0x001fffe8, 21}, {0x007ffff3, 23}, + {0x003fffea, 22}, {0x003fffeb, 22}, {0x01ffffee, 25}, {0x01ffffef, 25}, + {0x00fffff4, 24}, {0x00fffff5, 24}, {0x03ffffea, 26}, {0x007ffff4, 23}, + {0x03ffffeb, 26}, {0x07ffffe6, 27}, {0x03ffffec, 26}, {0x03ffffed, 26}, + {0x07ffffe7, 27}, {0x07ffffe8, 27}, {0x07ffffe9, 27}, {0x07ffffea, 27}, + {0x07ffffeb, 27}, {0x0ffffffe, 28}, {0x07ffffec, 27}, {0x07ffffed, 27}, + {0x07ffffee, 27}, {0x07ffffef, 27}, {0x07fffff0, 27}, {0x03ffffee, 26} +}; + + +/* same as above, but embeds lowercase transformation */ +static ngx_http_v2_huff_encode_code_t ngx_http_v2_huff_encode_table_lc[256] = +{ + {0x00001ff8, 13}, {0x007fffd8, 23}, {0x0fffffe2, 28}, {0x0fffffe3, 28}, + {0x0fffffe4, 28}, {0x0fffffe5, 28}, {0x0fffffe6, 28}, {0x0fffffe7, 28}, + {0x0fffffe8, 28}, {0x00ffffea, 24}, {0x3ffffffc, 30}, {0x0fffffe9, 28}, + {0x0fffffea, 28}, {0x3ffffffd, 30}, {0x0fffffeb, 28}, {0x0fffffec, 28}, + {0x0fffffed, 28}, {0x0fffffee, 28}, {0x0fffffef, 28}, {0x0ffffff0, 28}, + {0x0ffffff1, 28}, {0x0ffffff2, 28}, {0x3ffffffe, 30}, {0x0ffffff3, 28}, + {0x0ffffff4, 28}, {0x0ffffff5, 28}, {0x0ffffff6, 28}, {0x0ffffff7, 28}, + {0x0ffffff8, 28}, {0x0ffffff9, 28}, {0x0ffffffa, 28}, {0x0ffffffb, 28}, + {0x00000014, 6}, {0x000003f8, 10}, {0x000003f9, 10}, {0x00000ffa, 12}, + {0x00001ff9, 13}, {0x00000015, 6}, {0x000000f8, 8}, {0x000007fa, 11}, + {0x000003fa, 10}, {0x000003fb, 10}, {0x000000f9, 8}, {0x000007fb, 11}, + {0x000000fa, 8}, {0x00000016, 6}, {0x00000017, 6}, {0x00000018, 6}, + {0x00000000, 5}, {0x00000001, 5}, {0x00000002, 5}, {0x00000019, 6}, + {0x0000001a, 6}, {0x0000001b, 6}, {0x0000001c, 6}, {0x0000001d, 6}, + {0x0000001e, 6}, {0x0000001f, 6}, {0x0000005c, 7}, {0x000000fb, 8}, + {0x00007ffc, 15}, {0x00000020, 6}, {0x00000ffb, 12}, {0x000003fc, 10}, + {0x00001ffa, 13}, {0x00000003, 5}, {0x00000023, 6}, {0x00000004, 5}, + {0x00000024, 6}, {0x00000005, 5}, {0x00000025, 6}, {0x00000026, 6}, + {0x00000027, 6}, {0x00000006, 5}, {0x00000074, 7}, {0x00000075, 7}, + {0x00000028, 6}, {0x00000029, 6}, {0x0000002a, 6}, {0x00000007, 5}, + {0x0000002b, 6}, {0x00000076, 7}, {0x0000002c, 6}, {0x00000008, 5}, + {0x00000009, 5}, {0x0000002d, 6}, {0x00000077, 7}, {0x00000078, 7}, + {0x00000079, 7}, {0x0000007a, 7}, {0x0000007b, 7}, {0x00001ffb, 13}, + {0x0007fff0, 19}, {0x00001ffc, 13}, {0x00003ffc, 14}, {0x00000022, 6}, + {0x00007ffd, 15}, {0x00000003, 5}, {0x00000023, 6}, {0x00000004, 5}, + {0x00000024, 6}, {0x00000005, 5}, {0x00000025, 6}, {0x00000026, 6}, + {0x00000027, 6}, {0x00000006, 5}, {0x00000074, 7}, {0x00000075, 7}, + {0x00000028, 6}, {0x00000029, 6}, {0x0000002a, 6}, {0x00000007, 5}, + {0x0000002b, 6}, {0x00000076, 7}, {0x0000002c, 6}, {0x00000008, 5}, + {0x00000009, 5}, {0x0000002d, 6}, {0x00000077, 7}, {0x00000078, 7}, + {0x00000079, 7}, {0x0000007a, 7}, {0x0000007b, 7}, {0x00007ffe, 15}, + {0x000007fc, 11}, {0x00003ffd, 14}, {0x00001ffd, 13}, {0x0ffffffc, 28}, + {0x000fffe6, 20}, {0x003fffd2, 22}, {0x000fffe7, 20}, {0x000fffe8, 20}, + {0x003fffd3, 22}, {0x003fffd4, 22}, {0x003fffd5, 22}, {0x007fffd9, 23}, + {0x003fffd6, 22}, {0x007fffda, 23}, {0x007fffdb, 23}, {0x007fffdc, 23}, + {0x007fffdd, 23}, {0x007fffde, 23}, {0x00ffffeb, 24}, {0x007fffdf, 23}, + {0x00ffffec, 24}, {0x00ffffed, 24}, {0x003fffd7, 22}, {0x007fffe0, 23}, + {0x00ffffee, 24}, {0x007fffe1, 23}, {0x007fffe2, 23}, {0x007fffe3, 23}, + {0x007fffe4, 23}, {0x001fffdc, 21}, {0x003fffd8, 22}, {0x007fffe5, 23}, + {0x003fffd9, 22}, {0x007fffe6, 23}, {0x007fffe7, 23}, {0x00ffffef, 24}, + {0x003fffda, 22}, {0x001fffdd, 21}, {0x000fffe9, 20}, {0x003fffdb, 22}, + {0x003fffdc, 22}, {0x007fffe8, 23}, {0x007fffe9, 23}, {0x001fffde, 21}, + {0x007fffea, 23}, {0x003fffdd, 22}, {0x003fffde, 22}, {0x00fffff0, 24}, + {0x001fffdf, 21}, {0x003fffdf, 22}, {0x007fffeb, 23}, {0x007fffec, 23}, + {0x001fffe0, 21}, {0x001fffe1, 21}, {0x003fffe0, 22}, {0x001fffe2, 21}, + {0x007fffed, 23}, {0x003fffe1, 22}, {0x007fffee, 23}, {0x007fffef, 23}, + {0x000fffea, 20}, {0x003fffe2, 22}, {0x003fffe3, 22}, {0x003fffe4, 22}, + {0x007ffff0, 23}, {0x003fffe5, 22}, {0x003fffe6, 22}, {0x007ffff1, 23}, + {0x03ffffe0, 26}, {0x03ffffe1, 26}, {0x000fffeb, 20}, {0x0007fff1, 19}, + {0x003fffe7, 22}, {0x007ffff2, 23}, {0x003fffe8, 22}, {0x01ffffec, 25}, + {0x03ffffe2, 26}, {0x03ffffe3, 26}, {0x03ffffe4, 26}, {0x07ffffde, 27}, + {0x07ffffdf, 27}, {0x03ffffe5, 26}, {0x00fffff1, 24}, {0x01ffffed, 25}, + {0x0007fff2, 19}, {0x001fffe3, 21}, {0x03ffffe6, 26}, {0x07ffffe0, 27}, + {0x07ffffe1, 27}, {0x03ffffe7, 26}, {0x07ffffe2, 27}, {0x00fffff2, 24}, + {0x001fffe4, 21}, {0x001fffe5, 21}, {0x03ffffe8, 26}, {0x03ffffe9, 26}, + {0x0ffffffd, 28}, {0x07ffffe3, 27}, {0x07ffffe4, 27}, {0x07ffffe5, 27}, + {0x000fffec, 20}, {0x00fffff3, 24}, {0x000fffed, 20}, {0x001fffe6, 21}, + {0x003fffe9, 22}, {0x001fffe7, 21}, {0x001fffe8, 21}, {0x007ffff3, 23}, + {0x003fffea, 22}, {0x003fffeb, 22}, {0x01ffffee, 25}, {0x01ffffef, 25}, + {0x00fffff4, 24}, {0x00fffff5, 24}, {0x03ffffea, 26}, {0x007ffff4, 23}, + {0x03ffffeb, 26}, {0x07ffffe6, 27}, {0x03ffffec, 26}, {0x03ffffed, 26}, + {0x07ffffe7, 27}, {0x07ffffe8, 27}, {0x07ffffe9, 27}, {0x07ffffea, 27}, + {0x07ffffeb, 27}, {0x0ffffffe, 28}, {0x07ffffec, 27}, {0x07ffffed, 27}, + {0x07ffffee, 27}, {0x07ffffef, 27}, {0x07fffff0, 27}, {0x03ffffee, 26} +}; + + +#if (NGX_PTR_SIZE == 8) + +#if (NGX_HAVE_LITTLE_ENDIAN) + +#if (NGX_HAVE_GCC_BSWAP64) +#define ngx_http_v2_huff_encode_buf(dst, buf) \ + (*(uint64_t *) (dst) = __builtin_bswap64(buf)) +#else +#define ngx_http_v2_huff_encode_buf(dst, buf) \ + ((dst)[0] = (u_char) ((buf) >> 56), \ + (dst)[1] = (u_char) ((buf) >> 48), \ + (dst)[2] = (u_char) ((buf) >> 40), \ + (dst)[3] = (u_char) ((buf) >> 32), \ + (dst)[4] = (u_char) ((buf) >> 24), \ + (dst)[5] = (u_char) ((buf) >> 16), \ + (dst)[6] = (u_char) ((buf) >> 8), \ + (dst)[7] = (u_char) (buf)) +#endif + +#else /* !NGX_HAVE_LITTLE_ENDIAN */ +#define ngx_http_v2_huff_encode_buf(dst, buf) \ + (*(uint64_t *) (dst) = (buf)) +#endif + +#else /* NGX_PTR_SIZE == 4 */ + +#define ngx_http_v2_huff_encode_buf(dst, buf) \ + (*(uint32_t *) (dst) = htonl(buf)) + +#endif + + +size_t +ngx_http_v2_huff_encode(u_char *src, size_t len, u_char *dst, ngx_uint_t lower) +{ + u_char *end; + size_t hlen; + ngx_uint_t buf, pending, code; + ngx_http_v2_huff_encode_code_t *table, *next; + + table = lower ? ngx_http_v2_huff_encode_table_lc + : ngx_http_v2_huff_encode_table; + hlen = 0; + buf = 0; + pending = 0; + + end = src + len; + + while (src != end) { + next = &table[*src++]; + + code = next->code; + pending += next->len; + + /* accumulate bits */ + if (pending < sizeof(buf) * 8) { + buf |= code << (sizeof(buf) * 8 - pending); + continue; + } + + if (hlen + sizeof(buf) >= len) { + return 0; + } + + pending -= sizeof(buf) * 8; + + buf |= code >> pending; + + ngx_http_v2_huff_encode_buf(&dst[hlen], buf); + + hlen += sizeof(buf); + + buf = pending ? code << (sizeof(buf) * 8 - pending) : 0; + } + + if (pending == 0) { + return hlen; + } + + buf |= (ngx_uint_t) -1 >> pending; + + pending = ngx_align(pending, 8); + + if (hlen + pending / 8 >= len) { + return 0; + } + + buf >>= sizeof(buf) * 8 - pending; + + do { + pending -= 8; + dst[hlen++] = (u_char) (buf >> pending); + } while (pending); + + return hlen; +} Renamed: vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/http/v2/ngx_http_v2_table.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_auth_http_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_core_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_imap_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_imap_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_imap_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_pop3_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_pop3_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_pop3_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_proxy_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_smtp_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_smtp_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_smtp_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_ssl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mail/ngx_mail_ssl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/misc/ngx_cpp_test_module.cpp (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/misc/ngx_google_perftools_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mysql/config (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mysql/ngx_http_mysql_test.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mysql/ngx_mysql.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/mysql/ngx_mysql.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_alloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_alloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_atomic.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_channel.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_channel.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_daemon.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_darwin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_darwin_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_darwin_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_darwin_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_dlopen.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_dlopen.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_errno.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_errno.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_file_aio_read.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_files.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_files.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_freebsd.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_freebsd_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_freebsd_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_freebsd_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_gcc_atomic_amd64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_gcc_atomic_ppc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_gcc_atomic_sparc64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_gcc_atomic_x86.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_linux.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_linux_aio_read.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_linux_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_linux_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_linux_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_os.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_posix_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_posix_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_process.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_process.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_process_cycle.c (+1 -1) 99% =================================================================== --- vendor/nginx-1.9.11/src/os/unix/ngx_process_cycle.c 2016-03-25 21:02:44 +0900 (7c6bf7a) +++ vendor/nginx-1.9.12/src/os/unix/ngx_process_cycle.c 2016-03-25 22:13:23 +0900 (9be6376) @@ -784,9 +784,9 @@ static void ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker) { sigset_t set; - uint64_t cpu_affinity; ngx_int_t n; ngx_uint_t i; + ngx_cpuset_t *cpu_affinity; struct rlimit rlmt; ngx_core_conf_t *ccf; ngx_listening_t *ls; Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_process_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_readv_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_recv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_send.c (+0 -0) 100% =================================================================== Added: vendor/nginx-1.9.12/src/os/unix/ngx_setaffinity.c (+53 -0) 100644 =================================================================== --- /dev/null +++ vendor/nginx-1.9.12/src/os/unix/ngx_setaffinity.c 2016-03-25 22:13:23 +0900 (34ec390) @@ -0,0 +1,53 @@ + +/* + * Copyright (C) Nginx, Inc. + */ + + +#include <ngx_config.h> +#include <ngx_core.h> + + +#if (NGX_HAVE_CPUSET_SETAFFINITY) + +void +ngx_setaffinity(ngx_cpuset_t *cpu_affinity, ngx_log_t *log) +{ + ngx_uint_t i; + + for (i = 0; i < CPU_SETSIZE; i++) { + if (CPU_ISSET(i, cpu_affinity)) { + ngx_log_error(NGX_LOG_NOTICE, log, 0, + "cpuset_setaffinity(): using cpu #%ui", i); + } + } + + if (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, + sizeof(cpuset_t), cpu_affinity) == -1) + { + ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, + "cpuset_setaffinity() failed"); + } +} + +#elif (NGX_HAVE_SCHED_SETAFFINITY) + +void +ngx_setaffinity(ngx_cpuset_t *cpu_affinity, ngx_log_t *log) +{ + ngx_uint_t i; + + for (i = 0; i < CPU_SETSIZE; i++) { + if (CPU_ISSET(i, cpu_affinity)) { + ngx_log_error(NGX_LOG_NOTICE, log, 0, + "sched_setaffinity(): using cpu #%ui", i); + } + } + + if (sched_setaffinity(0, sizeof(cpu_set_t), cpu_affinity) == -1) { + ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, + "sched_setaffinity() failed"); + } +} + +#endif Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_setaffinity.h (+15 -1) 53% =================================================================== --- vendor/nginx-1.9.11/src/os/unix/ngx_setaffinity.h 2016-03-25 21:02:44 +0900 (33f5835) +++ vendor/nginx-1.9.12/src/os/unix/ngx_setaffinity.h 2016-03-25 22:13:23 +0900 (a4139ed) @@ -11,12 +11,26 @@ #define NGX_HAVE_CPU_AFFINITY 1 -void ngx_setaffinity(uint64_t cpu_affinity, ngx_log_t *log); +#if (NGX_HAVE_SCHED_SETAFFINITY) + +typedef cpu_set_t ngx_cpuset_t; + +#elif (NGX_HAVE_CPUSET_SETAFFINITY) + +#include <sys/cpuset.h> + +typedef cpuset_t ngx_cpuset_t; + +#endif + +void ngx_setaffinity(ngx_cpuset_t *cpu_affinity, ngx_log_t *log); #else #define ngx_setaffinity(cpu_affinity, log) +typedef uint64_t ngx_cpuset_t; + #endif Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_setproctitle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_setproctitle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_shmem.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_shmem.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_socket.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_socket.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_solaris.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_solaris_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_solaris_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_solaris_sendfilev_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_sunpro_amd64.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_sunpro_atomic_sparc64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_sunpro_sparc64.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_sunpro_x86.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_thread.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_thread_cond.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_thread_id.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_thread_mutex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_udp_recv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_user.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_user.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/unix/ngx_writev_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/nginx.ico (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/nginx.rc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/nginx_icon16.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/nginx_icon32.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/nginx_icon48.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_alloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_alloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_atomic.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_dlopen.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_dlopen.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_errno.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_errno.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_event_log.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_files.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_files.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_os.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_process.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_process.h (+3 -0) 97% =================================================================== --- vendor/nginx-1.9.11/src/os/win32/ngx_process.h 2016-03-25 21:02:44 +0900 (9246a9b) +++ vendor/nginx-1.9.12/src/os/win32/ngx_process.h 2016-03-25 22:13:23 +0900 (a6a5aa2) @@ -21,6 +21,9 @@ typedef DWORD ngx_pid_t; (sizeof("ngx_cache_manager_mutex_") + NGX_INT32_LEN) +typedef uint64_t ngx_cpuset_t; + + typedef struct { HANDLE handle; ngx_pid_t pid; Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_process_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_process_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_service.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_shmem.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_shmem.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_socket.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_socket.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_stat.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_thread.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_thread.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_udp_wsarecv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_user.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_user.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_win32_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_win32_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_wsarecv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_wsarecv_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_wsasend.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/os/win32/ngx_wsasend_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_access_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_core_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_limit_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_proxy_module.c (+2 -5) 99% =================================================================== --- vendor/nginx-1.9.11/src/stream/ngx_stream_proxy_module.c 2016-03-25 21:02:44 +0900 (6800500) +++ vendor/nginx-1.9.12/src/stream/ngx_stream_proxy_module.c 2016-03-25 22:13:23 +0900 (b969fea) @@ -10,9 +10,6 @@ #include <ngx_stream.h> -typedef void (*ngx_stream_proxy_handler_pt)(ngx_stream_session_t *s); - - typedef struct { ngx_msec_t connect_timeout; ngx_msec_t timeout; @@ -435,8 +432,6 @@ ngx_stream_proxy_connect(ngx_stream_session_t *s) ngx_log_debug1(NGX_LOG_DEBUG_STREAM, c->log, 0, "proxy connect: %i", rc); - pscf = ngx_stream_get_module_srv_conf(s, ngx_stream_proxy_module); - if (rc == NGX_ERROR) { ngx_stream_proxy_finalize(s, NGX_ERROR); return; @@ -471,6 +466,8 @@ ngx_stream_proxy_connect(ngx_stream_session_t *s) pc->read->handler = ngx_stream_proxy_connect_handler; pc->write->handler = ngx_stream_proxy_connect_handler; + pscf = ngx_stream_get_module_srv_conf(s, ngx_stream_proxy_module); + ngx_add_timer(pc->write, pscf->connect_timeout); } Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_ssl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_ssl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_upstream.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_upstream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_hash_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_least_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_round_robin.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_round_robin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.9.12/src/stream/ngx_stream_upstream_zone_module.c (+0 -0) 100% ===================================================================