Kentaro Hayashi
null+****@clear*****
Tue Dec 27 23:47:36 JST 2016
Kentaro Hayashi 2016-12-27 23:47:36 +0900 (Tue, 27 Dec 2016) New Revision: 2bf7d9b3c774d5082f52fa26c53aacd4cde77781 https://github.com/groonga/groonga/commit/2bf7d9b3c774d5082f52fa26c53aacd4cde77781 Message: nginx: bundle latest release $ ./update_nginx.sh 1.11.8 Added files: vendor/nginx-1.11.8/auto/lib/openssl/makefile.msvc vendor/nginx-1.11.8/contrib/vim/ftplugin/nginx.vim Removed files: vendor/nginx-1.11.6/auto/lib/openssl/makefile.msvc Modified files: nginx_version Renamed files: vendor/nginx-1.11.8/auto/cc/acc (from vendor/nginx-1.11.6/auto/cc/acc) vendor/nginx-1.11.8/auto/cc/bcc (from vendor/nginx-1.11.6/auto/cc/bcc) vendor/nginx-1.11.8/auto/cc/ccc (from vendor/nginx-1.11.6/auto/cc/ccc) vendor/nginx-1.11.8/auto/cc/clang (from vendor/nginx-1.11.6/auto/cc/clang) vendor/nginx-1.11.8/auto/cc/conf (from vendor/nginx-1.11.6/auto/cc/conf) vendor/nginx-1.11.8/auto/cc/gcc (from vendor/nginx-1.11.6/auto/cc/gcc) vendor/nginx-1.11.8/auto/cc/icc (from vendor/nginx-1.11.6/auto/cc/icc) vendor/nginx-1.11.8/auto/cc/msvc (from vendor/nginx-1.11.6/auto/cc/msvc) vendor/nginx-1.11.8/auto/cc/name (from vendor/nginx-1.11.6/auto/cc/name) vendor/nginx-1.11.8/auto/cc/owc (from vendor/nginx-1.11.6/auto/cc/owc) vendor/nginx-1.11.8/auto/cc/sunc (from vendor/nginx-1.11.6/auto/cc/sunc) vendor/nginx-1.11.8/auto/configure (from vendor/nginx-1.11.6/auto/configure) vendor/nginx-1.11.8/auto/define (from vendor/nginx-1.11.6/auto/define) vendor/nginx-1.11.8/auto/endianness (from vendor/nginx-1.11.6/auto/endianness) vendor/nginx-1.11.8/auto/feature (from vendor/nginx-1.11.6/auto/feature) vendor/nginx-1.11.8/auto/have (from vendor/nginx-1.11.6/auto/have) vendor/nginx-1.11.8/auto/have_headers (from vendor/nginx-1.11.6/auto/have_headers) vendor/nginx-1.11.8/auto/headers (from vendor/nginx-1.11.6/auto/headers) vendor/nginx-1.11.8/auto/include (from vendor/nginx-1.11.6/auto/include) vendor/nginx-1.11.8/auto/init (from vendor/nginx-1.11.6/auto/init) vendor/nginx-1.11.8/auto/install (from vendor/nginx-1.11.6/auto/install) vendor/nginx-1.11.8/auto/lib/conf (from vendor/nginx-1.11.6/auto/lib/conf) vendor/nginx-1.11.8/auto/lib/geoip/conf (from vendor/nginx-1.11.6/auto/lib/geoip/conf) vendor/nginx-1.11.8/auto/lib/google-perftools/conf (from vendor/nginx-1.11.6/auto/lib/google-perftools/conf) vendor/nginx-1.11.8/auto/lib/libatomic/conf (from vendor/nginx-1.11.6/auto/lib/libatomic/conf) vendor/nginx-1.11.8/auto/lib/libatomic/make (from vendor/nginx-1.11.6/auto/lib/libatomic/make) vendor/nginx-1.11.8/auto/lib/libgd/conf (from vendor/nginx-1.11.6/auto/lib/libgd/conf) vendor/nginx-1.11.8/auto/lib/libxslt/conf (from vendor/nginx-1.11.6/auto/lib/libxslt/conf) vendor/nginx-1.11.8/auto/lib/make (from vendor/nginx-1.11.6/auto/lib/make) vendor/nginx-1.11.8/auto/lib/openssl/conf (from vendor/nginx-1.11.6/auto/lib/openssl/conf) vendor/nginx-1.11.8/auto/lib/openssl/make (from vendor/nginx-1.11.6/auto/lib/openssl/make) vendor/nginx-1.11.8/auto/lib/openssl/makefile.bcc (from vendor/nginx-1.11.6/auto/lib/openssl/makefile.bcc) vendor/nginx-1.11.8/auto/lib/pcre/conf (from vendor/nginx-1.11.6/auto/lib/pcre/conf) vendor/nginx-1.11.8/auto/lib/pcre/make (from vendor/nginx-1.11.6/auto/lib/pcre/make) vendor/nginx-1.11.8/auto/lib/pcre/makefile.bcc (from vendor/nginx-1.11.6/auto/lib/pcre/makefile.bcc) vendor/nginx-1.11.8/auto/lib/pcre/makefile.msvc (from vendor/nginx-1.11.6/auto/lib/pcre/makefile.msvc) vendor/nginx-1.11.8/auto/lib/pcre/makefile.owc (from vendor/nginx-1.11.6/auto/lib/pcre/makefile.owc) vendor/nginx-1.11.8/auto/lib/perl/conf (from vendor/nginx-1.11.6/auto/lib/perl/conf) vendor/nginx-1.11.8/auto/lib/perl/make (from vendor/nginx-1.11.6/auto/lib/perl/make) vendor/nginx-1.11.8/auto/lib/zlib/conf (from vendor/nginx-1.11.6/auto/lib/zlib/conf) vendor/nginx-1.11.8/auto/lib/zlib/make (from vendor/nginx-1.11.6/auto/lib/zlib/make) vendor/nginx-1.11.8/auto/lib/zlib/makefile.bcc (from vendor/nginx-1.11.6/auto/lib/zlib/makefile.bcc) vendor/nginx-1.11.8/auto/lib/zlib/makefile.msvc (from vendor/nginx-1.11.6/auto/lib/zlib/makefile.msvc) vendor/nginx-1.11.8/auto/lib/zlib/makefile.owc (from vendor/nginx-1.11.6/auto/lib/zlib/makefile.owc) vendor/nginx-1.11.8/auto/make (from vendor/nginx-1.11.6/auto/make) vendor/nginx-1.11.8/auto/module (from vendor/nginx-1.11.6/auto/module) vendor/nginx-1.11.8/auto/modules (from vendor/nginx-1.11.6/auto/modules) vendor/nginx-1.11.8/auto/nohave (from vendor/nginx-1.11.6/auto/nohave) vendor/nginx-1.11.8/auto/options (from vendor/nginx-1.11.6/auto/options) vendor/nginx-1.11.8/auto/os/conf (from vendor/nginx-1.11.6/auto/os/conf) vendor/nginx-1.11.8/auto/os/darwin (from vendor/nginx-1.11.6/auto/os/darwin) vendor/nginx-1.11.8/auto/os/freebsd (from vendor/nginx-1.11.6/auto/os/freebsd) vendor/nginx-1.11.8/auto/os/linux (from vendor/nginx-1.11.6/auto/os/linux) vendor/nginx-1.11.8/auto/os/solaris (from vendor/nginx-1.11.6/auto/os/solaris) vendor/nginx-1.11.8/auto/os/win32 (from vendor/nginx-1.11.6/auto/os/win32) vendor/nginx-1.11.8/auto/sources (from vendor/nginx-1.11.6/auto/sources) vendor/nginx-1.11.8/auto/stubs (from vendor/nginx-1.11.6/auto/stubs) vendor/nginx-1.11.8/auto/summary (from vendor/nginx-1.11.6/auto/summary) vendor/nginx-1.11.8/auto/threads (from vendor/nginx-1.11.6/auto/threads) vendor/nginx-1.11.8/auto/types/sizeof (from vendor/nginx-1.11.6/auto/types/sizeof) vendor/nginx-1.11.8/auto/types/typedef (from vendor/nginx-1.11.6/auto/types/typedef) vendor/nginx-1.11.8/auto/types/uintptr_t (from vendor/nginx-1.11.6/auto/types/uintptr_t) vendor/nginx-1.11.8/auto/types/value (from vendor/nginx-1.11.6/auto/types/value) vendor/nginx-1.11.8/auto/unix (from vendor/nginx-1.11.6/auto/unix) vendor/nginx-1.11.8/conf/fastcgi.conf (from vendor/nginx-1.11.6/conf/fastcgi.conf) vendor/nginx-1.11.8/conf/fastcgi_params (from vendor/nginx-1.11.6/conf/fastcgi_params) vendor/nginx-1.11.8/conf/koi-utf (from vendor/nginx-1.11.6/conf/koi-utf) vendor/nginx-1.11.8/conf/koi-win (from vendor/nginx-1.11.6/conf/koi-win) vendor/nginx-1.11.8/conf/mime.types (from vendor/nginx-1.11.6/conf/mime.types) vendor/nginx-1.11.8/conf/nginx.conf (from vendor/nginx-1.11.6/conf/nginx.conf) vendor/nginx-1.11.8/conf/scgi_params (from vendor/nginx-1.11.6/conf/scgi_params) vendor/nginx-1.11.8/conf/uwsgi_params (from vendor/nginx-1.11.6/conf/uwsgi_params) vendor/nginx-1.11.8/conf/win-utf (from vendor/nginx-1.11.6/conf/win-utf) vendor/nginx-1.11.8/contrib/README (from vendor/nginx-1.11.6/contrib/README) vendor/nginx-1.11.8/contrib/geo2nginx.pl (from vendor/nginx-1.11.6/contrib/geo2nginx.pl) vendor/nginx-1.11.8/contrib/unicode2nginx/koi-utf (from vendor/nginx-1.11.6/contrib/unicode2nginx/koi-utf) vendor/nginx-1.11.8/contrib/unicode2nginx/unicode-to-nginx.pl (from vendor/nginx-1.11.6/contrib/unicode2nginx/unicode-to-nginx.pl) vendor/nginx-1.11.8/contrib/unicode2nginx/win-utf (from vendor/nginx-1.11.6/contrib/unicode2nginx/win-utf) vendor/nginx-1.11.8/contrib/vim/ftdetect/nginx.vim (from vendor/nginx-1.11.6/contrib/vim/ftdetect/nginx.vim) vendor/nginx-1.11.8/contrib/vim/indent/nginx.vim (from vendor/nginx-1.11.6/contrib/vim/indent/nginx.vim) vendor/nginx-1.11.8/contrib/vim/syntax/nginx.vim (from vendor/nginx-1.11.6/contrib/vim/syntax/nginx.vim) vendor/nginx-1.11.8/docs/GNUmakefile (from vendor/nginx-1.11.6/docs/GNUmakefile) vendor/nginx-1.11.8/docs/dtd/change_log_conf.dtd (from vendor/nginx-1.11.6/docs/dtd/change_log_conf.dtd) vendor/nginx-1.11.8/docs/dtd/changes.dtd (from vendor/nginx-1.11.6/docs/dtd/changes.dtd) vendor/nginx-1.11.8/docs/html/50x.html (from vendor/nginx-1.11.6/docs/html/50x.html) vendor/nginx-1.11.8/docs/html/index.html (from vendor/nginx-1.11.6/docs/html/index.html) vendor/nginx-1.11.8/docs/man/nginx.8 (from vendor/nginx-1.11.6/docs/man/nginx.8) vendor/nginx-1.11.8/docs/text/LICENSE (from vendor/nginx-1.11.6/docs/text/LICENSE) vendor/nginx-1.11.8/docs/text/README (from vendor/nginx-1.11.6/docs/text/README) vendor/nginx-1.11.8/docs/xml/change_log_conf.xml (from vendor/nginx-1.11.6/docs/xml/change_log_conf.xml) vendor/nginx-1.11.8/docs/xml/nginx/changes.xml (from vendor/nginx-1.11.6/docs/xml/nginx/changes.xml) vendor/nginx-1.11.8/docs/xsls/changes.xsls (from vendor/nginx-1.11.6/docs/xsls/changes.xsls) vendor/nginx-1.11.8/docs/xslt/changes.xslt (from vendor/nginx-1.11.6/docs/xslt/changes.xslt) vendor/nginx-1.11.8/misc/GNUmakefile (from vendor/nginx-1.11.6/misc/GNUmakefile) vendor/nginx-1.11.8/misc/README (from vendor/nginx-1.11.6/misc/README) vendor/nginx-1.11.8/src/core/nginx.c (from vendor/nginx-1.11.6/src/core/nginx.c) vendor/nginx-1.11.8/src/core/nginx.h (from vendor/nginx-1.11.6/src/core/nginx.h) vendor/nginx-1.11.8/src/core/ngx_array.c (from vendor/nginx-1.11.6/src/core/ngx_array.c) vendor/nginx-1.11.8/src/core/ngx_array.h (from vendor/nginx-1.11.6/src/core/ngx_array.h) vendor/nginx-1.11.8/src/core/ngx_buf.c (from vendor/nginx-1.11.6/src/core/ngx_buf.c) vendor/nginx-1.11.8/src/core/ngx_buf.h (from vendor/nginx-1.11.6/src/core/ngx_buf.h) vendor/nginx-1.11.8/src/core/ngx_conf_file.c (from vendor/nginx-1.11.6/src/core/ngx_conf_file.c) vendor/nginx-1.11.8/src/core/ngx_conf_file.h (from vendor/nginx-1.11.6/src/core/ngx_conf_file.h) vendor/nginx-1.11.8/src/core/ngx_config.h (from vendor/nginx-1.11.6/src/core/ngx_config.h) vendor/nginx-1.11.8/src/core/ngx_connection.c (from vendor/nginx-1.11.6/src/core/ngx_connection.c) vendor/nginx-1.11.8/src/core/ngx_connection.h (from vendor/nginx-1.11.6/src/core/ngx_connection.h) vendor/nginx-1.11.8/src/core/ngx_core.h (from vendor/nginx-1.11.6/src/core/ngx_core.h) vendor/nginx-1.11.8/src/core/ngx_cpuinfo.c (from vendor/nginx-1.11.6/src/core/ngx_cpuinfo.c) vendor/nginx-1.11.8/src/core/ngx_crc.h (from vendor/nginx-1.11.6/src/core/ngx_crc.h) vendor/nginx-1.11.8/src/core/ngx_crc32.c (from vendor/nginx-1.11.6/src/core/ngx_crc32.c) vendor/nginx-1.11.8/src/core/ngx_crc32.h (from vendor/nginx-1.11.6/src/core/ngx_crc32.h) vendor/nginx-1.11.8/src/core/ngx_crypt.c (from vendor/nginx-1.11.6/src/core/ngx_crypt.c) vendor/nginx-1.11.8/src/core/ngx_crypt.h (from vendor/nginx-1.11.6/src/core/ngx_crypt.h) vendor/nginx-1.11.8/src/core/ngx_cycle.c (from vendor/nginx-1.11.6/src/core/ngx_cycle.c) vendor/nginx-1.11.8/src/core/ngx_cycle.h (from vendor/nginx-1.11.6/src/core/ngx_cycle.h) vendor/nginx-1.11.8/src/core/ngx_file.c (from vendor/nginx-1.11.6/src/core/ngx_file.c) vendor/nginx-1.11.8/src/core/ngx_file.h (from vendor/nginx-1.11.6/src/core/ngx_file.h) vendor/nginx-1.11.8/src/core/ngx_hash.c (from vendor/nginx-1.11.6/src/core/ngx_hash.c) vendor/nginx-1.11.8/src/core/ngx_hash.h (from vendor/nginx-1.11.6/src/core/ngx_hash.h) vendor/nginx-1.11.8/src/core/ngx_inet.c (from vendor/nginx-1.11.6/src/core/ngx_inet.c) vendor/nginx-1.11.8/src/core/ngx_inet.h (from vendor/nginx-1.11.6/src/core/ngx_inet.h) vendor/nginx-1.11.8/src/core/ngx_list.c (from vendor/nginx-1.11.6/src/core/ngx_list.c) vendor/nginx-1.11.8/src/core/ngx_list.h (from vendor/nginx-1.11.6/src/core/ngx_list.h) vendor/nginx-1.11.8/src/core/ngx_log.c (from vendor/nginx-1.11.6/src/core/ngx_log.c) vendor/nginx-1.11.8/src/core/ngx_log.h (from vendor/nginx-1.11.6/src/core/ngx_log.h) vendor/nginx-1.11.8/src/core/ngx_md5.c (from vendor/nginx-1.11.6/src/core/ngx_md5.c) vendor/nginx-1.11.8/src/core/ngx_md5.h (from vendor/nginx-1.11.6/src/core/ngx_md5.h) vendor/nginx-1.11.8/src/core/ngx_module.c (from vendor/nginx-1.11.6/src/core/ngx_module.c) vendor/nginx-1.11.8/src/core/ngx_module.h (from vendor/nginx-1.11.6/src/core/ngx_module.h) vendor/nginx-1.11.8/src/core/ngx_murmurhash.c (from vendor/nginx-1.11.6/src/core/ngx_murmurhash.c) vendor/nginx-1.11.8/src/core/ngx_murmurhash.h (from vendor/nginx-1.11.6/src/core/ngx_murmurhash.h) vendor/nginx-1.11.8/src/core/ngx_open_file_cache.c (from vendor/nginx-1.11.6/src/core/ngx_open_file_cache.c) vendor/nginx-1.11.8/src/core/ngx_open_file_cache.h (from vendor/nginx-1.11.6/src/core/ngx_open_file_cache.h) vendor/nginx-1.11.8/src/core/ngx_output_chain.c (from vendor/nginx-1.11.6/src/core/ngx_output_chain.c) vendor/nginx-1.11.8/src/core/ngx_palloc.c (from vendor/nginx-1.11.6/src/core/ngx_palloc.c) vendor/nginx-1.11.8/src/core/ngx_palloc.h (from vendor/nginx-1.11.6/src/core/ngx_palloc.h) vendor/nginx-1.11.8/src/core/ngx_parse.c (from vendor/nginx-1.11.6/src/core/ngx_parse.c) vendor/nginx-1.11.8/src/core/ngx_parse.h (from vendor/nginx-1.11.6/src/core/ngx_parse.h) vendor/nginx-1.11.8/src/core/ngx_parse_time.c (from vendor/nginx-1.11.6/src/core/ngx_parse_time.c) vendor/nginx-1.11.8/src/core/ngx_parse_time.h (from vendor/nginx-1.11.6/src/core/ngx_parse_time.h) vendor/nginx-1.11.8/src/core/ngx_proxy_protocol.c (from vendor/nginx-1.11.6/src/core/ngx_proxy_protocol.c) vendor/nginx-1.11.8/src/core/ngx_proxy_protocol.h (from vendor/nginx-1.11.6/src/core/ngx_proxy_protocol.h) vendor/nginx-1.11.8/src/core/ngx_queue.c (from vendor/nginx-1.11.6/src/core/ngx_queue.c) vendor/nginx-1.11.8/src/core/ngx_queue.h (from vendor/nginx-1.11.6/src/core/ngx_queue.h) vendor/nginx-1.11.8/src/core/ngx_radix_tree.c (from vendor/nginx-1.11.6/src/core/ngx_radix_tree.c) vendor/nginx-1.11.8/src/core/ngx_radix_tree.h (from vendor/nginx-1.11.6/src/core/ngx_radix_tree.h) vendor/nginx-1.11.8/src/core/ngx_rbtree.c (from vendor/nginx-1.11.6/src/core/ngx_rbtree.c) vendor/nginx-1.11.8/src/core/ngx_rbtree.h (from vendor/nginx-1.11.6/src/core/ngx_rbtree.h) vendor/nginx-1.11.8/src/core/ngx_regex.c (from vendor/nginx-1.11.6/src/core/ngx_regex.c) vendor/nginx-1.11.8/src/core/ngx_regex.h (from vendor/nginx-1.11.6/src/core/ngx_regex.h) vendor/nginx-1.11.8/src/core/ngx_resolver.c (from vendor/nginx-1.11.6/src/core/ngx_resolver.c) vendor/nginx-1.11.8/src/core/ngx_resolver.h (from vendor/nginx-1.11.6/src/core/ngx_resolver.h) vendor/nginx-1.11.8/src/core/ngx_rwlock.c (from vendor/nginx-1.11.6/src/core/ngx_rwlock.c) vendor/nginx-1.11.8/src/core/ngx_rwlock.h (from vendor/nginx-1.11.6/src/core/ngx_rwlock.h) vendor/nginx-1.11.8/src/core/ngx_sha1.c (from vendor/nginx-1.11.6/src/core/ngx_sha1.c) vendor/nginx-1.11.8/src/core/ngx_sha1.h (from vendor/nginx-1.11.6/src/core/ngx_sha1.h) vendor/nginx-1.11.8/src/core/ngx_shmtx.c (from vendor/nginx-1.11.6/src/core/ngx_shmtx.c) vendor/nginx-1.11.8/src/core/ngx_shmtx.h (from vendor/nginx-1.11.6/src/core/ngx_shmtx.h) vendor/nginx-1.11.8/src/core/ngx_slab.c (from vendor/nginx-1.11.6/src/core/ngx_slab.c) vendor/nginx-1.11.8/src/core/ngx_slab.h (from vendor/nginx-1.11.6/src/core/ngx_slab.h) vendor/nginx-1.11.8/src/core/ngx_spinlock.c (from vendor/nginx-1.11.6/src/core/ngx_spinlock.c) vendor/nginx-1.11.8/src/core/ngx_string.c (from vendor/nginx-1.11.6/src/core/ngx_string.c) vendor/nginx-1.11.8/src/core/ngx_string.h (from vendor/nginx-1.11.6/src/core/ngx_string.h) vendor/nginx-1.11.8/src/core/ngx_syslog.c (from vendor/nginx-1.11.6/src/core/ngx_syslog.c) vendor/nginx-1.11.8/src/core/ngx_syslog.h (from vendor/nginx-1.11.6/src/core/ngx_syslog.h) vendor/nginx-1.11.8/src/core/ngx_thread_pool.c (from vendor/nginx-1.11.6/src/core/ngx_thread_pool.c) vendor/nginx-1.11.8/src/core/ngx_thread_pool.h (from vendor/nginx-1.11.6/src/core/ngx_thread_pool.h) vendor/nginx-1.11.8/src/core/ngx_times.c (from vendor/nginx-1.11.6/src/core/ngx_times.c) vendor/nginx-1.11.8/src/core/ngx_times.h (from vendor/nginx-1.11.6/src/core/ngx_times.h) vendor/nginx-1.11.8/src/event/modules/ngx_devpoll_module.c (from vendor/nginx-1.11.6/src/event/modules/ngx_devpoll_module.c) vendor/nginx-1.11.8/src/event/modules/ngx_epoll_module.c (from vendor/nginx-1.11.6/src/event/modules/ngx_epoll_module.c) vendor/nginx-1.11.8/src/event/modules/ngx_eventport_module.c (from vendor/nginx-1.11.6/src/event/modules/ngx_eventport_module.c) vendor/nginx-1.11.8/src/event/modules/ngx_iocp_module.c (from vendor/nginx-1.11.6/src/event/modules/ngx_iocp_module.c) vendor/nginx-1.11.8/src/event/modules/ngx_iocp_module.h (from vendor/nginx-1.11.6/src/event/modules/ngx_iocp_module.h) vendor/nginx-1.11.8/src/event/modules/ngx_kqueue_module.c (from vendor/nginx-1.11.6/src/event/modules/ngx_kqueue_module.c) vendor/nginx-1.11.8/src/event/modules/ngx_poll_module.c (from vendor/nginx-1.11.6/src/event/modules/ngx_poll_module.c) vendor/nginx-1.11.8/src/event/modules/ngx_select_module.c (from vendor/nginx-1.11.6/src/event/modules/ngx_select_module.c) vendor/nginx-1.11.8/src/event/modules/ngx_win32_select_module.c (from vendor/nginx-1.11.6/src/event/modules/ngx_win32_select_module.c) vendor/nginx-1.11.8/src/event/ngx_event.c (from vendor/nginx-1.11.6/src/event/ngx_event.c) vendor/nginx-1.11.8/src/event/ngx_event.h (from vendor/nginx-1.11.6/src/event/ngx_event.h) vendor/nginx-1.11.8/src/event/ngx_event_accept.c (from vendor/nginx-1.11.6/src/event/ngx_event_accept.c) vendor/nginx-1.11.8/src/event/ngx_event_acceptex.c (from vendor/nginx-1.11.6/src/event/ngx_event_acceptex.c) vendor/nginx-1.11.8/src/event/ngx_event_connect.c (from vendor/nginx-1.11.6/src/event/ngx_event_connect.c) vendor/nginx-1.11.8/src/event/ngx_event_connect.h (from vendor/nginx-1.11.6/src/event/ngx_event_connect.h) vendor/nginx-1.11.8/src/event/ngx_event_connectex.c (from vendor/nginx-1.11.6/src/event/ngx_event_connectex.c) vendor/nginx-1.11.8/src/event/ngx_event_openssl.c (from vendor/nginx-1.11.6/src/event/ngx_event_openssl.c) vendor/nginx-1.11.8/src/event/ngx_event_openssl.h (from vendor/nginx-1.11.6/src/event/ngx_event_openssl.h) vendor/nginx-1.11.8/src/event/ngx_event_openssl_stapling.c (from vendor/nginx-1.11.6/src/event/ngx_event_openssl_stapling.c) vendor/nginx-1.11.8/src/event/ngx_event_pipe.c (from vendor/nginx-1.11.6/src/event/ngx_event_pipe.c) vendor/nginx-1.11.8/src/event/ngx_event_pipe.h (from vendor/nginx-1.11.6/src/event/ngx_event_pipe.h) vendor/nginx-1.11.8/src/event/ngx_event_posted.c (from vendor/nginx-1.11.6/src/event/ngx_event_posted.c) vendor/nginx-1.11.8/src/event/ngx_event_posted.h (from vendor/nginx-1.11.6/src/event/ngx_event_posted.h) vendor/nginx-1.11.8/src/event/ngx_event_timer.c (from vendor/nginx-1.11.6/src/event/ngx_event_timer.c) vendor/nginx-1.11.8/src/event/ngx_event_timer.h (from vendor/nginx-1.11.6/src/event/ngx_event_timer.h) vendor/nginx-1.11.8/src/http/modules/ngx_http_access_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_access_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_addition_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_addition_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_auth_basic_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_auth_basic_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_auth_request_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_auth_request_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_autoindex_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_autoindex_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_browser_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_browser_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_charset_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_charset_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_chunked_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_chunked_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_dav_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_dav_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_degradation_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_degradation_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_empty_gif_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_empty_gif_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_fastcgi_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_fastcgi_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_flv_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_flv_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_geo_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_geo_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_geoip_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_geoip_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_gunzip_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_gunzip_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_gzip_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_gzip_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_gzip_static_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_gzip_static_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_headers_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_headers_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_image_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_image_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_index_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_index_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_limit_conn_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_limit_conn_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_limit_req_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_limit_req_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_log_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_log_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_map_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_map_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_memcached_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_memcached_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_mp4_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_mp4_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_not_modified_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_not_modified_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_proxy_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_proxy_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_random_index_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_random_index_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_range_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_range_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_realip_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_realip_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_referer_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_referer_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_rewrite_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_rewrite_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_scgi_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_scgi_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_secure_link_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_secure_link_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_slice_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_slice_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_split_clients_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_split_clients_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_ssi_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_ssi_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_ssi_filter_module.h (from vendor/nginx-1.11.6/src/http/modules/ngx_http_ssi_filter_module.h) vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_ssl_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.h (from vendor/nginx-1.11.6/src/http/modules/ngx_http_ssl_module.h) vendor/nginx-1.11.8/src/http/modules/ngx_http_static_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_static_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_stub_status_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_stub_status_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_sub_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_sub_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_hash_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_hash_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_ip_hash_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_ip_hash_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_keepalive_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_keepalive_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_least_conn_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_least_conn_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_zone_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_zone_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_userid_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_userid_filter_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_uwsgi_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_uwsgi_module.c) vendor/nginx-1.11.8/src/http/modules/ngx_http_xslt_filter_module.c (from vendor/nginx-1.11.6/src/http/modules/ngx_http_xslt_filter_module.c) vendor/nginx-1.11.8/src/http/modules/perl/Makefile.PL (from vendor/nginx-1.11.6/src/http/modules/perl/Makefile.PL) vendor/nginx-1.11.8/src/http/modules/perl/nginx.pm (from vendor/nginx-1.11.6/src/http/modules/perl/nginx.pm) vendor/nginx-1.11.8/src/http/modules/perl/nginx.xs (from vendor/nginx-1.11.6/src/http/modules/perl/nginx.xs) vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.c (from vendor/nginx-1.11.6/src/http/modules/perl/ngx_http_perl_module.c) vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.h (from vendor/nginx-1.11.6/src/http/modules/perl/ngx_http_perl_module.h) vendor/nginx-1.11.8/src/http/modules/perl/typemap (from vendor/nginx-1.11.6/src/http/modules/perl/typemap) vendor/nginx-1.11.8/src/http/ngx_http.c (from vendor/nginx-1.11.6/src/http/ngx_http.c) vendor/nginx-1.11.8/src/http/ngx_http.h (from vendor/nginx-1.11.6/src/http/ngx_http.h) vendor/nginx-1.11.8/src/http/ngx_http_cache.h (from vendor/nginx-1.11.6/src/http/ngx_http_cache.h) vendor/nginx-1.11.8/src/http/ngx_http_config.h (from vendor/nginx-1.11.6/src/http/ngx_http_config.h) vendor/nginx-1.11.8/src/http/ngx_http_copy_filter_module.c (from vendor/nginx-1.11.6/src/http/ngx_http_copy_filter_module.c) vendor/nginx-1.11.8/src/http/ngx_http_core_module.c (from vendor/nginx-1.11.6/src/http/ngx_http_core_module.c) vendor/nginx-1.11.8/src/http/ngx_http_core_module.h (from vendor/nginx-1.11.6/src/http/ngx_http_core_module.h) vendor/nginx-1.11.8/src/http/ngx_http_file_cache.c (from vendor/nginx-1.11.6/src/http/ngx_http_file_cache.c) vendor/nginx-1.11.8/src/http/ngx_http_header_filter_module.c (from vendor/nginx-1.11.6/src/http/ngx_http_header_filter_module.c) vendor/nginx-1.11.8/src/http/ngx_http_parse.c (from vendor/nginx-1.11.6/src/http/ngx_http_parse.c) vendor/nginx-1.11.8/src/http/ngx_http_postpone_filter_module.c (from vendor/nginx-1.11.6/src/http/ngx_http_postpone_filter_module.c) vendor/nginx-1.11.8/src/http/ngx_http_request.c (from vendor/nginx-1.11.6/src/http/ngx_http_request.c) vendor/nginx-1.11.8/src/http/ngx_http_request.h (from vendor/nginx-1.11.6/src/http/ngx_http_request.h) vendor/nginx-1.11.8/src/http/ngx_http_request_body.c (from vendor/nginx-1.11.6/src/http/ngx_http_request_body.c) vendor/nginx-1.11.8/src/http/ngx_http_script.c (from vendor/nginx-1.11.6/src/http/ngx_http_script.c) vendor/nginx-1.11.8/src/http/ngx_http_script.h (from vendor/nginx-1.11.6/src/http/ngx_http_script.h) vendor/nginx-1.11.8/src/http/ngx_http_special_response.c (from vendor/nginx-1.11.6/src/http/ngx_http_special_response.c) vendor/nginx-1.11.8/src/http/ngx_http_upstream.c (from vendor/nginx-1.11.6/src/http/ngx_http_upstream.c) vendor/nginx-1.11.8/src/http/ngx_http_upstream.h (from vendor/nginx-1.11.6/src/http/ngx_http_upstream.h) vendor/nginx-1.11.8/src/http/ngx_http_upstream_round_robin.c (from vendor/nginx-1.11.6/src/http/ngx_http_upstream_round_robin.c) vendor/nginx-1.11.8/src/http/ngx_http_upstream_round_robin.h (from vendor/nginx-1.11.6/src/http/ngx_http_upstream_round_robin.h) vendor/nginx-1.11.8/src/http/ngx_http_variables.c (from vendor/nginx-1.11.6/src/http/ngx_http_variables.c) vendor/nginx-1.11.8/src/http/ngx_http_variables.h (from vendor/nginx-1.11.6/src/http/ngx_http_variables.h) vendor/nginx-1.11.8/src/http/ngx_http_write_filter_module.c (from vendor/nginx-1.11.6/src/http/ngx_http_write_filter_module.c) vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.c (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2.c) vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.h (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2.h) vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_filter_module.c (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_filter_module.c) vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_huff_decode.c (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_huff_decode.c) vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_huff_encode.c (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_huff_encode.c) vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_module.c (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_module.c) vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_module.h (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_module.h) vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_table.c (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_table.c) vendor/nginx-1.11.8/src/mail/ngx_mail.c (from vendor/nginx-1.11.6/src/mail/ngx_mail.c) vendor/nginx-1.11.8/src/mail/ngx_mail.h (from vendor/nginx-1.11.6/src/mail/ngx_mail.h) vendor/nginx-1.11.8/src/mail/ngx_mail_auth_http_module.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_auth_http_module.c) vendor/nginx-1.11.8/src/mail/ngx_mail_core_module.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_core_module.c) vendor/nginx-1.11.8/src/mail/ngx_mail_handler.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_handler.c) vendor/nginx-1.11.8/src/mail/ngx_mail_imap_handler.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_imap_handler.c) vendor/nginx-1.11.8/src/mail/ngx_mail_imap_module.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_imap_module.c) vendor/nginx-1.11.8/src/mail/ngx_mail_imap_module.h (from vendor/nginx-1.11.6/src/mail/ngx_mail_imap_module.h) vendor/nginx-1.11.8/src/mail/ngx_mail_parse.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_parse.c) vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_handler.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_pop3_handler.c) vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_module.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_pop3_module.c) vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_module.h (from vendor/nginx-1.11.6/src/mail/ngx_mail_pop3_module.h) vendor/nginx-1.11.8/src/mail/ngx_mail_proxy_module.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_proxy_module.c) vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_handler.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_smtp_handler.c) vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_smtp_module.c) vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.h (from vendor/nginx-1.11.6/src/mail/ngx_mail_smtp_module.h) vendor/nginx-1.11.8/src/mail/ngx_mail_ssl_module.c (from vendor/nginx-1.11.6/src/mail/ngx_mail_ssl_module.c) vendor/nginx-1.11.8/src/mail/ngx_mail_ssl_module.h (from vendor/nginx-1.11.6/src/mail/ngx_mail_ssl_module.h) vendor/nginx-1.11.8/src/misc/ngx_cpp_test_module.cpp (from vendor/nginx-1.11.6/src/misc/ngx_cpp_test_module.cpp) vendor/nginx-1.11.8/src/misc/ngx_google_perftools_module.c (from vendor/nginx-1.11.6/src/misc/ngx_google_perftools_module.c) vendor/nginx-1.11.8/src/os/unix/ngx_alloc.c (from vendor/nginx-1.11.6/src/os/unix/ngx_alloc.c) vendor/nginx-1.11.8/src/os/unix/ngx_alloc.h (from vendor/nginx-1.11.6/src/os/unix/ngx_alloc.h) vendor/nginx-1.11.8/src/os/unix/ngx_atomic.h (from vendor/nginx-1.11.6/src/os/unix/ngx_atomic.h) vendor/nginx-1.11.8/src/os/unix/ngx_channel.c (from vendor/nginx-1.11.6/src/os/unix/ngx_channel.c) vendor/nginx-1.11.8/src/os/unix/ngx_channel.h (from vendor/nginx-1.11.6/src/os/unix/ngx_channel.h) vendor/nginx-1.11.8/src/os/unix/ngx_daemon.c (from vendor/nginx-1.11.6/src/os/unix/ngx_daemon.c) vendor/nginx-1.11.8/src/os/unix/ngx_darwin.h (from vendor/nginx-1.11.6/src/os/unix/ngx_darwin.h) vendor/nginx-1.11.8/src/os/unix/ngx_darwin_config.h (from vendor/nginx-1.11.6/src/os/unix/ngx_darwin_config.h) vendor/nginx-1.11.8/src/os/unix/ngx_darwin_init.c (from vendor/nginx-1.11.6/src/os/unix/ngx_darwin_init.c) vendor/nginx-1.11.8/src/os/unix/ngx_darwin_sendfile_chain.c (from vendor/nginx-1.11.6/src/os/unix/ngx_darwin_sendfile_chain.c) vendor/nginx-1.11.8/src/os/unix/ngx_dlopen.c (from vendor/nginx-1.11.6/src/os/unix/ngx_dlopen.c) vendor/nginx-1.11.8/src/os/unix/ngx_dlopen.h (from vendor/nginx-1.11.6/src/os/unix/ngx_dlopen.h) vendor/nginx-1.11.8/src/os/unix/ngx_errno.c (from vendor/nginx-1.11.6/src/os/unix/ngx_errno.c) vendor/nginx-1.11.8/src/os/unix/ngx_errno.h (from vendor/nginx-1.11.6/src/os/unix/ngx_errno.h) vendor/nginx-1.11.8/src/os/unix/ngx_file_aio_read.c (from vendor/nginx-1.11.6/src/os/unix/ngx_file_aio_read.c) vendor/nginx-1.11.8/src/os/unix/ngx_files.c (from vendor/nginx-1.11.6/src/os/unix/ngx_files.c) vendor/nginx-1.11.8/src/os/unix/ngx_files.h (from vendor/nginx-1.11.6/src/os/unix/ngx_files.h) vendor/nginx-1.11.8/src/os/unix/ngx_freebsd.h (from vendor/nginx-1.11.6/src/os/unix/ngx_freebsd.h) vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_config.h (from vendor/nginx-1.11.6/src/os/unix/ngx_freebsd_config.h) vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_init.c (from vendor/nginx-1.11.6/src/os/unix/ngx_freebsd_init.c) vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_sendfile_chain.c (from vendor/nginx-1.11.6/src/os/unix/ngx_freebsd_sendfile_chain.c) vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_amd64.h (from vendor/nginx-1.11.6/src/os/unix/ngx_gcc_atomic_amd64.h) vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_ppc.h (from vendor/nginx-1.11.6/src/os/unix/ngx_gcc_atomic_ppc.h) vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_sparc64.h (from vendor/nginx-1.11.6/src/os/unix/ngx_gcc_atomic_sparc64.h) vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_x86.h (from vendor/nginx-1.11.6/src/os/unix/ngx_gcc_atomic_x86.h) vendor/nginx-1.11.8/src/os/unix/ngx_linux.h (from vendor/nginx-1.11.6/src/os/unix/ngx_linux.h) vendor/nginx-1.11.8/src/os/unix/ngx_linux_aio_read.c (from vendor/nginx-1.11.6/src/os/unix/ngx_linux_aio_read.c) vendor/nginx-1.11.8/src/os/unix/ngx_linux_config.h (from vendor/nginx-1.11.6/src/os/unix/ngx_linux_config.h) vendor/nginx-1.11.8/src/os/unix/ngx_linux_init.c (from vendor/nginx-1.11.6/src/os/unix/ngx_linux_init.c) vendor/nginx-1.11.8/src/os/unix/ngx_linux_sendfile_chain.c (from vendor/nginx-1.11.6/src/os/unix/ngx_linux_sendfile_chain.c) vendor/nginx-1.11.8/src/os/unix/ngx_os.h (from vendor/nginx-1.11.6/src/os/unix/ngx_os.h) vendor/nginx-1.11.8/src/os/unix/ngx_posix_config.h (from vendor/nginx-1.11.6/src/os/unix/ngx_posix_config.h) vendor/nginx-1.11.8/src/os/unix/ngx_posix_init.c (from vendor/nginx-1.11.6/src/os/unix/ngx_posix_init.c) vendor/nginx-1.11.8/src/os/unix/ngx_process.c (from vendor/nginx-1.11.6/src/os/unix/ngx_process.c) vendor/nginx-1.11.8/src/os/unix/ngx_process.h (from vendor/nginx-1.11.6/src/os/unix/ngx_process.h) vendor/nginx-1.11.8/src/os/unix/ngx_process_cycle.c (from vendor/nginx-1.11.6/src/os/unix/ngx_process_cycle.c) vendor/nginx-1.11.8/src/os/unix/ngx_process_cycle.h (from vendor/nginx-1.11.6/src/os/unix/ngx_process_cycle.h) vendor/nginx-1.11.8/src/os/unix/ngx_readv_chain.c (from vendor/nginx-1.11.6/src/os/unix/ngx_readv_chain.c) vendor/nginx-1.11.8/src/os/unix/ngx_recv.c (from vendor/nginx-1.11.6/src/os/unix/ngx_recv.c) vendor/nginx-1.11.8/src/os/unix/ngx_send.c (from vendor/nginx-1.11.6/src/os/unix/ngx_send.c) vendor/nginx-1.11.8/src/os/unix/ngx_setaffinity.c (from vendor/nginx-1.11.6/src/os/unix/ngx_setaffinity.c) vendor/nginx-1.11.8/src/os/unix/ngx_setaffinity.h (from vendor/nginx-1.11.6/src/os/unix/ngx_setaffinity.h) vendor/nginx-1.11.8/src/os/unix/ngx_setproctitle.c (from vendor/nginx-1.11.6/src/os/unix/ngx_setproctitle.c) vendor/nginx-1.11.8/src/os/unix/ngx_setproctitle.h (from vendor/nginx-1.11.6/src/os/unix/ngx_setproctitle.h) vendor/nginx-1.11.8/src/os/unix/ngx_shmem.c (from vendor/nginx-1.11.6/src/os/unix/ngx_shmem.c) vendor/nginx-1.11.8/src/os/unix/ngx_shmem.h (from vendor/nginx-1.11.6/src/os/unix/ngx_shmem.h) vendor/nginx-1.11.8/src/os/unix/ngx_socket.c (from vendor/nginx-1.11.6/src/os/unix/ngx_socket.c) vendor/nginx-1.11.8/src/os/unix/ngx_socket.h (from vendor/nginx-1.11.6/src/os/unix/ngx_socket.h) vendor/nginx-1.11.8/src/os/unix/ngx_solaris.h (from vendor/nginx-1.11.6/src/os/unix/ngx_solaris.h) vendor/nginx-1.11.8/src/os/unix/ngx_solaris_config.h (from vendor/nginx-1.11.6/src/os/unix/ngx_solaris_config.h) vendor/nginx-1.11.8/src/os/unix/ngx_solaris_init.c (from vendor/nginx-1.11.6/src/os/unix/ngx_solaris_init.c) vendor/nginx-1.11.8/src/os/unix/ngx_solaris_sendfilev_chain.c (from vendor/nginx-1.11.6/src/os/unix/ngx_solaris_sendfilev_chain.c) vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_amd64.il (from vendor/nginx-1.11.6/src/os/unix/ngx_sunpro_amd64.il) vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_atomic_sparc64.h (from vendor/nginx-1.11.6/src/os/unix/ngx_sunpro_atomic_sparc64.h) vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_sparc64.il (from vendor/nginx-1.11.6/src/os/unix/ngx_sunpro_sparc64.il) vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_x86.il (from vendor/nginx-1.11.6/src/os/unix/ngx_sunpro_x86.il) vendor/nginx-1.11.8/src/os/unix/ngx_thread.h (from vendor/nginx-1.11.6/src/os/unix/ngx_thread.h) vendor/nginx-1.11.8/src/os/unix/ngx_thread_cond.c (from vendor/nginx-1.11.6/src/os/unix/ngx_thread_cond.c) vendor/nginx-1.11.8/src/os/unix/ngx_thread_id.c (from vendor/nginx-1.11.6/src/os/unix/ngx_thread_id.c) vendor/nginx-1.11.8/src/os/unix/ngx_thread_mutex.c (from vendor/nginx-1.11.6/src/os/unix/ngx_thread_mutex.c) vendor/nginx-1.11.8/src/os/unix/ngx_time.c (from vendor/nginx-1.11.6/src/os/unix/ngx_time.c) vendor/nginx-1.11.8/src/os/unix/ngx_time.h (from vendor/nginx-1.11.6/src/os/unix/ngx_time.h) vendor/nginx-1.11.8/src/os/unix/ngx_udp_recv.c (from vendor/nginx-1.11.6/src/os/unix/ngx_udp_recv.c) vendor/nginx-1.11.8/src/os/unix/ngx_udp_send.c (from vendor/nginx-1.11.6/src/os/unix/ngx_udp_send.c) vendor/nginx-1.11.8/src/os/unix/ngx_udp_sendmsg_chain.c (from vendor/nginx-1.11.6/src/os/unix/ngx_udp_sendmsg_chain.c) vendor/nginx-1.11.8/src/os/unix/ngx_user.c (from vendor/nginx-1.11.6/src/os/unix/ngx_user.c) vendor/nginx-1.11.8/src/os/unix/ngx_user.h (from vendor/nginx-1.11.6/src/os/unix/ngx_user.h) vendor/nginx-1.11.8/src/os/unix/ngx_writev_chain.c (from vendor/nginx-1.11.6/src/os/unix/ngx_writev_chain.c) vendor/nginx-1.11.8/src/os/win32/nginx.ico (from vendor/nginx-1.11.6/src/os/win32/nginx.ico) vendor/nginx-1.11.8/src/os/win32/nginx.rc (from vendor/nginx-1.11.6/src/os/win32/nginx.rc) vendor/nginx-1.11.8/src/os/win32/nginx_icon16.xpm (from vendor/nginx-1.11.6/src/os/win32/nginx_icon16.xpm) vendor/nginx-1.11.8/src/os/win32/nginx_icon32.xpm (from vendor/nginx-1.11.6/src/os/win32/nginx_icon32.xpm) vendor/nginx-1.11.8/src/os/win32/nginx_icon48.xpm (from vendor/nginx-1.11.6/src/os/win32/nginx_icon48.xpm) vendor/nginx-1.11.8/src/os/win32/ngx_alloc.c (from vendor/nginx-1.11.6/src/os/win32/ngx_alloc.c) vendor/nginx-1.11.8/src/os/win32/ngx_alloc.h (from vendor/nginx-1.11.6/src/os/win32/ngx_alloc.h) vendor/nginx-1.11.8/src/os/win32/ngx_atomic.h (from vendor/nginx-1.11.6/src/os/win32/ngx_atomic.h) vendor/nginx-1.11.8/src/os/win32/ngx_dlopen.c (from vendor/nginx-1.11.6/src/os/win32/ngx_dlopen.c) vendor/nginx-1.11.8/src/os/win32/ngx_dlopen.h (from vendor/nginx-1.11.6/src/os/win32/ngx_dlopen.h) vendor/nginx-1.11.8/src/os/win32/ngx_errno.c (from vendor/nginx-1.11.6/src/os/win32/ngx_errno.c) vendor/nginx-1.11.8/src/os/win32/ngx_errno.h (from vendor/nginx-1.11.6/src/os/win32/ngx_errno.h) vendor/nginx-1.11.8/src/os/win32/ngx_event_log.c (from vendor/nginx-1.11.6/src/os/win32/ngx_event_log.c) vendor/nginx-1.11.8/src/os/win32/ngx_files.c (from vendor/nginx-1.11.6/src/os/win32/ngx_files.c) vendor/nginx-1.11.8/src/os/win32/ngx_files.h (from vendor/nginx-1.11.6/src/os/win32/ngx_files.h) vendor/nginx-1.11.8/src/os/win32/ngx_os.h (from vendor/nginx-1.11.6/src/os/win32/ngx_os.h) vendor/nginx-1.11.8/src/os/win32/ngx_process.c (from vendor/nginx-1.11.6/src/os/win32/ngx_process.c) vendor/nginx-1.11.8/src/os/win32/ngx_process.h (from vendor/nginx-1.11.6/src/os/win32/ngx_process.h) vendor/nginx-1.11.8/src/os/win32/ngx_process_cycle.c (from vendor/nginx-1.11.6/src/os/win32/ngx_process_cycle.c) vendor/nginx-1.11.8/src/os/win32/ngx_process_cycle.h (from vendor/nginx-1.11.6/src/os/win32/ngx_process_cycle.h) vendor/nginx-1.11.8/src/os/win32/ngx_service.c (from vendor/nginx-1.11.6/src/os/win32/ngx_service.c) vendor/nginx-1.11.8/src/os/win32/ngx_shmem.c (from vendor/nginx-1.11.6/src/os/win32/ngx_shmem.c) vendor/nginx-1.11.8/src/os/win32/ngx_shmem.h (from vendor/nginx-1.11.6/src/os/win32/ngx_shmem.h) vendor/nginx-1.11.8/src/os/win32/ngx_socket.c (from vendor/nginx-1.11.6/src/os/win32/ngx_socket.c) vendor/nginx-1.11.8/src/os/win32/ngx_socket.h (from vendor/nginx-1.11.6/src/os/win32/ngx_socket.h) vendor/nginx-1.11.8/src/os/win32/ngx_stat.c (from vendor/nginx-1.11.6/src/os/win32/ngx_stat.c) vendor/nginx-1.11.8/src/os/win32/ngx_thread.c (from vendor/nginx-1.11.6/src/os/win32/ngx_thread.c) vendor/nginx-1.11.8/src/os/win32/ngx_thread.h (from vendor/nginx-1.11.6/src/os/win32/ngx_thread.h) vendor/nginx-1.11.8/src/os/win32/ngx_time.c (from vendor/nginx-1.11.6/src/os/win32/ngx_time.c) vendor/nginx-1.11.8/src/os/win32/ngx_time.h (from vendor/nginx-1.11.6/src/os/win32/ngx_time.h) vendor/nginx-1.11.8/src/os/win32/ngx_udp_wsarecv.c (from vendor/nginx-1.11.6/src/os/win32/ngx_udp_wsarecv.c) vendor/nginx-1.11.8/src/os/win32/ngx_user.c (from vendor/nginx-1.11.6/src/os/win32/ngx_user.c) vendor/nginx-1.11.8/src/os/win32/ngx_user.h (from vendor/nginx-1.11.6/src/os/win32/ngx_user.h) vendor/nginx-1.11.8/src/os/win32/ngx_win32_config.h (from vendor/nginx-1.11.6/src/os/win32/ngx_win32_config.h) vendor/nginx-1.11.8/src/os/win32/ngx_win32_init.c (from vendor/nginx-1.11.6/src/os/win32/ngx_win32_init.c) vendor/nginx-1.11.8/src/os/win32/ngx_wsarecv.c (from vendor/nginx-1.11.6/src/os/win32/ngx_wsarecv.c) vendor/nginx-1.11.8/src/os/win32/ngx_wsarecv_chain.c (from vendor/nginx-1.11.6/src/os/win32/ngx_wsarecv_chain.c) vendor/nginx-1.11.8/src/os/win32/ngx_wsasend.c (from vendor/nginx-1.11.6/src/os/win32/ngx_wsasend.c) vendor/nginx-1.11.8/src/os/win32/ngx_wsasend_chain.c (from vendor/nginx-1.11.6/src/os/win32/ngx_wsasend_chain.c) vendor/nginx-1.11.8/src/stream/ngx_stream.c (from vendor/nginx-1.11.6/src/stream/ngx_stream.c) vendor/nginx-1.11.8/src/stream/ngx_stream.h (from vendor/nginx-1.11.6/src/stream/ngx_stream.h) vendor/nginx-1.11.8/src/stream/ngx_stream_access_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_access_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_core_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_core_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_geo_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_geo_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_geoip_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_geoip_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_handler.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_handler.c) vendor/nginx-1.11.8/src/stream/ngx_stream_limit_conn_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_limit_conn_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_log_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_log_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_map_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_map_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_proxy_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_proxy_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_realip_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_realip_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_return_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_return_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_script.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_script.c) vendor/nginx-1.11.8/src/stream/ngx_stream_script.h (from vendor/nginx-1.11.6/src/stream/ngx_stream_script.h) vendor/nginx-1.11.8/src/stream/ngx_stream_split_clients_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_split_clients_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.h (from vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_module.h) vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_preread_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_preread_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream.c) vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.h (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream.h) vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_hash_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_hash_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_least_conn_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_least_conn_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_round_robin.c) vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.h (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_round_robin.h) vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_zone_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_zone_module.c) vendor/nginx-1.11.8/src/stream/ngx_stream_variables.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_variables.c) vendor/nginx-1.11.8/src/stream/ngx_stream_variables.h (from vendor/nginx-1.11.6/src/stream/ngx_stream_variables.h) vendor/nginx-1.11.8/src/stream/ngx_stream_write_filter_module.c (from vendor/nginx-1.11.6/src/stream/ngx_stream_write_filter_module.c) Modified: nginx_version (+1 -1) =================================================================== --- nginx_version 2016-12-27 22:25:26 +0900 (6b37cb7) +++ nginx_version 2016-12-27 23:47:36 +0900 (40faed9) @@ -1 +1 @@ -1.11.6 +1.11.8 Deleted: vendor/nginx-1.11.6/auto/lib/openssl/makefile.msvc (+0 -14) 100644 =================================================================== --- vendor/nginx-1.11.6/auto/lib/openssl/makefile.msvc 2016-12-27 22:25:26 +0900 (fc9e578) +++ /dev/null @@ -1,14 +0,0 @@ - -# Copyright (C) Igor Sysoev -# Copyright (C) Nginx, Inc. - - -all: - cd $(OPENSSL) - - perl Configure VC-WIN32 no-shared --prefix=openssl $(OPENSSL_OPT) - - ms\do_ms - - $(MAKE) -f ms\nt.mak - $(MAKE) -f ms\nt.mak install Renamed: vendor/nginx-1.11.8/auto/cc/acc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/ccc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/clang (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/gcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/icc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/name (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/cc/sunc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/configure (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/define (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/endianness (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/feature (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/have (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/have_headers (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/headers (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/include (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/init (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/install (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/geoip/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/google-perftools/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/libatomic/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/libatomic/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/libgd/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/libxslt/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/openssl/conf (+10 -2) 88% =================================================================== --- vendor/nginx-1.11.6/auto/lib/openssl/conf 2016-12-27 22:25:26 +0900 (39d9602) +++ vendor/nginx-1.11.8/auto/lib/openssl/conf 2016-12-27 23:47:36 +0900 (e7d3795) @@ -15,8 +15,16 @@ if [ $OPENSSL != NONE ]; then CORE_INCS="$CORE_INCS $OPENSSL/openssl/include" CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h" - CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib" - CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib" + + if [ -f $OPENSSL/ms/do_ms.bat ]; then + # before OpenSSL 1.1.0 + CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib" + CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib" + else + # OpenSSL 1.1.0+ + CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib" + CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib" + fi # libeay32.lib requires gdi32.lib CORE_LIBS="$CORE_LIBS gdi32.lib" Renamed: vendor/nginx-1.11.8/auto/lib/openssl/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/openssl/makefile.bcc (+0 -0) 100% =================================================================== Added: vendor/nginx-1.11.8/auto/lib/openssl/makefile.msvc (+21 -0) 100644 =================================================================== --- /dev/null +++ vendor/nginx-1.11.8/auto/lib/openssl/makefile.msvc 2016-12-27 23:47:36 +0900 (5b90dcb) @@ -0,0 +1,21 @@ + +# Copyright (C) Igor Sysoev +# Copyright (C) Nginx, Inc. + + +all: + cd $(OPENSSL) + + perl Configure VC-WIN32 no-shared \ + --prefix="%cd%/openssl" \ + --openssldir="%cd%/openssl/ssl" \ + $(OPENSSL_OPT) + + if exist ms\do_ms.bat ( \ + ms\do_ms \ + && $(MAKE) -f ms\nt.mak \ + && $(MAKE) -f ms\nt.mak install \ + ) else ( \ + $(MAKE) \ + && $(MAKE) install_sw \ + ) Renamed: vendor/nginx-1.11.8/auto/lib/pcre/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/pcre/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/pcre/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/pcre/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/pcre/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/perl/conf (+3 -3) 92% =================================================================== --- vendor/nginx-1.11.6/auto/lib/perl/conf 2016-12-27 22:25:26 +0900 (d891d82) +++ vendor/nginx-1.11.8/auto/lib/perl/conf 2016-12-27 23:47:36 +0900 (e16a1bc) @@ -12,9 +12,9 @@ NGX_PERL_VER=`$NGX_PERL -v 2>&1 | grep '^This is perl' 2>&1 \ if test -n "$NGX_PERL_VER"; then echo " + perl version: $NGX_PERL_VER" - if [ "`$NGX_PERL -e 'use 5.006001; print "OK"'`" != "OK" ]; then + if [ "`$NGX_PERL -e 'use 5.008006; print "OK"'`" != "OK" ]; then echo - echo "$0: error: perl 5.6.1 or higher is required" + echo "$0: error: perl 5.8.6 or higher is required" echo exit 1; @@ -76,7 +76,7 @@ if test -n "$NGX_PERL_VER"; then else echo - echo "$0: error: perl 5.6.1 or higher is required" + echo "$0: error: perl 5.8.6 or higher is required" echo exit 1; Renamed: vendor/nginx-1.11.8/auto/lib/perl/make (+5 -4) 84% =================================================================== --- vendor/nginx-1.11.6/auto/lib/perl/make 2016-12-27 22:25:26 +0900 (350090c) +++ vendor/nginx-1.11.8/auto/lib/perl/make 2016-12-27 23:47:36 +0900 (74e0f3a) @@ -3,9 +3,6 @@ # Copyright (C) Nginx, Inc. -v=`grep 'define NGINX_VERSION' src/core/nginx.h | sed -e 's/^.*"\(.*\)".*/\1/'` - - cat << END >> $NGX_MAKEFILE $NGX_OBJS/src/http/modules/perl/ngx_http_perl_module.o: \\ @@ -27,7 +24,11 @@ $NGX_OBJS/src/http/modules/perl/Makefile: \\ src/http/modules/perl/nginx.pm \\ src/http/modules/perl/nginx.xs \\ src/http/modules/perl/typemap - sed "s/%%VERSION%%/$v/" src/http/modules/perl/nginx.pm > \\ + grep 'define NGINX_VERSION' src/core/nginx.h \\ + | sed -e 's/^.*"\(.*\)".*/\1/' > \\ + $NGX_OBJS/src/http/modules/perl/version + sed "s/%%VERSION%%/\`cat $NGX_OBJS/src/http/modules/perl/version\`/" \\ + src/http/modules/perl/nginx.pm > \\ $NGX_OBJS/src/http/modules/perl/nginx.pm cp -p src/http/modules/perl/nginx.xs $NGX_OBJS/src/http/modules/perl/ cp -p src/http/modules/perl/typemap $NGX_OBJS/src/http/modules/perl/ Renamed: vendor/nginx-1.11.8/auto/lib/zlib/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/zlib/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/zlib/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/zlib/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/lib/zlib/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/make (+3 -14) 97% =================================================================== --- vendor/nginx-1.11.6/auto/make 2016-12-27 22:25:26 +0900 (84d2668) +++ vendor/nginx-1.11.8/auto/make 2016-12-27 23:47:36 +0900 (7ddd100) @@ -156,7 +156,7 @@ fi ngx_all_srcs="$ngx_all_srcs $MISC_SRCS" -if test -n "$NGX_ADDON_SRCS"; then +if test -n "$NGX_ADDON_SRCS$DYNAMIC_MODULES"; then cat << END >> $NGX_MAKEFILE @@ -499,17 +499,6 @@ else ngx_perl_cc="$ngx_perl_cc \$(ALL_INCS)" fi -ngx_obj_deps="\$(CORE_DEPS)" -if [ $HTTP != NO ]; then - ngx_obj_deps="$ngx_obj_deps \$(HTTP_DEPS)" -fi -if [ $MAIL != NO ]; then - ngx_obj_deps="$ngx_obj_deps \$(MAIL_DEPS)" -fi -if [ $STREAM != NO ]; then - ngx_obj_deps="$ngx_obj_deps \$(STREAM_DEPS)" -fi - for ngx_module in $DYNAMIC_MODULES do eval ngx_module_srcs="\$${ngx_module}_SRCS" @@ -665,7 +654,7 @@ END cat << END >> $NGX_MAKEFILE -$ngx_obj: $ngx_obj_deps$ngx_cont$ngx_src +$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src $ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX END @@ -673,7 +662,7 @@ END cat << END >> $NGX_MAKEFILE -$ngx_obj: $ngx_obj_deps$ngx_cont$ngx_src +$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src $ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX END Renamed: vendor/nginx-1.11.8/auto/module (+4 -0) 96% =================================================================== --- vendor/nginx-1.11.6/auto/module 2016-12-27 22:25:26 +0900 (3b00a07) +++ vendor/nginx-1.11.8/auto/module 2016-12-27 23:47:36 +0900 (a2b578d) @@ -35,6 +35,10 @@ if [ "$ngx_module_link" = DYNAMIC ]; then CORE_INCS="$CORE_INCS $ngx_module_incs" fi + if test -n "$ngx_module_deps"; then + NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps" + fi + libs= for lib in $ngx_module_libs do Renamed: vendor/nginx-1.11.8/auto/modules (+2 -2) 99% =================================================================== --- vendor/nginx-1.11.6/auto/modules 2016-12-27 22:25:26 +0900 (89377bf) +++ vendor/nginx-1.11.8/auto/modules 2016-12-27 23:47:36 +0900 (c664fe3) @@ -1252,7 +1252,7 @@ if [ $MAIL != NO ]; then elif [ $MAIL = DYNAMIC ]; then ngx_module_name=$MAIL_MODULES ngx_module_incs= - ngx_module_deps=$MAIL_DEPS + ngx_module_deps= ngx_module_srcs=$MAIL_SRCS ngx_module_libs= ngx_module_link=DYNAMIC @@ -1272,7 +1272,7 @@ if [ $STREAM != NO ]; then elif [ $STREAM = DYNAMIC ]; then ngx_module_name=$STREAM_MODULES ngx_module_incs= - ngx_module_deps=$STREAM_DEPS + ngx_module_deps= ngx_module_srcs=$STREAM_SRCS ngx_module_libs= ngx_module_link=DYNAMIC Renamed: vendor/nginx-1.11.8/auto/nohave (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/options (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/os/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/os/darwin (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/os/freebsd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/os/linux (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/os/solaris (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/os/win32 (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/sources (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/stubs (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/summary (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/threads (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/types/sizeof (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/types/typedef (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/types/uintptr_t (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/types/value (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/auto/unix (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/conf/fastcgi.conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/conf/fastcgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/conf/koi-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/conf/koi-win (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/conf/mime.types (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/conf/nginx.conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/conf/scgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/conf/uwsgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/conf/win-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/contrib/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/contrib/geo2nginx.pl (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/contrib/unicode2nginx/koi-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/contrib/unicode2nginx/unicode-to-nginx.pl (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/contrib/unicode2nginx/win-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/contrib/vim/ftdetect/nginx.vim (+0 -0) 100% =================================================================== Added: vendor/nginx-1.11.8/contrib/vim/ftplugin/nginx.vim (+1 -0) 100644 =================================================================== --- /dev/null +++ vendor/nginx-1.11.8/contrib/vim/ftplugin/nginx.vim 2016-12-27 23:47:36 +0900 (463eea9) @@ -0,0 +1 @@ +setlocal commentstring=#\ %s Renamed: vendor/nginx-1.11.8/contrib/vim/indent/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/contrib/vim/syntax/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/GNUmakefile (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/dtd/change_log_conf.dtd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/dtd/changes.dtd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/html/50x.html (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/html/index.html (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/man/nginx.8 (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/text/LICENSE (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/text/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/xml/change_log_conf.xml (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/xml/nginx/changes.xml (+201 -0) 99% =================================================================== --- vendor/nginx-1.11.6/docs/xml/nginx/changes.xml 2016-12-27 22:25:26 +0900 (1376338) +++ vendor/nginx-1.11.8/docs/xml/nginx/changes.xml 2016-12-27 23:47:36 +0900 (1f0e2c6) @@ -5,6 +5,207 @@ <change_log title="nginx"> +<changes ver="1.11.8" date="27.12.2016"> + +<change type="feature"> +<para lang="ru"> +директива absolute_redirect. +</para> +<para lang="en"> +the "absolute_redirect" directive. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +параметр escape директивы log_format. +</para> +<para lang="en"> +the "escape" parameter of the "log_format" directive. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +проверка клиентских SSL-сертификатов в модуле stream. +</para> +<para lang="en"> +client SSL certificates verification in the stream module. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +директива ssl_session_ticket_key поддерживает +шифрование TLS session tickets с помощью AES256 +при использовании с 80-байтными ключами. +</para> +<para lang="en"> +the "ssl_session_ticket_key" directive supports +AES256 encryption of TLS session tickets +when used with 80-byte keys. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +поддержка vim-commentary в скриптах для vim.<br/> +Спасибо Armin Grodon. +</para> +<para lang="en"> +vim-commentary support in vim scripts.<br/> +Thanks to Armin Grodon. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +рекурсия при получении значений переменных не ограничивалась. +</para> +<para lang="en"> +recursion when evaluating variables was not limited. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +в модуле ngx_stream_ssl_preread_module. +</para> +<para lang="en"> +in the ngx_stream_ssl_preread_module. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +если сервер, описанный в блоке upstream в модуле stream, +был признан неработающим, то после истечения fail_timeout он +признавался работающим только после завершения тестового соединения; +теперь достаточно, чтобы соединение было успешно установлено. +</para> +<para lang="en"> +if a server in an upstream in the stream module failed, +it was considered alive only when a test connection sent +to it after fail_timeout was closed; +now a successfully established connection is enough. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +nginx/Windows не собирался с 64-битным Visual Studio. +</para> +<para lang="en"> +nginx/Windows could not be built with 64-bit Visual Studio. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +nginx/Windows не собирался с OpenSSL 1.1.0. +</para> +<para lang="en"> +nginx/Windows could not be built with OpenSSL 1.1.0. +</para> +</change> + +</changes> + + +<changes ver="1.11.7" date="13.12.2016"> + +<change type="change"> +<para lang="ru"> +переменная $ssl_client_verify теперь +в случае ошибки проверки клиентского сертификата +содержит строку с описанием ошибки, +например, "FAILED:certificate has expired". +</para> +<para lang="en"> +now in case of a client certificate verification error +the $ssl_client_verify variable contains a string with the failure reason, +for example, "FAILED:certificate has expired". +</para> +</change> + +<change type="feature"> +<para lang="ru"> +переменные $ssl_ciphers, $ssl_curves, +$ssl_client_v_start, $ssl_client_v_end и $ssl_client_v_remain. +</para> +<para lang="en"> +the $ssl_ciphers, $ssl_curves, +$ssl_client_v_start, $ssl_client_v_end, and $ssl_client_v_remain variables. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +параметр volatile директивы map. +</para> +<para lang="en"> +the "volatile" parameter of the "map" directive. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +при сборке динамических модулей +не учитывались заданные для модуля зависимости. +</para> +<para lang="en"> +dependencies specified for a module +were ignored while building dynamic modules. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +при использовании HTTP/2 и директив limit_req или auth_request +тело запроса могло быть повреждено; +ошибка появилась в 1.11.0. +</para> +<para lang="en"> +when using HTTP/2 and the "limit_req" or "auth_request" directives +client request body might be corrupted; +the bug had appeared in 1.11.0. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +при использовании HTTP/2 в рабочем процессе мог произойти segmentation fault; +ошибка появилась в 1.11.3. +</para> +<para lang="en"> +a segmentation fault might occur in a worker process when using HTTP/2; +the bug had appeared in 1.11.3. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +в модуле ngx_http_mp4_module.<br/> +Спасибо Congcong Hu. +</para> +<para lang="en"> +in the ngx_http_mp4_module.<br/> +Thanks to Congcong Hu. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +в модуле ngx_http_perl_module. +</para> +<para lang="en"> +in the ngx_http_perl_module. +</para> +</change> + +</changes> + + <changes ver="1.11.6" date="15.11.2016"> <change type="change"> Renamed: vendor/nginx-1.11.8/docs/xsls/changes.xsls (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/docs/xslt/changes.xslt (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/misc/GNUmakefile (+2 -1) 99% =================================================================== --- vendor/nginx-1.11.6/misc/GNUmakefile 2016-12-27 22:25:26 +0900 (9ab4193) +++ vendor/nginx-1.11.8/misc/GNUmakefile 2016-12-27 23:47:36 +0900 (064fac1) @@ -4,6 +4,7 @@ VER = $(shell grep 'define NGINX_VERSION' src/core/nginx.h \ NGINX = nginx-$(VER) TEMP = tmp +CC = cl OBJS = objs.msvc8 OPENSSL = openssl-1.0.2j ZLIB = zlib-1.2.8 @@ -47,7 +48,7 @@ RELEASE: win32: ./auto/configure \ - --with-cc=cl \ + --with-cc=$(CC) \ --builddir=$(OBJS) \ --with-debug \ --prefix= \ Renamed: vendor/nginx-1.11.8/misc/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/nginx.c (+40 -8) 97% =================================================================== --- vendor/nginx-1.11.6/src/core/nginx.c 2016-12-27 22:25:26 +0900 (60f8fe7) +++ vendor/nginx-1.11.8/src/core/nginx.c 2016-12-27 23:47:36 +0900 (c5f09a5) @@ -12,6 +12,7 @@ static void ngx_show_version_info(void); static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle); +static void ngx_cleanup_environment(void *data); static ngx_int_t ngx_get_options(int argc, char *const *argv); static ngx_int_t ngx_process_options(ngx_cycle_t *cycle); static ngx_int_t ngx_save_argv(ngx_cycle_t *cycle, int argc, char *const *argv); @@ -495,10 +496,11 @@ ngx_add_inherited_sockets(ngx_cycle_t *cycle) char ** ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last) { - char **p, **env; - ngx_str_t *var; - ngx_uint_t i, n; - ngx_core_conf_t *ccf; + char **p, **env; + ngx_str_t *var; + ngx_uint_t i, n; + ngx_core_conf_t *ccf; + ngx_pool_cleanup_t *cln; ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module); @@ -550,14 +552,25 @@ tz_found: if (last) { env = ngx_alloc((*last + n + 1) * sizeof(char *), cycle->log); + if (env == NULL) { + return NULL; + } + *last = n; } else { - env = ngx_palloc(cycle->pool, (n + 1) * sizeof(char *)); - } + cln = ngx_pool_cleanup_add(cycle->pool, 0); + if (cln == NULL) { + return NULL; + } - if (env == NULL) { - return NULL; + env = ngx_alloc((n + 1) * sizeof(char *), cycle->log); + if (env == NULL) { + return NULL; + } + + cln->handler = ngx_cleanup_environment; + cln->data = env; } n = 0; @@ -591,6 +604,25 @@ tz_found: } +static void +ngx_cleanup_environment(void *data) +{ + char **env = data; + + if (environ == env) { + + /* + * if the environment is still used, as it happens on exit, + * the only option is to leak it + */ + + return; + } + + ngx_free(env); +} + + ngx_pid_t ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv) { Renamed: vendor/nginx-1.11.8/src/core/nginx.h (+2 -2) 85% =================================================================== --- vendor/nginx-1.11.6/src/core/nginx.h 2016-12-27 22:25:26 +0900 (a75ef04) +++ vendor/nginx-1.11.8/src/core/nginx.h 2016-12-27 23:47:36 +0900 (983179f) @@ -9,8 +9,8 @@ #define _NGINX_H_INCLUDED_ -#define nginx_version 1011006 -#define NGINX_VERSION "1.11.6" +#define nginx_version 1011008 +#define NGINX_VERSION "1.11.8" #define NGINX_VER "nginx/" NGINX_VERSION #ifdef NGX_BUILD Renamed: vendor/nginx-1.11.8/src/core/ngx_array.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_array.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_buf.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_buf.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_conf_file.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_conf_file.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_connection.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_connection.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_core.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_cpuinfo.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_crc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_crc32.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_crc32.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_crypt.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_crypt.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_cycle.c (+1 -12) 98% =================================================================== --- vendor/nginx-1.11.6/src/core/ngx_cycle.c 2016-12-27 22:25:26 +0900 (a57991c) +++ vendor/nginx-1.11.8/src/core/ngx_cycle.c 2016-12-27 23:47:36 +0900 (5e95628) @@ -37,7 +37,7 @@ ngx_cycle_t * ngx_init_cycle(ngx_cycle_t *old_cycle) { void *rv; - char **senv, **env; + char **senv; ngx_uint_t i, n; ngx_log_t *log; ngx_time_t *tp; @@ -750,20 +750,9 @@ old_shm_zone_done: if (ngx_process == NGX_PROCESS_MASTER || ngx_is_init_cycle(old_cycle)) { - /* - * perl_destruct() frees environ, if it is not the same as it was at - * perl_construct() time, therefore we save the previous cycle - * environment before ngx_conf_parse() where it will be changed. - */ - - env = environ; - environ = senv; - ngx_destroy_pool(old_cycle->pool); cycle->old_cycle = NULL; - environ = env; - return cycle; } Renamed: vendor/nginx-1.11.8/src/core/ngx_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_file.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_file.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_hash.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_hash.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_inet.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_inet.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_list.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_list.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_log.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_log.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_md5.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_md5.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_murmurhash.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_murmurhash.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_open_file_cache.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_open_file_cache.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_output_chain.c (+1 -1) 99% =================================================================== --- vendor/nginx-1.11.6/src/core/ngx_output_chain.c 2016-12-27 22:25:26 +0900 (f784578) +++ vendor/nginx-1.11.8/src/core/ngx_output_chain.c 2016-12-27 23:47:36 +0900 (7f5dc78) @@ -512,7 +512,7 @@ ngx_output_chain_copy_buf(ngx_output_chain_ctx_t *ctx) size = ngx_buf_size(src); size = ngx_min(size, dst->end - dst->pos); - sendfile = ctx->sendfile & !ctx->directio; + sendfile = ctx->sendfile && !ctx->directio; #if (NGX_SENDFILE_LIMIT) Renamed: vendor/nginx-1.11.8/src/core/ngx_palloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_palloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_parse.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_parse_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_parse_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_proxy_protocol.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_proxy_protocol.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_queue.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_queue.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_radix_tree.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_radix_tree.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_rbtree.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_rbtree.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_regex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_regex.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_resolver.c (+21 -8) 99% =================================================================== --- vendor/nginx-1.11.6/src/core/ngx_resolver.c 2016-12-27 22:25:26 +0900 (bdfed88) +++ vendor/nginx-1.11.8/src/core/ngx_resolver.c 2016-12-27 23:47:36 +0900 (2065f75) @@ -300,6 +300,10 @@ ngx_resolver_cleanup(void *data) #endif if (r->event) { + if (r->event->timer_set) { + ngx_del_timer(r->event); + } + ngx_free(r->event); } @@ -347,6 +351,10 @@ ngx_resolver_cleanup_tree(ngx_resolver_t *r, ngx_rbtree_t *tree) next = ctx->next; if (ctx->event) { + if (ctx->event->timer_set) { + ngx_del_timer(ctx->event); + } + ngx_resolver_free(r, ctx->event); } @@ -772,7 +780,7 @@ ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx, #endif if (rn->nsrvs) { - for (i = 0; i < rn->nsrvs; i++) { + for (i = 0; i < (ngx_uint_t) rn->nsrvs; i++) { if (rn->u.srvs[i].name.data) { ngx_resolver_free_locked(r, rn->u.srvs[i].name.data); } @@ -867,7 +875,7 @@ ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx, ngx_add_timer(ctx->event, ctx->timeout); } - if (ngx_queue_empty(resend_queue)) { + if (ngx_resolver_resend_empty(r)) { ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000)); } @@ -1090,7 +1098,7 @@ ngx_resolve_addr(ngx_resolver_ctx_t *ctx) ngx_add_timer(ctx->event, ctx->timeout); } - if (ngx_queue_empty(resend_queue)) { + if (ngx_resolver_resend_empty(r)) { ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000)); } @@ -1548,6 +1556,7 @@ static ngx_uint_t ngx_resolver_resend_empty(ngx_resolver_t *r) { return ngx_queue_empty(&r->name_resend_queue) + && ngx_queue_empty(&r->srv_resend_queue) #if (NGX_HAVE_INET6) && ngx_queue_empty(&r->addr6_resend_queue) #endif @@ -2946,7 +2955,11 @@ ngx_resolver_resolve_srv_names(ngx_resolver_ctx_t *ctx, ngx_resolver_node_t *rn) ctx->srvs = srvs; ctx->nsrvs = rn->nsrvs; - for (i = 0; i < rn->nsrvs; i++) { + if (ctx->event && ctx->event->timer_set) { + ngx_del_timer(ctx->event); + } + + for (i = 0; i < (ngx_uint_t) rn->nsrvs; i++) { srvs[i].name.data = ngx_resolver_alloc(r, rn->u.srvs[i].name.len); if (srvs[i].name.data == NULL) { goto failed; @@ -2965,7 +2978,7 @@ ngx_resolver_resolve_srv_names(ngx_resolver_ctx_t *ctx, ngx_resolver_node_t *rn) cctx->handler = ngx_resolver_srv_names_handler; cctx->data = ctx; cctx->srvs = &srvs[i]; - cctx->timeout = 0; + cctx->timeout = ctx->timeout; srvs[i].priority = rn->u.srvs[i].priority; srvs[i].weight = rn->u.srvs[i].weight; @@ -4064,7 +4077,7 @@ ngx_resolver_free_node(ngx_resolver_t *r, ngx_resolver_node_t *rn) #endif if (rn->nsrvs) { - for (i = 0; i < rn->nsrvs; i++) { + for (i = 0; i < (ngx_uint_t) rn->nsrvs; i++) { if (rn->u.srvs[i].name.data) { ngx_resolver_free_locked(r, rn->u.srvs[i].name.data); } @@ -4193,10 +4206,10 @@ ngx_resolver_export(ngx_resolver_t *r, ngx_resolver_node_t *rn, d = 0; } - if (j == rn->naddrs) { + if (j == (ngx_uint_t) rn->naddrs) { j = 0; } - } while (++i < rn->naddrs); + } while (++i < (ngx_uint_t) rn->naddrs); } #if (NGX_HAVE_INET6) Renamed: vendor/nginx-1.11.8/src/core/ngx_resolver.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_rwlock.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_rwlock.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_sha1.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_sha1.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_shmtx.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_shmtx.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_slab.c (+166 -150) 67% =================================================================== --- vendor/nginx-1.11.6/src/core/ngx_slab.c 2016-12-27 22:25:26 +0900 (56e7765) +++ vendor/nginx-1.11.8/src/core/ngx_slab.c 2016-12-27 23:47:36 +0900 (1d4ce2b) @@ -41,6 +41,19 @@ #endif +#define ngx_slab_slots(pool) \ + (ngx_slab_page_t *) ((u_char *) (pool) + sizeof(ngx_slab_pool_t)) + +#define ngx_slab_page_type(page) ((page)->prev & NGX_SLAB_PAGE_MASK) + +#define ngx_slab_page_prev(page) \ + (ngx_slab_page_t *) ((page)->prev & ~NGX_SLAB_PAGE_MASK) + +#define ngx_slab_page_addr(pool, page) \ + ((((page) - (pool)->pages) << ngx_pagesize_shift) \ + + (uintptr_t) (pool)->start) + + #if (NGX_DEBUG_MALLOC) #define ngx_slab_junk(p, size) ngx_memset(p, 0xA5, size) @@ -76,7 +89,7 @@ ngx_slab_init(ngx_slab_pool_t *pool) size_t size; ngx_int_t m; ngx_uint_t i, n, pages; - ngx_slab_page_t *slots; + ngx_slab_page_t *slots, *page; /* STUB */ if (ngx_slab_max_size == 0) { @@ -88,17 +101,19 @@ ngx_slab_init(ngx_slab_pool_t *pool) } /**/ - pool->min_size = 1 << pool->min_shift; + pool->min_size = (size_t) 1 << pool->min_shift; + + slots = ngx_slab_slots(pool); - p = (u_char *) pool + sizeof(ngx_slab_pool_t); + p = (u_char *) slots; size = pool->end - p; ngx_slab_junk(p, size); - slots = (ngx_slab_page_t *) p; n = ngx_pagesize_shift - pool->min_shift; for (i = 0; i < n; i++) { + /* only "next" is used in list head */ slots[i].slab = 0; slots[i].next = &slots[i]; slots[i].prev = 0; @@ -106,30 +121,40 @@ ngx_slab_init(ngx_slab_pool_t *pool) p += n * sizeof(ngx_slab_page_t); - pages = (ngx_uint_t) (size / (ngx_pagesize + sizeof(ngx_slab_page_t))); + pool->stats = (ngx_slab_stat_t *) p; + ngx_memzero(pool->stats, n * sizeof(ngx_slab_stat_t)); + + p += n * sizeof(ngx_slab_stat_t); + + size -= n * (sizeof(ngx_slab_page_t) + sizeof(ngx_slab_stat_t)); - ngx_memzero(p, pages * sizeof(ngx_slab_page_t)); + pages = (ngx_uint_t) (size / (ngx_pagesize + sizeof(ngx_slab_page_t))); pool->pages = (ngx_slab_page_t *) p; + ngx_memzero(pool->pages, pages * sizeof(ngx_slab_page_t)); + + page = pool->pages; + /* only "next" is used in list head */ + pool->free.slab = 0; + pool->free.next = page; pool->free.prev = 0; - pool->free.next = (ngx_slab_page_t *) p; - pool->pages->slab = pages; - pool->pages->next = &pool->free; - pool->pages->prev = (uintptr_t) &pool->free; + page->slab = pages; + page->next = &pool->free; + page->prev = (uintptr_t) &pool->free; - pool->start = (u_char *) - ngx_align_ptr((uintptr_t) p + pages * sizeof(ngx_slab_page_t), - ngx_pagesize); + pool->start = ngx_align_ptr(p + pages * sizeof(ngx_slab_page_t), + ngx_pagesize); m = pages - (pool->end - pool->start) / ngx_pagesize; if (m > 0) { pages -= m; - pool->pages->slab = pages; + page->slab = pages; } pool->last = pool->pages + pages; + pool->pfree = pages; pool->log_nomem = 1; pool->log_ctx = &pool->zero; @@ -168,8 +193,7 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size) page = ngx_slab_alloc_pages(pool, (size >> ngx_pagesize_shift) + ((size % ngx_pagesize) ? 1 : 0)); if (page) { - p = (page - pool->pages) << ngx_pagesize_shift; - p += (uintptr_t) pool->start; + p = ngx_slab_page_addr(pool, page); } else { p = 0; @@ -184,166 +208,140 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size) slot = shift - pool->min_shift; } else { - size = pool->min_size; shift = pool->min_shift; slot = 0; } + pool->stats[slot].reqs++; + ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, ngx_cycle->log, 0, "slab alloc: %uz slot: %ui", size, slot); - slots = (ngx_slab_page_t *) ((u_char *) pool + sizeof(ngx_slab_pool_t)); + slots = ngx_slab_slots(pool); page = slots[slot].next; if (page->next != page) { if (shift < ngx_slab_exact_shift) { - do { - p = (page - pool->pages) << ngx_pagesize_shift; - bitmap = (uintptr_t *) (pool->start + p); - - map = (1 << (ngx_pagesize_shift - shift)) - / (sizeof(uintptr_t) * 8); - - for (n = 0; n < map; n++) { - - if (bitmap[n] != NGX_SLAB_BUSY) { - - for (m = 1, i = 0; m; m <<= 1, i++) { - if ((bitmap[n] & m)) { - continue; - } + bitmap = (uintptr_t *) ngx_slab_page_addr(pool, page); - bitmap[n] |= m; + map = (ngx_pagesize >> shift) / (sizeof(uintptr_t) * 8); - i = ((n * sizeof(uintptr_t) * 8) << shift) - + (i << shift); + for (n = 0; n < map; n++) { - if (bitmap[n] == NGX_SLAB_BUSY) { - for (n = n + 1; n < map; n++) { - if (bitmap[n] != NGX_SLAB_BUSY) { - p = (uintptr_t) bitmap + i; + if (bitmap[n] != NGX_SLAB_BUSY) { - goto done; - } - } - - prev = (ngx_slab_page_t *) - (page->prev & ~NGX_SLAB_PAGE_MASK); - prev->next = page->next; - page->next->prev = page->prev; - - page->next = NULL; - page->prev = NGX_SLAB_SMALL; - } - - p = (uintptr_t) bitmap + i; - - goto done; + for (m = 1, i = 0; m; m <<= 1, i++) { + if (bitmap[n] & m) { + continue; } - } - } - page = page->next; + bitmap[n] |= m; - } while (page); + i = (n * sizeof(uintptr_t) * 8 + i) << shift; - } else if (shift == ngx_slab_exact_shift) { - - do { - if (page->slab != NGX_SLAB_BUSY) { + p = (uintptr_t) bitmap + i; - for (m = 1, i = 0; m; m <<= 1, i++) { - if ((page->slab & m)) { - continue; - } + pool->stats[slot].used++; - page->slab |= m; + if (bitmap[n] == NGX_SLAB_BUSY) { + for (n = n + 1; n < map; n++) { + if (bitmap[n] != NGX_SLAB_BUSY) { + goto done; + } + } - if (page->slab == NGX_SLAB_BUSY) { - prev = (ngx_slab_page_t *) - (page->prev & ~NGX_SLAB_PAGE_MASK); + prev = ngx_slab_page_prev(page); prev->next = page->next; page->next->prev = page->prev; page->next = NULL; - page->prev = NGX_SLAB_EXACT; + page->prev = NGX_SLAB_SMALL; } - p = (page - pool->pages) << ngx_pagesize_shift; - p += i << shift; - p += (uintptr_t) pool->start; - goto done; } } + } - page = page->next; + } else if (shift == ngx_slab_exact_shift) { - } while (page); + for (m = 1, i = 0; m; m <<= 1, i++) { + if (page->slab & m) { + continue; + } - } else { /* shift > ngx_slab_exact_shift */ + page->slab |= m; - n = ngx_pagesize_shift - (page->slab & NGX_SLAB_SHIFT_MASK); - n = 1 << n; - n = ((uintptr_t) 1 << n) - 1; - mask = n << NGX_SLAB_MAP_SHIFT; + if (page->slab == NGX_SLAB_BUSY) { + prev = ngx_slab_page_prev(page); + prev->next = page->next; + page->next->prev = page->prev; - do { - if ((page->slab & NGX_SLAB_MAP_MASK) != mask) { + page->next = NULL; + page->prev = NGX_SLAB_EXACT; + } - for (m = (uintptr_t) 1 << NGX_SLAB_MAP_SHIFT, i = 0; - m & mask; - m <<= 1, i++) - { - if ((page->slab & m)) { - continue; - } + p = ngx_slab_page_addr(pool, page) + (i << shift); - page->slab |= m; + pool->stats[slot].used++; - if ((page->slab & NGX_SLAB_MAP_MASK) == mask) { - prev = (ngx_slab_page_t *) - (page->prev & ~NGX_SLAB_PAGE_MASK); - prev->next = page->next; - page->next->prev = page->prev; + goto done; + } - page->next = NULL; - page->prev = NGX_SLAB_BIG; - } + } else { /* shift > ngx_slab_exact_shift */ - p = (page - pool->pages) << ngx_pagesize_shift; - p += i << shift; - p += (uintptr_t) pool->start; + mask = ((uintptr_t) 1 << (ngx_pagesize >> shift)) - 1; + mask <<= NGX_SLAB_MAP_SHIFT; - goto done; - } + for (m = (uintptr_t) 1 << NGX_SLAB_MAP_SHIFT, i = 0; + m & mask; + m <<= 1, i++) + { + if (page->slab & m) { + continue; + } + + page->slab |= m; + + if ((page->slab & NGX_SLAB_MAP_MASK) == mask) { + prev = ngx_slab_page_prev(page); + prev->next = page->next; + page->next->prev = page->prev; + + page->next = NULL; + page->prev = NGX_SLAB_BIG; } - page = page->next; + p = ngx_slab_page_addr(pool, page) + (i << shift); - } while (page); + pool->stats[slot].used++; + + goto done; + } } + + ngx_slab_error(pool, NGX_LOG_ALERT, "ngx_slab_alloc(): page is busy"); + ngx_debug_point(); } page = ngx_slab_alloc_pages(pool, 1); if (page) { if (shift < ngx_slab_exact_shift) { - p = (page - pool->pages) << ngx_pagesize_shift; - bitmap = (uintptr_t *) (pool->start + p); + bitmap = (uintptr_t *) ngx_slab_page_addr(pool, page); - s = 1 << shift; - n = (1 << (ngx_pagesize_shift - shift)) / 8 / s; + n = (ngx_pagesize >> shift) / ((1 << shift) * 8); if (n == 0) { n = 1; } - bitmap[0] = (2 << n) - 1; + /* "n" elements for bitmap, plus one requested */ + bitmap[0] = ((uintptr_t) 2 << n) - 1; - map = (1 << (ngx_pagesize_shift - shift)) / (sizeof(uintptr_t) * 8); + map = (ngx_pagesize >> shift) / (sizeof(uintptr_t) * 8); for (i = 1; i < map; i++) { bitmap[i] = 0; @@ -355,8 +353,11 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size) slots[slot].next = page; - p = ((page - pool->pages) << ngx_pagesize_shift) + s * n; - p += (uintptr_t) pool->start; + pool->stats[slot].total += (ngx_pagesize >> shift) - n; + + p = ngx_slab_page_addr(pool, page) + (n << shift); + + pool->stats[slot].used++; goto done; @@ -368,8 +369,11 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size) slots[slot].next = page; - p = (page - pool->pages) << ngx_pagesize_shift; - p += (uintptr_t) pool->start; + pool->stats[slot].total += sizeof(uintptr_t) * 8; + + p = ngx_slab_page_addr(pool, page); + + pool->stats[slot].used++; goto done; @@ -381,8 +385,11 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size) slots[slot].next = page; - p = (page - pool->pages) << ngx_pagesize_shift; - p += (uintptr_t) pool->start; + pool->stats[slot].total += ngx_pagesize >> shift; + + p = ngx_slab_page_addr(pool, page); + + pool->stats[slot].used++; goto done; } @@ -390,6 +397,8 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size) p = 0; + pool->stats[slot].fails++; + done: ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, ngx_cycle->log, 0, @@ -444,7 +453,7 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) { size_t size; uintptr_t slab, m, *bitmap; - ngx_uint_t n, type, slot, shift, map; + ngx_uint_t i, n, type, slot, shift, map; ngx_slab_page_t *slots, *page; ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, ngx_cycle->log, 0, "slab free: %p", p); @@ -457,31 +466,30 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) n = ((u_char *) p - pool->start) >> ngx_pagesize_shift; page = &pool->pages[n]; slab = page->slab; - type = page->prev & NGX_SLAB_PAGE_MASK; + type = ngx_slab_page_type(page); switch (type) { case NGX_SLAB_SMALL: shift = slab & NGX_SLAB_SHIFT_MASK; - size = 1 << shift; + size = (size_t) 1 << shift; if ((uintptr_t) p & (size - 1)) { goto wrong_chunk; } n = ((uintptr_t) p & (ngx_pagesize - 1)) >> shift; - m = (uintptr_t) 1 << (n & (sizeof(uintptr_t) * 8 - 1)); - n /= (sizeof(uintptr_t) * 8); + m = (uintptr_t) 1 << (n % (sizeof(uintptr_t) * 8)); + n /= sizeof(uintptr_t) * 8; bitmap = (uintptr_t *) ((uintptr_t) p & ~((uintptr_t) ngx_pagesize - 1)); if (bitmap[n] & m) { + slot = shift - pool->min_shift; if (page->next == NULL) { - slots = (ngx_slab_page_t *) - ((u_char *) pool + sizeof(ngx_slab_pool_t)); - slot = shift - pool->min_shift; + slots = ngx_slab_slots(pool); page->next = slots[slot].next; slots[slot].next = page; @@ -492,7 +500,7 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) bitmap[n] &= ~m; - n = (1 << (ngx_pagesize_shift - shift)) / 8 / (1 << shift); + n = (ngx_pagesize >> shift) / ((1 << shift) * 8); if (n == 0) { n = 1; @@ -502,16 +510,18 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) goto done; } - map = (1 << (ngx_pagesize_shift - shift)) / (sizeof(uintptr_t) * 8); + map = (ngx_pagesize >> shift) / (sizeof(uintptr_t) * 8); - for (n = 1; n < map; n++) { - if (bitmap[n]) { + for (i = 1; i < map; i++) { + if (bitmap[i]) { goto done; } } ngx_slab_free_pages(pool, page, 1); + pool->stats[slot].total -= (ngx_pagesize >> shift) - n; + goto done; } @@ -528,10 +538,10 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) } if (slab & m) { + slot = ngx_slab_exact_shift - pool->min_shift; + if (slab == NGX_SLAB_BUSY) { - slots = (ngx_slab_page_t *) - ((u_char *) pool + sizeof(ngx_slab_pool_t)); - slot = ngx_slab_exact_shift - pool->min_shift; + slots = ngx_slab_slots(pool); page->next = slots[slot].next; slots[slot].next = page; @@ -548,6 +558,8 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) ngx_slab_free_pages(pool, page, 1); + pool->stats[slot].total -= sizeof(uintptr_t) * 8; + goto done; } @@ -556,7 +568,7 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) case NGX_SLAB_BIG: shift = slab & NGX_SLAB_SHIFT_MASK; - size = 1 << shift; + size = (size_t) 1 << shift; if ((uintptr_t) p & (size - 1)) { goto wrong_chunk; @@ -566,11 +578,10 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) + NGX_SLAB_MAP_SHIFT); if (slab & m) { + slot = shift - pool->min_shift; if (page->next == NULL) { - slots = (ngx_slab_page_t *) - ((u_char *) pool + sizeof(ngx_slab_pool_t)); - slot = shift - pool->min_shift; + slots = ngx_slab_slots(pool); page->next = slots[slot].next; slots[slot].next = page; @@ -587,6 +598,8 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) ngx_slab_free_pages(pool, page, 1); + pool->stats[slot].total -= ngx_pagesize >> shift; + goto done; } @@ -598,7 +611,7 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) goto wrong_chunk; } - if (slab == NGX_SLAB_PAGE_FREE) { + if (!(slab & NGX_SLAB_PAGE_START)) { ngx_slab_error(pool, NGX_LOG_ALERT, "ngx_slab_free(): page is already free"); goto fail; @@ -626,6 +639,8 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) done: + pool->stats[slot].used--; + ngx_slab_junk(p, size); return; @@ -678,6 +693,8 @@ ngx_slab_alloc_pages(ngx_slab_pool_t *pool, ngx_uint_t pages) page->next = NULL; page->prev = NGX_SLAB_PAGE; + pool->pfree -= pages; + if (--pages == 0) { return page; } @@ -706,9 +723,10 @@ static void ngx_slab_free_pages(ngx_slab_pool_t *pool, ngx_slab_page_t *page, ngx_uint_t pages) { - ngx_uint_t type; ngx_slab_page_t *prev, *join; + pool->pfree += pages; + page->slab = pages--; if (pages) { @@ -716,7 +734,7 @@ ngx_slab_free_pages(ngx_slab_pool_t *pool, ngx_slab_page_t *page, } if (page->next) { - prev = (ngx_slab_page_t *) (page->prev & ~NGX_SLAB_PAGE_MASK); + prev = ngx_slab_page_prev(page); prev->next = page->next; page->next->prev = page->prev; } @@ -724,15 +742,14 @@ ngx_slab_free_pages(ngx_slab_pool_t *pool, ngx_slab_page_t *page, join = page + page->slab; if (join < pool->last) { - type = join->prev & NGX_SLAB_PAGE_MASK; - if (type == NGX_SLAB_PAGE) { + if (ngx_slab_page_type(join) == NGX_SLAB_PAGE) { if (join->next != NULL) { pages += join->slab; page->slab += join->slab; - prev = (ngx_slab_page_t *) (join->prev & ~NGX_SLAB_PAGE_MASK); + prev = ngx_slab_page_prev(join); prev->next = join->next; join->next->prev = join->prev; @@ -745,19 +762,18 @@ ngx_slab_free_pages(ngx_slab_pool_t *pool, ngx_slab_page_t *page, if (page > pool->pages) { join = page - 1; - type = join->prev & NGX_SLAB_PAGE_MASK; - if (type == NGX_SLAB_PAGE) { + if (ngx_slab_page_type(join) == NGX_SLAB_PAGE) { if (join->slab == NGX_SLAB_PAGE_FREE) { - join = (ngx_slab_page_t *) (join->prev & ~NGX_SLAB_PAGE_MASK); + join = ngx_slab_page_prev(join); } if (join->next != NULL) { pages += join->slab; join->slab += page->slab; - prev = (ngx_slab_page_t *) (join->prev & ~NGX_SLAB_PAGE_MASK); + prev = ngx_slab_page_prev(join); prev->next = join->next; join->next->prev = join->prev; Renamed: vendor/nginx-1.11.8/src/core/ngx_slab.h (+12 -0) 85% =================================================================== --- vendor/nginx-1.11.6/src/core/ngx_slab.h 2016-12-27 22:25:26 +0900 (2922a80) +++ vendor/nginx-1.11.8/src/core/ngx_slab.h 2016-12-27 23:47:36 +0900 (eff893c) @@ -23,6 +23,15 @@ struct ngx_slab_page_s { typedef struct { + ngx_uint_t total; + ngx_uint_t used; + + ngx_uint_t reqs; + ngx_uint_t fails; +} ngx_slab_stat_t; + + +typedef struct { ngx_shmtx_sh_t lock; size_t min_size; @@ -32,6 +41,9 @@ typedef struct { ngx_slab_page_t *last; ngx_slab_page_t free; + ngx_slab_stat_t *stats; + ngx_uint_t pfree; + u_char *start; u_char *end; Renamed: vendor/nginx-1.11.8/src/core/ngx_spinlock.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_string.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_string.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_syslog.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_syslog.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_thread_pool.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_thread_pool.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_times.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/core/ngx_times.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_devpoll_module.c (+4 -6) 98% =================================================================== --- vendor/nginx-1.11.6/src/event/modules/ngx_devpoll_module.c 2016-12-27 22:25:26 +0900 (f985fbd) +++ vendor/nginx-1.11.8/src/event/modules/ngx_devpoll_module.c 2016-12-27 23:47:36 +0900 (39e480e) @@ -481,13 +481,11 @@ ngx_devpoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, fd, event_list[i].events, revents); } - if ((revents & (POLLERR|POLLHUP|POLLNVAL)) - && (revents & (POLLIN|POLLOUT)) == 0) - { + if (revents & (POLLERR|POLLHUP|POLLNVAL)) { + /* - * if the error events were returned without POLLIN or POLLOUT, - * then add these flags to handle the events at least in one - * active handler + * if the error events were returned, add POLLIN and POLLOUT + * to handle the events at least in one active handler */ revents |= POLLIN|POLLOUT; Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_epoll_module.c (+7 -12) 98% =================================================================== --- vendor/nginx-1.11.6/src/event/modules/ngx_epoll_module.c 2016-12-27 22:25:26 +0900 (c267fd6) +++ vendor/nginx-1.11.8/src/event/modules/ngx_epoll_module.c 2016-12-27 23:47:36 +0900 (760c69b) @@ -863,6 +863,13 @@ ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "epoll_wait() error on fd:%d ev:%04XD", c->fd, revents); + + /* + * if the error events were returned, add EPOLLIN and EPOLLOUT + * to handle the events at least in one active handler + */ + + revents |= EPOLLIN|EPOLLOUT; } #if 0 @@ -873,18 +880,6 @@ ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) } #endif - if ((revents & (EPOLLERR|EPOLLHUP)) - && (revents & (EPOLLIN|EPOLLOUT)) == 0) - { - /* - * if the error events were returned without EPOLLIN or EPOLLOUT, - * then add these flags to handle the events at least in one - * active handler - */ - - revents |= EPOLLIN|EPOLLOUT; - } - if ((revents & EPOLLIN) && rev->active) { #if (NGX_HAVE_EPOLLRDHUP) Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_eventport_module.c (+4 -6) 98% =================================================================== --- vendor/nginx-1.11.6/src/event/modules/ngx_eventport_module.c 2016-12-27 22:25:26 +0900 (dafa27f) +++ vendor/nginx-1.11.8/src/event/modules/ngx_eventport_module.c 2016-12-27 23:47:36 +0900 (0413599) @@ -540,13 +540,11 @@ ngx_eventport_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, (int) event_list[i].portev_object, revents); } - if ((revents & (POLLERR|POLLHUP|POLLNVAL)) - && (revents & (POLLIN|POLLOUT)) == 0) - { + if (revents & (POLLERR|POLLHUP|POLLNVAL)) { + /* - * if the error events were returned without POLLIN or POLLOUT, - * then add these flags to handle the events at least in one - * active handler + * if the error events were returned, add POLLIN and POLLOUT + * to handle the events at least in one active handler */ revents |= POLLIN|POLLOUT; Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_iocp_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_iocp_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_kqueue_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_poll_module.c (+4 -6) 97% =================================================================== --- vendor/nginx-1.11.6/src/event/modules/ngx_poll_module.c 2016-12-27 22:25:26 +0900 (4370950) +++ vendor/nginx-1.11.8/src/event/modules/ngx_poll_module.c 2016-12-27 23:47:36 +0900 (a2a7079) @@ -353,13 +353,11 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) continue; } - if ((revents & (POLLERR|POLLHUP|POLLNVAL)) - && (revents & (POLLIN|POLLOUT)) == 0) - { + if (revents & (POLLERR|POLLHUP|POLLNVAL)) { + /* - * if the error events were returned without POLLIN or POLLOUT, - * then add these flags to handle the events at least in one - * active handler + * if the error events were returned, add POLLIN and POLLOUT + * to handle the events at least in one active handler */ revents |= POLLIN|POLLOUT; Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_select_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_win32_select_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_accept.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_acceptex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_connect.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_connect.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_connectex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_openssl.c (+409 -21) 91% =================================================================== --- vendor/nginx-1.11.6/src/event/ngx_event_openssl.c 2016-12-27 22:25:26 +0900 (5c7734d) +++ vendor/nginx-1.11.8/src/event/ngx_event_openssl.c 2016-12-27 23:47:36 +0900 (3c74b7b) @@ -59,6 +59,12 @@ static int ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn, static ngx_int_t ngx_ssl_check_name(ngx_str_t *name, ASN1_STRING *str); #endif +static time_t ngx_ssl_parse_time( +#if OPENSSL_VERSION_NUMBER > 0x10100000L + const +#endif + ASN1_TIME *asn1time); + static void *ngx_openssl_create_conf(ngx_cycle_t *cycle); static char *ngx_openssl_engine(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); static void ngx_openssl_exit(ngx_cycle_t *cycle); @@ -106,6 +112,7 @@ int ngx_ssl_session_cache_index; int ngx_ssl_session_ticket_keys_index; int ngx_ssl_certificate_index; int ngx_ssl_next_certificate_index; +int ngx_ssl_certificate_name_index; int ngx_ssl_stapling_index; @@ -193,6 +200,14 @@ ngx_ssl_init(ngx_log_t *log) return NGX_ERROR; } + ngx_ssl_certificate_name_index = X509_get_ex_new_index(0, NULL, NULL, NULL, + NULL); + + if (ngx_ssl_certificate_name_index == -1) { + ngx_ssl_error(NGX_LOG_ALERT, log, 0, "X509_get_ex_new_index() failed"); + return NGX_ERROR; + } + ngx_ssl_stapling_index = X509_get_ex_new_index(0, NULL, NULL, NULL, NULL); if (ngx_ssl_stapling_index == -1) { @@ -385,6 +400,15 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, return NGX_ERROR; } + if (X509_set_ex_data(x509, ngx_ssl_certificate_name_index, cert->data) + == 0) + { + ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, "X509_set_ex_data() failed"); + X509_free(x509); + BIO_free(bio); + return NGX_ERROR; + } + if (X509_set_ex_data(x509, ngx_ssl_next_certificate_index, SSL_CTX_get_ex_data(ssl->ctx, ngx_ssl_certificate_index)) == 0) @@ -2832,7 +2856,8 @@ ngx_ssl_session_rbtree_insert_value(ngx_rbtree_node_t *temp, ngx_int_t ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths) { - u_char buf[48]; + u_char buf[80]; + size_t size; ssize_t n; ngx_str_t *path; ngx_file_t file; @@ -2875,13 +2900,15 @@ ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths) goto failed; } - if (ngx_file_size(&fi) != 48) { + size = ngx_file_size(&fi); + + if (size != 48 && size != 80) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "\"%V\" must be 48 bytes", &file.name); + "\"%V\" must be 48 or 80 bytes", &file.name); goto failed; } - n = ngx_read_file(&file, buf, 48, 0); + n = ngx_read_file(&file, buf, size, 0); if (n == NGX_ERROR) { ngx_conf_log_error(NGX_LOG_CRIT, cf, ngx_errno, @@ -2889,10 +2916,10 @@ ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths) goto failed; } - if (n != 48) { + if ((size_t) n != size) { ngx_conf_log_error(NGX_LOG_CRIT, cf, 0, ngx_read_file_n " \"%V\" returned only " - "%z bytes instead of 48", &file.name, n); + "%z bytes instead of %uz", &file.name, n, size); goto failed; } @@ -2901,9 +2928,18 @@ ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths) goto failed; } - ngx_memcpy(key->name, buf, 16); - ngx_memcpy(key->aes_key, buf + 16, 16); - ngx_memcpy(key->hmac_key, buf + 32, 16); + if (size == 48) { + key->size = 48; + ngx_memcpy(key->name, buf, 16); + ngx_memcpy(key->aes_key, buf + 16, 16); + ngx_memcpy(key->hmac_key, buf + 32, 16); + + } else { + key->size = 80; + ngx_memcpy(key->name, buf, 16); + ngx_memcpy(key->hmac_key, buf + 16, 32); + ngx_memcpy(key->aes_key, buf + 48, 32); + } if (ngx_close_file(file.fd) == NGX_FILE_ERROR) { ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno, @@ -2948,6 +2984,7 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn, unsigned char *name, unsigned char *iv, EVP_CIPHER_CTX *ectx, HMAC_CTX *hctx, int enc) { + size_t size; SSL_CTX *ssl_ctx; ngx_uint_t i; ngx_array_t *keys; @@ -2962,7 +2999,6 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn, c = ngx_ssl_get_connection(ssl_conn); ssl_ctx = c->ssl->session_ctx; - cipher = EVP_aes_128_cbc(); #ifdef OPENSSL_NO_SHA256 digest = EVP_sha1(); #else @@ -2984,6 +3020,15 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn, ngx_hex_dump(buf, key[0].name, 16) - buf, buf, SSL_session_reused(ssl_conn) ? "reused" : "new"); + if (key[0].size == 48) { + cipher = EVP_aes_128_cbc(); + size = 16; + + } else { + cipher = EVP_aes_256_cbc(); + size = 32; + } + if (RAND_bytes(iv, EVP_CIPHER_iv_length(cipher)) != 1) { ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "RAND_bytes() failed"); return -1; @@ -2996,12 +3041,12 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn, } #if OPENSSL_VERSION_NUMBER >= 0x10000000L - if (HMAC_Init_ex(hctx, key[0].hmac_key, 16, digest, NULL) != 1) { + if (HMAC_Init_ex(hctx, key[0].hmac_key, size, digest, NULL) != 1) { ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "HMAC_Init_ex() failed"); return -1; } #else - HMAC_Init_ex(hctx, key[0].hmac_key, 16, digest, NULL); + HMAC_Init_ex(hctx, key[0].hmac_key, size, digest, NULL); #endif ngx_memcpy(name, key[0].name, 16); @@ -3030,13 +3075,22 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn, ngx_hex_dump(buf, key[i].name, 16) - buf, buf, (i == 0) ? " (default)" : ""); + if (key[i].size == 48) { + cipher = EVP_aes_128_cbc(); + size = 16; + + } else { + cipher = EVP_aes_256_cbc(); + size = 32; + } + #if OPENSSL_VERSION_NUMBER >= 0x10000000L - if (HMAC_Init_ex(hctx, key[i].hmac_key, 16, digest, NULL) != 1) { + if (HMAC_Init_ex(hctx, key[i].hmac_key, size, digest, NULL) != 1) { ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "HMAC_Init_ex() failed"); return -1; } #else - HMAC_Init_ex(hctx, key[i].hmac_key, 16, digest, NULL); + HMAC_Init_ex(hctx, key[i].hmac_key, size, digest, NULL); #endif if (EVP_DecryptInit_ex(ectx, cipher, NULL, key[i].aes_key, iv) != 1) { @@ -3270,6 +3324,158 @@ ngx_ssl_get_cipher_name(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) ngx_int_t +ngx_ssl_get_ciphers(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) +{ +#ifdef SSL_CTRL_GET_RAW_CIPHERLIST + + int n, i, bytes; + size_t len; + u_char *ciphers, *p; + const SSL_CIPHER *cipher; + + bytes = SSL_get0_raw_cipherlist(c->ssl->connection, NULL); + n = SSL_get0_raw_cipherlist(c->ssl->connection, &ciphers); + + if (n <= 0) { + s->len = 0; + return NGX_OK; + } + + len = 0; + n /= bytes; + + for (i = 0; i < n; i++) { + cipher = SSL_CIPHER_find(c->ssl->connection, ciphers + i * bytes); + + if (cipher) { + len += ngx_strlen(SSL_CIPHER_get_name(cipher)); + + } else { + len += sizeof("0x") - 1 + bytes * (sizeof("00") - 1); + } + + len += sizeof(":") - 1; + } + + s->data = ngx_pnalloc(pool, len); + if (s->data == NULL) { + return NGX_ERROR; + } + + p = s->data; + + for (i = 0; i < n; i++) { + cipher = SSL_CIPHER_find(c->ssl->connection, ciphers + i * bytes); + + if (cipher) { + p = ngx_sprintf(p, "%s", SSL_CIPHER_get_name(cipher)); + + } else { + p = ngx_sprintf(p, "0x"); + p = ngx_hex_dump(p, ciphers + i * bytes, bytes); + } + + *p++ = ':'; + } + + p--; + + s->len = p - s->data; + +#else + + u_char buf[4096]; + + if (SSL_get_shared_ciphers(c->ssl->connection, (char *) buf, 4096) + == NULL) + { + s->len = 0; + return NGX_OK; + } + + s->len = ngx_strlen(buf); + s->data = ngx_pnalloc(pool, s->len); + if (s->data == NULL) { + return NGX_ERROR; + } + + ngx_memcpy(s->data, buf, s->len); + +#endif + + return NGX_OK; +} + + +ngx_int_t +ngx_ssl_get_curves(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) +{ +#ifdef SSL_CTRL_GET_CURVES + + int *curves, n, i, nid; + u_char *p; + size_t len; + + n = SSL_get1_curves(c->ssl->connection, NULL); + + if (n <= 0) { + s->len = 0; + return NGX_OK; + } + + curves = ngx_palloc(pool, n * sizeof(int)); + + n = SSL_get1_curves(c->ssl->connection, curves); + len = 0; + + for (i = 0; i < n; i++) { + nid = curves[i]; + + if (nid & TLSEXT_nid_unknown) { + len += sizeof("0x0000") - 1; + + } else { + len += ngx_strlen(OBJ_nid2sn(nid)); + } + + len += sizeof(":") - 1; + } + + s->data = ngx_pnalloc(pool, len); + if (s->data == NULL) { + return NGX_ERROR; + } + + p = s->data; + + for (i = 0; i < n; i++) { + nid = curves[i]; + + if (nid & TLSEXT_nid_unknown) { + p = ngx_sprintf(p, "0x%04xd", nid & 0xffff); + + } else { + p = ngx_sprintf(p, "%s", OBJ_nid2sn(nid)); + } + + *p++ = ':'; + } + + p--; + + s->len = p - s->data; + +#else + + s->len = 0; + +#endif + + return NGX_OK; +} + + +ngx_int_t ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) { u_char *buf; @@ -3699,28 +3905,210 @@ ngx_ssl_get_fingerprint(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) ngx_int_t ngx_ssl_get_client_verify(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) { - X509 *cert; + X509 *cert; + long rc; + const char *str; - if (SSL_get_verify_result(c->ssl->connection) != X509_V_OK) { - ngx_str_set(s, "FAILED"); + cert = SSL_get_peer_certificate(c->ssl->connection); + if (cert == NULL) { + ngx_str_set(s, "NONE"); return NGX_OK; } - cert = SSL_get_peer_certificate(c->ssl->connection); + X509_free(cert); - if (cert) { + rc = SSL_get_verify_result(c->ssl->connection); + + if (rc == X509_V_OK) { ngx_str_set(s, "SUCCESS"); + return NGX_OK; + } - } else { - ngx_str_set(s, "NONE"); + str = X509_verify_cert_error_string(rc); + + s->data = ngx_pnalloc(pool, sizeof("FAILED:") - 1 + ngx_strlen(str)); + if (s->data == NULL) { + return NGX_ERROR; + } + + s->len = ngx_sprintf(s->data, "FAILED:%s", str) - s->data; + + return NGX_OK; +} + + +ngx_int_t +ngx_ssl_get_client_v_start(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) +{ + BIO *bio; + X509 *cert; + size_t len; + + s->len = 0; + + cert = SSL_get_peer_certificate(c->ssl->connection); + if (cert == NULL) { + return NGX_OK; + } + + bio = BIO_new(BIO_s_mem()); + if (bio == NULL) { + X509_free(cert); + return NGX_ERROR; } +#if OPENSSL_VERSION_NUMBER > 0x10100000L + ASN1_TIME_print(bio, X509_get0_notBefore(cert)); +#else + ASN1_TIME_print(bio, X509_get_notBefore(cert)); +#endif + + len = BIO_pending(bio); + + s->len = len; + s->data = ngx_pnalloc(pool, len); + if (s->data == NULL) { + BIO_free(bio); + X509_free(cert); + return NGX_ERROR; + } + + BIO_read(bio, s->data, len); + BIO_free(bio); X509_free(cert); return NGX_OK; } +ngx_int_t +ngx_ssl_get_client_v_end(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) +{ + BIO *bio; + X509 *cert; + size_t len; + + s->len = 0; + + cert = SSL_get_peer_certificate(c->ssl->connection); + if (cert == NULL) { + return NGX_OK; + } + + bio = BIO_new(BIO_s_mem()); + if (bio == NULL) { + X509_free(cert); + return NGX_ERROR; + } + +#if OPENSSL_VERSION_NUMBER > 0x10100000L + ASN1_TIME_print(bio, X509_get0_notAfter(cert)); +#else + ASN1_TIME_print(bio, X509_get_notAfter(cert)); +#endif + + len = BIO_pending(bio); + + s->len = len; + s->data = ngx_pnalloc(pool, len); + if (s->data == NULL) { + BIO_free(bio); + X509_free(cert); + return NGX_ERROR; + } + + BIO_read(bio, s->data, len); + BIO_free(bio); + X509_free(cert); + + return NGX_OK; +} + + +ngx_int_t +ngx_ssl_get_client_v_remain(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s) +{ + X509 *cert; + time_t now, end; + + s->len = 0; + + cert = SSL_get_peer_certificate(c->ssl->connection); + if (cert == NULL) { + return NGX_OK; + } + +#if OPENSSL_VERSION_NUMBER > 0x10100000L + end = ngx_ssl_parse_time(X509_get0_notAfter(cert)); +#else + end = ngx_ssl_parse_time(X509_get_notAfter(cert)); +#endif + + if (end == (time_t) NGX_ERROR) { + X509_free(cert); + return NGX_OK; + } + + now = ngx_time(); + + if (end < now + 86400) { + ngx_str_set(s, "0"); + X509_free(cert); + return NGX_OK; + } + + s->data = ngx_pnalloc(pool, NGX_TIME_T_LEN); + if (s->data == NULL) { + X509_free(cert); + return NGX_ERROR; + } + + s->len = ngx_sprintf(s->data, "%T", (end - now) / 86400) - s->data; + + X509_free(cert); + + return NGX_OK; +} + + +static time_t +ngx_ssl_parse_time( +#if OPENSSL_VERSION_NUMBER > 0x10100000L + const +#endif + ASN1_TIME *asn1time) +{ + BIO *bio; + char *value; + size_t len; + time_t time; + + /* + * OpenSSL doesn't provide a way to convert ASN1_TIME + * into time_t. To do this, we use ASN1_TIME_print(), + * which uses the "MMM DD HH:MM:SS YYYY [GMT]" format (e.g., + * "Feb 3 00:55:52 2015 GMT"), and parse the result. + */ + + bio = BIO_new(BIO_s_mem()); + if (bio == NULL) { + return NGX_ERROR; + } + + /* fake weekday prepended to match C asctime() format */ + + BIO_write(bio, "Tue ", sizeof("Tue ") - 1); + ASN1_TIME_print(bio, asn1time); + len = BIO_get_mem_data(bio, &value); + + time = ngx_parse_http_time((u_char *) value, len); + + BIO_free(bio); + + return time; +} + + static void * ngx_openssl_create_conf(ngx_cycle_t *cycle) { Renamed: vendor/nginx-1.11.8/src/event/ngx_event_openssl.h (+14 -2) 92% =================================================================== --- vendor/nginx-1.11.6/src/event/ngx_event_openssl.h 2016-12-27 22:25:26 +0900 (d233c02) +++ vendor/nginx-1.11.8/src/event/ngx_event_openssl.h 2016-12-27 23:47:36 +0900 (e093e10) @@ -117,9 +117,10 @@ typedef struct { #ifdef SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB typedef struct { + size_t size; u_char name[16]; - u_char aes_key[16]; - u_char hmac_key[16]; + u_char hmac_key[32]; + u_char aes_key[32]; } ngx_ssl_session_ticket_key_t; #endif @@ -191,6 +192,10 @@ ngx_int_t ngx_ssl_get_protocol(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s); ngx_int_t ngx_ssl_get_cipher_name(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s); +ngx_int_t ngx_ssl_get_ciphers(ngx_connection_t *c, ngx_pool_t *pool, + ngx_str_t *s); +ngx_int_t ngx_ssl_get_curves(ngx_connection_t *c, ngx_pool_t *pool, + ngx_str_t *s); ngx_int_t ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s); ngx_int_t ngx_ssl_get_session_reused(ngx_connection_t *c, ngx_pool_t *pool, @@ -215,6 +220,12 @@ ngx_int_t ngx_ssl_get_fingerprint(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s); ngx_int_t ngx_ssl_get_client_verify(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s); +ngx_int_t ngx_ssl_get_client_v_start(ngx_connection_t *c, ngx_pool_t *pool, + ngx_str_t *s); +ngx_int_t ngx_ssl_get_client_v_end(ngx_connection_t *c, ngx_pool_t *pool, + ngx_str_t *s); +ngx_int_t ngx_ssl_get_client_v_remain(ngx_connection_t *c, ngx_pool_t *pool, + ngx_str_t *s); ngx_int_t ngx_ssl_handshake(ngx_connection_t *c); @@ -236,6 +247,7 @@ extern int ngx_ssl_session_cache_index; extern int ngx_ssl_session_ticket_keys_index; extern int ngx_ssl_certificate_index; extern int ngx_ssl_next_certificate_index; +extern int ngx_ssl_certificate_name_index; extern int ngx_ssl_stapling_index; Renamed: vendor/nginx-1.11.8/src/event/ngx_event_openssl_stapling.c (+59 -24) 95% =================================================================== --- vendor/nginx-1.11.6/src/event/ngx_event_openssl_stapling.c 2016-12-27 22:25:26 +0900 (09fab76) +++ vendor/nginx-1.11.8/src/event/ngx_event_openssl_stapling.c 2016-12-27 23:47:36 +0900 (d332c11) @@ -31,6 +31,8 @@ typedef struct { X509 *cert; X509 *issuer; + u_char *name; + time_t valid; time_t refresh; @@ -45,6 +47,8 @@ struct ngx_ssl_ocsp_ctx_s { X509 *cert; X509 *issuer; + u_char *name; + ngx_uint_t naddrs; ngx_addr_t *addrs; @@ -57,14 +61,14 @@ struct ngx_ssl_ocsp_ctx_s { ngx_msec_t timeout; - void (*handler)(ngx_ssl_ocsp_ctx_t *r); + void (*handler)(ngx_ssl_ocsp_ctx_t *ctx); void *data; ngx_buf_t *request; ngx_buf_t *response; ngx_peer_connection_t peer; - ngx_int_t (*process)(ngx_ssl_ocsp_ctx_t *r); + ngx_int_t (*process)(ngx_ssl_ocsp_ctx_t *ctx); ngx_uint_t state; @@ -173,6 +177,8 @@ ngx_ssl_stapling_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, X509 *cert, staple->timeout = 60000; staple->verify = verify; staple->cert = cert; + staple->name = X509_get_ex_data(staple->cert, + ngx_ssl_certificate_name_index); if (file->len) { /* use OCSP response from the file */ @@ -354,7 +360,9 @@ ngx_ssl_stapling_issuer(ngx_conf_t *cf, ngx_ssl_t *ssl, if (rc == 0) { ngx_log_error(NGX_LOG_WARN, ssl->log, 0, - "\"ssl_stapling\" ignored, issuer certificate not found"); + "\"ssl_stapling\" ignored, " + "issuer certificate not found for certificate \"%s\"", + staple->name); X509_STORE_CTX_free(store_ctx); return NGX_DECLINED; } @@ -374,9 +382,9 @@ static ngx_int_t ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_ssl_stapling_t *staple, ngx_str_t *responder) { - ngx_url_t u; char *s; ngx_str_t rsp; + ngx_url_t u; STACK_OF(OPENSSL_STRING) *aia; if (responder->len == 0) { @@ -387,7 +395,8 @@ ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl, if (aia == NULL) { ngx_log_error(NGX_LOG_WARN, ssl->log, 0, "\"ssl_stapling\" ignored, " - "no OCSP responder URL in the certificate"); + "no OCSP responder URL in the certificate \"%s\"", + staple->name); return NGX_DECLINED; } @@ -399,7 +408,8 @@ ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl, if (s == NULL) { ngx_log_error(NGX_LOG_WARN, ssl->log, 0, "\"ssl_stapling\" ignored, " - "no OCSP responder URL in the certificate"); + "no OCSP responder URL in the certificate \"%s\"", + staple->name); X509_email_free(aia); return NGX_DECLINED; } @@ -432,7 +442,9 @@ ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl, } else { ngx_log_error(NGX_LOG_WARN, ssl->log, 0, "\"ssl_stapling\" ignored, " - "invalid URL prefix in OCSP responder \"%V\"", &u.url); + "invalid URL prefix in OCSP responder \"%V\" " + "in the certificate \"%s\"", + &u.url, staple->name); return NGX_DECLINED; } @@ -440,7 +452,9 @@ ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl, if (u.err) { ngx_log_error(NGX_LOG_WARN, ssl->log, 0, "\"ssl_stapling\" ignored, " - "%s in OCSP responder \"%V\"", u.err, &u.url); + "%s in OCSP responder \"%V\" " + "in the certificate \"%s\"", + u.err, &u.url, staple->name); return NGX_DECLINED; } @@ -547,6 +561,7 @@ ngx_ssl_stapling_update(ngx_ssl_stapling_t *staple) ctx->cert = staple->cert; ctx->issuer = staple->issuer; + ctx->name = staple->name; ctx->addrs = staple->addrs; ctx->host = staple->host; @@ -757,10 +772,10 @@ error: static time_t ngx_ssl_stapling_time(ASN1_GENERALIZEDTIME *asn1time) { - u_char *value; + BIO *bio; + char *value; size_t len; time_t time; - BIO *bio; /* * OpenSSL doesn't provide a way to convert ASN1_GENERALIZEDTIME @@ -780,7 +795,7 @@ ngx_ssl_stapling_time(ASN1_GENERALIZEDTIME *asn1time) ASN1_GENERALIZEDTIME_print(bio, asn1time); len = BIO_get_mem_data(bio, &value); - time = ngx_parse_http_time(value, len); + time = ngx_parse_http_time((u_char *) value, len); BIO_free(bio); @@ -1005,7 +1020,7 @@ failed: static void ngx_ssl_ocsp_connect(ngx_ssl_ocsp_ctx_t *ctx) { - ngx_int_t rc; + ngx_int_t rc; ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ctx->log, 0, "ssl ocsp connect"); @@ -1103,10 +1118,10 @@ ngx_ssl_ocsp_write_handler(ngx_event_t *wev) static void ngx_ssl_ocsp_read_handler(ngx_event_t *rev) { - ssize_t n, size; - ngx_int_t rc; - ngx_ssl_ocsp_ctx_t *ctx; - ngx_connection_t *c; + ssize_t n, size; + ngx_int_t rc; + ngx_connection_t *c; + ngx_ssl_ocsp_ctx_t *ctx; c = rev->data; ctx = c->data; @@ -1310,12 +1325,11 @@ ngx_ssl_ocsp_process_status_line(ngx_ssl_ocsp_ctx_t *ctx) rc = ngx_ssl_ocsp_parse_status_line(ctx); if (rc == NGX_OK) { -#if 0 - ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ctx->log, 0, - "ssl ocsp status line \"%*s\"", - ctx->response->pos - ctx->response->start, - ctx->response->start); -#endif + ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ctx->log, 0, + "ssl ocsp status %ui \"%*s\"", + ctx->code, + ctx->header_end - ctx->header_start, + ctx->header_start); ctx->process = ngx_ssl_ocsp_process_headers; return ctx->process(ctx); @@ -1476,6 +1490,7 @@ ngx_ssl_ocsp_parse_status_line(ngx_ssl_ocsp_ctx_t *ctx) if (++ctx->count == 3) { state = sw_space_after_status; + ctx->header_start = p - 2; } break; @@ -1493,6 +1508,7 @@ ngx_ssl_ocsp_parse_status_line(ngx_ssl_ocsp_ctx_t *ctx) state = sw_almost_done; break; case LF: + ctx->header_end = p; goto done; default: return NGX_ERROR; @@ -1506,6 +1522,7 @@ ngx_ssl_ocsp_parse_status_line(ngx_ssl_ocsp_ctx_t *ctx) state = sw_almost_done; break; case LF: + ctx->header_end = p; goto done; } break; @@ -1514,6 +1531,7 @@ ngx_ssl_ocsp_parse_status_line(ngx_ssl_ocsp_ctx_t *ctx) case sw_almost_done: switch (ch) { case LF: + ctx->header_end = p - 1; goto done; default: return NGX_ERROR; @@ -1608,10 +1626,11 @@ ngx_ssl_ocsp_process_headers(ngx_ssl_ocsp_ctx_t *ctx) return ctx->process(ctx); } + static ngx_int_t ngx_ssl_ocsp_parse_header_line(ngx_ssl_ocsp_ctx_t *ctx) { - u_char c, ch, *p; + u_char c, ch, *p; enum { sw_start = 0, sw_name, @@ -1821,12 +1840,27 @@ ngx_ssl_ocsp_log_error(ngx_log_t *log, u_char *buf, size_t len) if (log->action) { p = ngx_snprintf(buf, len, " while %s", log->action); len -= p - buf; + buf = p; } ctx = log->data; if (ctx) { - p = ngx_snprintf(p, len, ", responder: %V", &ctx->host); + p = ngx_snprintf(buf, len, ", responder: %V", &ctx->host); + len -= p - buf; + buf = p; + } + + if (ctx && ctx->peer.name) { + p = ngx_snprintf(buf, len, ", peer: %V", ctx->peer.name); + len -= p - buf; + buf = p; + } + + if (ctx && ctx->name) { + p = ngx_snprintf(buf, len, ", certificate: \"%s\"", ctx->name); + len -= p - buf; + buf = p; } return p; @@ -1846,6 +1880,7 @@ ngx_ssl_stapling(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *file, return NGX_OK; } + ngx_int_t ngx_ssl_stapling_resolver(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_resolver_t *resolver, ngx_msec_t resolver_timeout) Renamed: vendor/nginx-1.11.8/src/event/ngx_event_pipe.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_pipe.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_posted.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_posted.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_timer.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/event/ngx_event_timer.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_access_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_addition_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_auth_basic_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_auth_request_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_autoindex_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_browser_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_charset_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_chunked_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_dav_module.c (+3 -6) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/modules/ngx_http_dav_module.c 2016-12-27 22:25:26 +0900 (012a0fb) +++ vendor/nginx-1.11.8/src/http/modules/ngx_http_dav_module.c 2016-12-27 23:47:36 +0900 (895a52d) @@ -1067,7 +1067,7 @@ ngx_http_dav_location(ngx_http_request_t *r, u_char *path) u_char *location; ngx_http_core_loc_conf_t *clcf; - r->headers_out.location = ngx_palloc(r->pool, sizeof(ngx_table_elt_t)); + r->headers_out.location = ngx_list_push(&r->headers_out.headers); if (r->headers_out.location == NULL) { return NGX_ERROR; } @@ -1086,11 +1086,8 @@ ngx_http_dav_location(ngx_http_request_t *r, u_char *path) ngx_memcpy(location, r->uri.data, r->uri.len); } - /* - * we do not need to set the r->headers_out.location->hash and - * r->headers_out.location->key fields - */ - + r->headers_out.location->hash = 1; + ngx_str_set(&r->headers_out.location->key, "Location"); r->headers_out.location->value.len = r->uri.len; r->headers_out.location->value.data = location; Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_degradation_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_empty_gif_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_fastcgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_flv_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_geo_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_geoip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_gunzip_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_gzip_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_gzip_static_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_headers_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_image_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_index_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_limit_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_limit_req_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_log_module.c (+77 -6) 95% =================================================================== --- vendor/nginx-1.11.6/src/http/modules/ngx_http_log_module.c 2016-12-27 22:25:26 +0900 (c42fb08) +++ vendor/nginx-1.11.8/src/http/modules/ngx_http_log_module.c 2016-12-27 23:47:36 +0900 (ff8572b) @@ -126,12 +126,16 @@ static u_char *ngx_http_log_request_length(ngx_http_request_t *r, u_char *buf, ngx_http_log_op_t *op); static ngx_int_t ngx_http_log_variable_compile(ngx_conf_t *cf, - ngx_http_log_op_t *op, ngx_str_t *value); + ngx_http_log_op_t *op, ngx_str_t *value, ngx_uint_t json); static size_t ngx_http_log_variable_getlen(ngx_http_request_t *r, uintptr_t data); static u_char *ngx_http_log_variable(ngx_http_request_t *r, u_char *buf, ngx_http_log_op_t *op); static uintptr_t ngx_http_log_escape(u_char *dst, u_char *src, size_t size); +static size_t ngx_http_log_json_variable_getlen(ngx_http_request_t *r, + uintptr_t data); +static u_char *ngx_http_log_json_variable(ngx_http_request_t *r, u_char *buf, + ngx_http_log_op_t *op); static void *ngx_http_log_create_main_conf(ngx_conf_t *cf); @@ -909,7 +913,7 @@ ngx_http_log_request_length(ngx_http_request_t *r, u_char *buf, static ngx_int_t ngx_http_log_variable_compile(ngx_conf_t *cf, ngx_http_log_op_t *op, - ngx_str_t *value) + ngx_str_t *value, ngx_uint_t json) { ngx_int_t index; @@ -919,8 +923,16 @@ ngx_http_log_variable_compile(ngx_conf_t *cf, ngx_http_log_op_t *op, } op->len = 0; - op->getlen = ngx_http_log_variable_getlen; - op->run = ngx_http_log_variable; + + if (json) { + op->getlen = ngx_http_log_json_variable_getlen; + op->run = ngx_http_log_json_variable; + + } else { + op->getlen = ngx_http_log_variable_getlen; + op->run = ngx_http_log_variable; + } + op->data = index; return NGX_OK; @@ -1028,6 +1040,47 @@ ngx_http_log_escape(u_char *dst, u_char *src, size_t size) } +static size_t +ngx_http_log_json_variable_getlen(ngx_http_request_t *r, uintptr_t data) +{ + uintptr_t len; + ngx_http_variable_value_t *value; + + value = ngx_http_get_indexed_variable(r, data); + + if (value == NULL || value->not_found) { + return 0; + } + + len = ngx_escape_json(NULL, value->data, value->len); + + value->escape = len ? 1 : 0; + + return value->len + len; +} + + +static u_char * +ngx_http_log_json_variable(ngx_http_request_t *r, u_char *buf, + ngx_http_log_op_t *op) +{ + ngx_http_variable_value_t *value; + + value = ngx_http_get_indexed_variable(r, op->data); + + if (value == NULL || value->not_found) { + return buf; + } + + if (value->escape == 0) { + return ngx_cpymem(buf, value->data, value->len); + + } else { + return (u_char *) ngx_escape_json(buf, value->data, value->len); + } +} + + static void * ngx_http_log_create_main_conf(ngx_conf_t *cf) { @@ -1491,12 +1544,28 @@ ngx_http_log_compile_format(ngx_conf_t *cf, ngx_array_t *flushes, size_t i, len; ngx_str_t *value, var; ngx_int_t *flush; - ngx_uint_t bracket; + ngx_uint_t bracket, json; ngx_http_log_op_t *op; ngx_http_log_var_t *v; + json = 0; value = args->elts; + if (s < args->nelts && ngx_strncmp(value[s].data, "escape=", 7) == 0) { + data = value[s].data + 7; + + if (ngx_strcmp(data, "json") == 0) { + json = 1; + + } else if (ngx_strcmp(data, "default") != 0) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "unknown log format escaping \"%s\"", data); + return NGX_CONF_ERROR; + } + + s++; + } + for ( /* void */ ; s < args->nelts; s++) { i = 0; @@ -1575,7 +1644,9 @@ ngx_http_log_compile_format(ngx_conf_t *cf, ngx_array_t *flushes, } } - if (ngx_http_log_variable_compile(cf, op, &var) != NGX_OK) { + if (ngx_http_log_variable_compile(cf, op, &var, json) + != NGX_OK) + { return NGX_CONF_ERROR; } Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_map_module.c (+16 -2) 97% =================================================================== --- vendor/nginx-1.11.6/src/http/modules/ngx_http_map_module.c 2016-12-27 22:25:26 +0900 (732aa5d) +++ vendor/nginx-1.11.8/src/http/modules/ngx_http_map_module.c 2016-12-27 23:47:36 +0900 (2fc9be9) @@ -26,7 +26,8 @@ typedef struct { ngx_http_variable_value_t *default_value; ngx_conf_t *cf; - ngx_uint_t hostnames; /* unsigned hostnames:1 */ + unsigned hostnames:1; + unsigned no_cacheable:1; } ngx_http_map_conf_ctx_t; @@ -265,6 +266,7 @@ ngx_http_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ctx.default_value = NULL; ctx.cf = &save; ctx.hostnames = 0; + ctx.no_cacheable = 0; save = *cf; cf->pool = pool; @@ -281,6 +283,10 @@ ngx_http_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) return rv; } + if (ctx.no_cacheable) { + var->flags |= NGX_HTTP_VAR_NOCACHEABLE; + } + map->default_value = ctx.default_value ? ctx.default_value: &ngx_http_variable_null_value; @@ -393,8 +399,16 @@ ngx_http_map(ngx_conf_t *cf, ngx_command_t *dummy, void *conf) { ctx->hostnames = 1; return NGX_CONF_OK; + } + + if (cf->args->nelts == 1 + && ngx_strcmp(value[0].data, "volatile") == 0) + { + ctx->no_cacheable = 1; + return NGX_CONF_OK; + } - } else if (cf->args->nelts != 2) { + if (cf->args->nelts != 2) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "invalid number of the map parameters"); return NGX_CONF_ERROR; Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_memcached_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_mp4_module.c (+3 -1) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/modules/ngx_http_mp4_module.c 2016-12-27 22:25:26 +0900 (8f2920f) +++ vendor/nginx-1.11.8/src/http/modules/ngx_http_mp4_module.c 2016-12-27 23:47:36 +0900 (f3c0fdd) @@ -1229,7 +1229,9 @@ ngx_http_mp4_update_mdat_atom(ngx_http_mp4_file_t *mp4, off_t start_offset, atom_header = mp4->mdat_atom_header; - if ((uint64_t) atom_data_size > (uint64_t) 0xffffffff) { + if ((uint64_t) atom_data_size + > (uint64_t) 0xffffffff - sizeof(ngx_mp4_atom_header_t)) + { atom_size = 1; atom_header_size = sizeof(ngx_mp4_atom_header64_t); ngx_mp4_set_64value(atom_header + sizeof(ngx_mp4_atom_header_t), Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_not_modified_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_proxy_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_random_index_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_range_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_realip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_referer_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_rewrite_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_scgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_secure_link_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_slice_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_split_clients_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_ssi_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_ssi_filter_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.c (+15 -0) 97% =================================================================== --- vendor/nginx-1.11.6/src/http/modules/ngx_http_ssl_module.c 2016-12-27 22:25:26 +0900 (e75f5d8) +++ vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.c 2016-12-27 23:47:36 +0900 (2771ac1) @@ -276,6 +276,12 @@ static ngx_http_variable_t ngx_http_ssl_vars[] = { { ngx_string("ssl_cipher"), NULL, ngx_http_ssl_static_variable, (uintptr_t) ngx_ssl_get_cipher_name, NGX_HTTP_VAR_CHANGEABLE, 0 }, + { ngx_string("ssl_ciphers"), NULL, ngx_http_ssl_variable, + (uintptr_t) ngx_ssl_get_ciphers, NGX_HTTP_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_curves"), NULL, ngx_http_ssl_variable, + (uintptr_t) ngx_ssl_get_curves, NGX_HTTP_VAR_CHANGEABLE, 0 }, + { ngx_string("ssl_session_id"), NULL, ngx_http_ssl_variable, (uintptr_t) ngx_ssl_get_session_id, NGX_HTTP_VAR_CHANGEABLE, 0 }, @@ -313,6 +319,15 @@ static ngx_http_variable_t ngx_http_ssl_vars[] = { { ngx_string("ssl_client_verify"), NULL, ngx_http_ssl_variable, (uintptr_t) ngx_ssl_get_client_verify, NGX_HTTP_VAR_CHANGEABLE, 0 }, + { ngx_string("ssl_client_v_start"), NULL, ngx_http_ssl_variable, + (uintptr_t) ngx_ssl_get_client_v_start, NGX_HTTP_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_v_end"), NULL, ngx_http_ssl_variable, + (uintptr_t) ngx_ssl_get_client_v_end, NGX_HTTP_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_v_remain"), NULL, ngx_http_ssl_variable, + (uintptr_t) ngx_ssl_get_client_v_remain, NGX_HTTP_VAR_CHANGEABLE, 0 }, + { ngx_null_string, NULL, NULL, 0, 0, 0 } }; Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_static_module.c (+3 -6) 97% =================================================================== --- vendor/nginx-1.11.6/src/http/modules/ngx_http_static_module.c 2016-12-27 22:25:26 +0900 (f79c4ae) +++ vendor/nginx-1.11.8/src/http/modules/ngx_http_static_module.c 2016-12-27 23:47:36 +0900 (07b9580) @@ -150,7 +150,7 @@ ngx_http_static_handler(ngx_http_request_t *r) ngx_http_clear_location(r); - r->headers_out.location = ngx_palloc(r->pool, sizeof(ngx_table_elt_t)); + r->headers_out.location = ngx_list_push(&r->headers_out.headers); if (r->headers_out.location == NULL) { return NGX_HTTP_INTERNAL_SERVER_ERROR; } @@ -182,11 +182,8 @@ ngx_http_static_handler(ngx_http_request_t *r) } } - /* - * we do not need to set the r->headers_out.location->hash and - * r->headers_out.location->key fields - */ - + r->headers_out.location->hash = 1; + ngx_str_set(&r->headers_out.location->key, "Location"); r->headers_out.location->value.len = len; r->headers_out.location->value.data = location; Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_stub_status_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_sub_filter_module.c (+2 -2) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/modules/ngx_http_sub_filter_module.c 2016-12-27 22:25:26 +0900 (e8d1d80) +++ vendor/nginx-1.11.8/src/http/modules/ngx_http_sub_filter_module.c 2016-12-27 23:47:36 +0900 (de58c6f) @@ -645,7 +645,7 @@ ngx_http_sub_parse(ngx_http_request_t *r, ngx_http_sub_ctx_t *ctx, start = offset - (ngx_int_t) tables->min_match_len + 1; - i = ngx_max(tables->index[c], ctx->index); + i = ngx_max((ngx_uint_t) tables->index[c], ctx->index); j = tables->index[c + 1]; while (i != j) { @@ -978,7 +978,7 @@ ngx_http_sub_init_tables(ngx_http_sub_tables_t *tables, } c = match[i].match.data[tables->min_match_len - 1]; - while (ch <= c) { + while (ch <= (ngx_uint_t) c) { tables->index[ch++] = (u_char) i; } } Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_hash_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_ip_hash_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_keepalive_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_least_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_zone_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_userid_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_uwsgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_xslt_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/perl/Makefile.PL (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/perl/nginx.pm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/perl/nginx.xs (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.c (+8 -0) 98% =================================================================== --- vendor/nginx-1.11.6/src/http/modules/perl/ngx_http_perl_module.c 2016-12-27 22:25:26 +0900 (f9a9a84) +++ vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.c 2016-12-27 23:47:36 +0900 (2796319) @@ -207,6 +207,7 @@ ngx_http_perl_handle_request(ngx_http_request_t *r) dTHXa(pmcf->perl); PERL_SET_CONTEXT(pmcf->perl); + PERL_SET_INTERP(pmcf->perl); if (ctx->next == NULL) { plcf = ngx_http_get_module_loc_conf(r, ngx_http_perl_module); @@ -322,6 +323,7 @@ ngx_http_perl_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v, dTHXa(pmcf->perl); PERL_SET_CONTEXT(pmcf->perl); + PERL_SET_INTERP(pmcf->perl); rc = ngx_http_perl_call_handler(aTHX_ r, pmcf->nginx, pv->sub, NULL, &pv->handler, &value); @@ -387,6 +389,7 @@ ngx_http_perl_ssi(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ssi_ctx, dTHXa(pmcf->perl); PERL_SET_CONTEXT(pmcf->perl); + PERL_SET_INTERP(pmcf->perl); #if 0 @@ -568,6 +571,7 @@ ngx_http_perl_create_interpreter(ngx_conf_t *cf, dTHXa(perl); PERL_SET_CONTEXT(perl); + PERL_SET_INTERP(perl); perl_construct(perl); @@ -828,6 +832,7 @@ ngx_http_perl_cleanup_perl(void *data) PerlInterpreter *perl = data; PERL_SET_CONTEXT(perl); + PERL_SET_INTERP(perl); (void) perl_destruct(perl); @@ -936,6 +941,7 @@ ngx_http_perl(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) dTHXa(pmcf->perl); PERL_SET_CONTEXT(pmcf->perl); + PERL_SET_INTERP(pmcf->perl); ngx_http_perl_eval_anon_sub(aTHX_ &value[1], &plcf->sub); @@ -1007,6 +1013,7 @@ ngx_http_perl_set(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) dTHXa(pmcf->perl); PERL_SET_CONTEXT(pmcf->perl); + PERL_SET_INTERP(pmcf->perl); ngx_http_perl_eval_anon_sub(aTHX_ &value[2], &pv->sub); @@ -1039,6 +1046,7 @@ ngx_http_perl_init_worker(ngx_cycle_t *cycle) if (pmcf) { dTHXa(pmcf->perl); PERL_SET_CONTEXT(pmcf->perl); + PERL_SET_INTERP(pmcf->perl); /* set worker's $$ */ Renamed: vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/modules/perl/typemap (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http.c (+4 -1) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/ngx_http.c 2016-12-27 22:25:26 +0900 (ba559f2) +++ vendor/nginx-1.11.8/src/http/ngx_http.c 2016-12-27 23:47:36 +0900 (c036389) @@ -457,7 +457,10 @@ ngx_http_init_phase_handlers(ngx_conf_t *cf, ngx_http_core_main_conf_t *cmcf) use_rewrite = cmcf->phases[NGX_HTTP_REWRITE_PHASE].handlers.nelts ? 1 : 0; use_access = cmcf->phases[NGX_HTTP_ACCESS_PHASE].handlers.nelts ? 1 : 0; - n = use_rewrite + use_access + cmcf->try_files + 1 /* find config phase */; + n = 1 /* find config phase */ + + use_rewrite /* post rewrite phase */ + + use_access /* post access phase */ + + cmcf->try_files; for (i = 0; i < NGX_HTTP_LOG_PHASE; i++) { n += cmcf->phases[i].handlers.nelts; Renamed: vendor/nginx-1.11.8/src/http/ngx_http.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_cache.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_copy_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_core_module.c (+12 -4) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/ngx_http_core_module.c 2016-12-27 22:25:26 +0900 (4e37cec) +++ vendor/nginx-1.11.8/src/http/ngx_http_core_module.c 2016-12-27 23:47:36 +0900 (666d96f) @@ -542,6 +542,13 @@ static ngx_command_t ngx_http_core_commands[] = { offsetof(ngx_http_core_loc_conf_t, reset_timedout_connection), NULL }, + { ngx_string("absolute_redirect"), + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, + ngx_conf_set_flag_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_core_loc_conf_t, absolute_redirect), + NULL }, + { ngx_string("server_name_in_redirect"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, ngx_conf_set_flag_slot, @@ -976,10 +983,8 @@ ngx_http_core_find_config_phase(ngx_http_request_t *r, return NGX_OK; } - /* - * we do not need to set the r->headers_out.location->hash and - * r->headers_out.location->key fields - */ + r->headers_out.location->hash = 1; + ngx_str_set(&r->headers_out.location->key, "Location"); if (r->args.len == 0) { r->headers_out.location->value = clcf->name; @@ -3563,6 +3568,7 @@ ngx_http_core_create_loc_conf(ngx_conf_t *cf) clcf->lingering_timeout = NGX_CONF_UNSET_MSEC; clcf->resolver_timeout = NGX_CONF_UNSET_MSEC; clcf->reset_timedout_connection = NGX_CONF_UNSET; + clcf->absolute_redirect = NGX_CONF_UNSET; clcf->server_name_in_redirect = NGX_CONF_UNSET; clcf->port_in_redirect = NGX_CONF_UNSET; clcf->msie_padding = NGX_CONF_UNSET; @@ -3825,6 +3831,8 @@ ngx_http_core_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) ngx_conf_merge_value(conf->reset_timedout_connection, prev->reset_timedout_connection, 0); + ngx_conf_merge_value(conf->absolute_redirect, + prev->absolute_redirect, 1); ngx_conf_merge_value(conf->server_name_in_redirect, prev->server_name_in_redirect, 0); ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1); Renamed: vendor/nginx-1.11.8/src/http/ngx_http_core_module.h (+1 -0) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/ngx_http_core_module.h 2016-12-27 22:25:26 +0900 (ade9abb) +++ vendor/nginx-1.11.8/src/http/ngx_http_core_module.h 2016-12-27 23:47:36 +0900 (237cc5c) @@ -385,6 +385,7 @@ struct ngx_http_core_loc_conf_s { ngx_flag_t tcp_nopush; /* tcp_nopush */ ngx_flag_t tcp_nodelay; /* tcp_nodelay */ ngx_flag_t reset_timedout_connection; /* reset_timedout_connection */ + ngx_flag_t absolute_redirect; /* absolute_redirect */ ngx_flag_t server_name_in_redirect; /* server_name_in_redirect */ ngx_flag_t port_in_redirect; /* port_in_redirect */ ngx_flag_t msie_padding; /* msie_padding */ Renamed: vendor/nginx-1.11.8/src/http/ngx_http_file_cache.c (+3 -3) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/ngx_http_file_cache.c 2016-12-27 22:25:26 +0900 (3c8ad7d) +++ vendor/nginx-1.11.8/src/http/ngx_http_file_cache.c 2016-12-27 23:47:36 +0900 (a5a9300) @@ -553,7 +553,7 @@ ngx_http_file_cache_read(ngx_http_request_t *r, ngx_http_cache_t *c) return NGX_DECLINED; } - if (h->crc32 != c->crc32 || h->header_start != c->header_start) { + if (h->crc32 != c->crc32 || (size_t) h->header_start != c->header_start) { ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0, "cache file \"%s\" has md5 collision", c->file.name.data); return NGX_DECLINED; @@ -1495,8 +1495,8 @@ ngx_http_file_cache_update_header(ngx_http_request_t *r) if (h.version != NGX_HTTP_CACHE_VERSION || h.last_modified != c->last_modified || h.crc32 != c->crc32 - || h.header_start != c->header_start - || h.body_start != c->body_start) + || (size_t) h.header_start != c->header_start + || (size_t) h.body_start != c->body_start) { ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "http file cache \"%s\" content changed", Renamed: vendor/nginx-1.11.8/src/http/ngx_http_header_filter_module.c (+2 -1) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/ngx_http_header_filter_module.c 2016-12-27 22:25:26 +0900 (f000b2e) +++ vendor/nginx-1.11.8/src/http/ngx_http_header_filter_module.c 2016-12-27 23:47:36 +0900 (88c8a61) @@ -309,7 +309,8 @@ ngx_http_header_filter(ngx_http_request_t *r) if (r->headers_out.location && r->headers_out.location->value.len - && r->headers_out.location->value.data[0] == '/') + && r->headers_out.location->value.data[0] == '/' + && clcf->absolute_redirect) { r->headers_out.location->hash = 0; Renamed: vendor/nginx-1.11.8/src/http/ngx_http_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_postpone_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_request.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_request.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_request_body.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_script.c (+2 -2) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/ngx_http_script.c 2016-12-27 22:25:26 +0900 (c2b1658) +++ vendor/nginx-1.11.8/src/http/ngx_http_script.c 2016-12-27 23:47:36 +0900 (c1a0b4c) @@ -356,11 +356,11 @@ ngx_http_script_compile(ngx_http_script_compile_t *sc) n = sc->source->data[i] - '0'; - if (sc->captures_mask & (1 << n)) { + if (sc->captures_mask & ((ngx_uint_t) 1 << n)) { sc->dup_capture = 1; } - sc->captures_mask |= 1 << n; + sc->captures_mask |= (ngx_uint_t) 1 << n; if (ngx_http_script_add_capture_code(sc, n) != NGX_OK) { return NGX_ERROR; Renamed: vendor/nginx-1.11.8/src/http/ngx_http_script.h (+11 -11) 93% =================================================================== --- vendor/nginx-1.11.6/src/http/ngx_http_script.h 2016-12-27 22:25:26 +0900 (46592ab) +++ vendor/nginx-1.11.8/src/http/ngx_http_script.h 2016-12-27 23:47:36 +0900 (a5116d7) @@ -121,16 +121,16 @@ typedef struct { uintptr_t status; uintptr_t next; - uintptr_t test:1; - uintptr_t negative_test:1; - uintptr_t uri:1; - uintptr_t args:1; + unsigned test:1; + unsigned negative_test:1; + unsigned uri:1; + unsigned args:1; /* add the r->args to the new arguments */ - uintptr_t add_args:1; + unsigned add_args:1; - uintptr_t redirect:1; - uintptr_t break_cycle:1; + unsigned redirect:1; + unsigned break_cycle:1; ngx_str_t name; } ngx_http_script_regex_code_t; @@ -139,13 +139,13 @@ typedef struct { typedef struct { ngx_http_script_code_pt code; - uintptr_t uri:1; - uintptr_t args:1; + unsigned uri:1; + unsigned args:1; /* add the r->args to the new arguments */ - uintptr_t add_args:1; + unsigned add_args:1; - uintptr_t redirect:1; + unsigned redirect:1; } ngx_http_script_regex_end_code_t; #endif Renamed: vendor/nginx-1.11.8/src/http/ngx_http_special_response.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_upstream.c (+2 -2) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/ngx_http_upstream.c 2016-12-27 22:25:26 +0900 (ed25f43) +++ vendor/nginx-1.11.8/src/http/ngx_http_upstream.c 2016-12-27 23:47:36 +0900 (d0bcd29) @@ -4927,8 +4927,8 @@ ngx_http_upstream_rewrite_location(ngx_http_request_t *r, ngx_table_elt_t *h, } /* - * we do not set r->headers_out.location here to avoid the handling - * the local redirects without a host name by ngx_http_header_filter() + * we do not set r->headers_out.location here to avoid handling + * relative redirects in ngx_http_header_filter() */ return NGX_OK; Renamed: vendor/nginx-1.11.8/src/http/ngx_http_upstream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_upstream_round_robin.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_upstream_round_robin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_variables.c (+30 -6) 98% =================================================================== --- vendor/nginx-1.11.6/src/http/ngx_http_variables.c 2016-12-27 22:25:26 +0900 (7e65b2e) +++ vendor/nginx-1.11.8/src/http/ngx_http_variables.c 2016-12-27 23:47:36 +0900 (62006ba) @@ -366,6 +366,9 @@ ngx_http_variable_value_t ngx_http_variable_true_value = ngx_http_variable("1"); +static ngx_uint_t ngx_http_variable_depth = 100; + + ngx_http_variable_t * ngx_http_add_variable(ngx_conf_t *cf, ngx_str_t *name, ngx_uint_t flags) { @@ -517,9 +520,20 @@ ngx_http_get_indexed_variable(ngx_http_request_t *r, ngx_uint_t index) v = cmcf->variables.elts; + if (ngx_http_variable_depth == 0) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, + "cycle while evaluating variable \"%V\"", + &v[index].name); + return NULL; + } + + ngx_http_variable_depth--; + if (v[index].get_handler(r, &r->variables[index], v[index].data) == NGX_OK) { + ngx_http_variable_depth++; + if (v[index].flags & NGX_HTTP_VAR_NOCACHEABLE) { r->variables[index].no_cacheable = 1; } @@ -527,6 +541,8 @@ ngx_http_get_indexed_variable(ngx_http_request_t *r, ngx_uint_t index) return &r->variables[index]; } + ngx_http_variable_depth++; + r->variables[index].valid = 0; r->variables[index].not_found = 1; @@ -568,17 +584,25 @@ ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key) if (v) { if (v->flags & NGX_HTTP_VAR_INDEXED) { return ngx_http_get_flushed_variable(r, v->index); + } - } else { + if (ngx_http_variable_depth == 0) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, + "cycle while evaluating variable \"%V\"", name); + return NULL; + } - vv = ngx_palloc(r->pool, sizeof(ngx_http_variable_value_t)); + ngx_http_variable_depth--; - if (vv && v->get_handler(r, vv, v->data) == NGX_OK) { - return vv; - } + vv = ngx_palloc(r->pool, sizeof(ngx_http_variable_value_t)); - return NULL; + if (vv && v->get_handler(r, vv, v->data) == NGX_OK) { + ngx_http_variable_depth++; + return vv; } + + ngx_http_variable_depth++; + return NULL; } vv = ngx_palloc(r->pool, sizeof(ngx_http_variable_value_t)); Renamed: vendor/nginx-1.11.8/src/http/ngx_http_variables.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/ngx_http_write_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.c (+7 -25) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/v2/ngx_http_v2.c 2016-12-27 22:25:26 +0900 (8301630) +++ vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.c 2016-12-27 23:47:36 +0900 (f3050f1) @@ -286,7 +286,6 @@ ngx_http_v2_init(ngx_event_t *rev) : ngx_http_v2_state_preface; ngx_queue_init(&h2c->waiting); - ngx_queue_init(&h2c->posted); ngx_queue_init(&h2c->dependencies); ngx_queue_init(&h2c->closed); @@ -420,9 +419,7 @@ static void ngx_http_v2_write_handler(ngx_event_t *wev) { ngx_int_t rc; - ngx_queue_t *q; ngx_connection_t *c; - ngx_http_v2_stream_t *stream; ngx_http_v2_connection_t *h2c; c = wev->data; @@ -457,26 +454,6 @@ ngx_http_v2_write_handler(ngx_event_t *wev) return; } - while (!ngx_queue_empty(&h2c->posted)) { - q = ngx_queue_head(&h2c->posted); - - ngx_queue_remove(q); - - stream = ngx_queue_data(q, ngx_http_v2_stream_t, queue); - - stream->handled = 0; - - ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, - "run http2 stream %ui", stream->node->id); - - wev = stream->request->connection->write; - - wev->active = 0; - wev->ready = 1; - - wev->handler(wev); - } - h2c->blocked = 0; if (rc == NGX_AGAIN) { @@ -2254,7 +2231,7 @@ ngx_http_v2_state_window_update(ngx_http_v2_connection_t *h2c, u_char *pos, stream = ngx_queue_data(q, ngx_http_v2_stream_t, queue); - stream->handled = 0; + stream->waiting = 0; wev = stream->request->connection->write; @@ -3575,6 +3552,11 @@ ngx_http_v2_read_request_body(ngx_http_request_t *r, rb->buf = ngx_create_temp_buf(r->pool, (size_t) len); } else { + if (stream->preread) { + /* enforce writing preread buffer to file */ + r->request_body_in_file_only = 1; + } + rb->buf = ngx_calloc_buf(r->pool); if (rb->buf != NULL) { @@ -4271,7 +4253,7 @@ ngx_http_v2_finalize_connection(ngx_http_v2_connection_t *h2c, continue; } - stream->handled = 0; + stream->waiting = 0; r = stream->request; fc = r->connection; Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.h (+1 -2) 99% =================================================================== --- vendor/nginx-1.11.6/src/http/v2/ngx_http_v2.h 2016-12-27 22:25:26 +0900 (63bbdad) +++ vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.h 2016-12-27 23:47:36 +0900 (cddfccd) @@ -137,7 +137,6 @@ struct ngx_http_v2_connection_s { ngx_http_v2_out_frame_t *last_out; - ngx_queue_t posted; ngx_queue_t dependencies; ngx_queue_t closed; @@ -192,7 +191,7 @@ struct ngx_http_v2_stream_s { ngx_pool_t *pool; - unsigned handled:1; + unsigned waiting:1; unsigned blocked:1; unsigned exhausted:1; unsigned in_closed:1; Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_filter_module.c (+42 -12) 97% =================================================================== --- vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_filter_module.c 2016-12-27 22:25:26 +0900 (878020e) +++ vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_filter_module.c 2016-12-27 23:47:36 +0900 (f2f0d1e) @@ -263,7 +263,9 @@ ngx_http_v2_header_filter(ngx_http_request_t *r) if (r->headers_out.location && r->headers_out.location->value.len) { - if (r->headers_out.location->value.data[0] == '/') { + if (r->headers_out.location->value.data[0] == '/' + && clcf->absolute_redirect) + { if (clcf->server_name_in_redirect) { cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module); host = cscf->server_name; @@ -1104,11 +1106,11 @@ ngx_http_v2_waiting_queue(ngx_http_v2_connection_t *h2c, ngx_queue_t *q; ngx_http_v2_stream_t *s; - if (stream->handled) { + if (stream->waiting) { return; } - stream->handled = 1; + stream->waiting = 1; for (q = ngx_queue_last(&h2c->waiting); q != ngx_queue_sentinel(&h2c->waiting); @@ -1298,20 +1300,29 @@ static ngx_inline void ngx_http_v2_handle_stream(ngx_http_v2_connection_t *h2c, ngx_http_v2_stream_t *stream) { + ngx_event_t *wev; ngx_connection_t *fc; - if (stream->handled || stream->blocked) { + if (stream->waiting || stream->blocked) { return; } fc = stream->request->connection; - if (!fc->error && (stream->exhausted || fc->write->delayed)) { + if (!fc->error && stream->exhausted) { + return; + } + + wev = fc->write; + + wev->active = 0; + wev->ready = 1; + + if (!fc->error && wev->delayed) { return; } - stream->handled = 1; - ngx_queue_insert_tail(&h2c->posted, &stream->queue); + ngx_post_event(wev, &ngx_posted_events); } @@ -1321,11 +1332,13 @@ ngx_http_v2_filter_cleanup(void *data) ngx_http_v2_stream_t *stream = data; size_t window; + ngx_event_t *wev; + ngx_queue_t *q; ngx_http_v2_out_frame_t *frame, **fn; ngx_http_v2_connection_t *h2c; - if (stream->handled) { - stream->handled = 0; + if (stream->waiting) { + stream->waiting = 0; ngx_queue_remove(&stream->queue); } @@ -1359,9 +1372,26 @@ ngx_http_v2_filter_cleanup(void *data) fn = &frame->next; } - if (h2c->send_window == 0 && window && !ngx_queue_empty(&h2c->waiting)) { - ngx_queue_add(&h2c->posted, &h2c->waiting); - ngx_queue_init(&h2c->waiting); + if (h2c->send_window == 0 && window) { + + while (!ngx_queue_empty(&h2c->waiting)) { + q = ngx_queue_head(&h2c->waiting); + + ngx_queue_remove(q); + + stream = ngx_queue_data(q, ngx_http_v2_stream_t, queue); + + stream->waiting = 0; + + wev = stream->request->connection->write; + + wev->active = 0; + wev->ready = 1; + + if (!wev->delayed) { + ngx_post_event(wev, &ngx_posted_events); + } + } } h2c->send_window += window; Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_huff_decode.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_huff_encode.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_table.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_auth_http_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_core_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_imap_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_imap_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_imap_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_proxy_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.c (+1 -1) 99% =================================================================== --- vendor/nginx-1.11.6/src/mail/ngx_mail_smtp_module.c 2016-12-27 22:25:26 +0900 (f03bd90) +++ vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.c 2016-12-27 23:47:36 +0900 (3b5a2d8) @@ -280,7 +280,7 @@ ngx_mail_smtp_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) p = ngx_cpymem(p, conf->capability.data, conf->capability.len); - p = ngx_cpymem(p, "250 STARTTLS" CRLF, sizeof("250 STARTTLS" CRLF) - 1); + ngx_memcpy(p, "250 STARTTLS" CRLF, sizeof("250 STARTTLS" CRLF) - 1); p = conf->starttls_capability.data + (last - conf->capability.data) + 3; Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_ssl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_ssl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/misc/ngx_cpp_test_module.cpp (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/misc/ngx_google_perftools_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_alloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_alloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_atomic.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_channel.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_channel.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_daemon.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_darwin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_darwin_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_darwin_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_darwin_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_dlopen.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_dlopen.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_errno.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_errno.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_file_aio_read.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_files.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_files.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_freebsd.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_amd64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_ppc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_sparc64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_x86.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux_aio_read.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_os.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_posix_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_posix_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_process.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_process.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_process_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_process_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_readv_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_recv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_send.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_setaffinity.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_setaffinity.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_setproctitle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_setproctitle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_shmem.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_shmem.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_socket.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_socket.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_solaris.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_solaris_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_solaris_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_solaris_sendfilev_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_amd64.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_atomic_sparc64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_sparc64.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_x86.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_thread.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_thread_cond.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_thread_id.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_thread_mutex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_udp_recv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_udp_send.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_udp_sendmsg_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_user.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_user.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_writev_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/nginx.ico (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/nginx.rc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/nginx_icon16.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/nginx_icon32.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/nginx_icon48.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_alloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_alloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_atomic.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_dlopen.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_dlopen.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_errno.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_errno.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_event_log.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_files.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_files.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_os.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_process.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_process.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_process_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_process_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_service.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_shmem.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_shmem.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_socket.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_socket.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_stat.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_thread.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_thread.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_udp_wsarecv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_user.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_user.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_win32_config.h (+20 -3) 92% =================================================================== --- vendor/nginx-1.11.6/src/os/win32/ngx_win32_config.h 2016-12-27 22:25:26 +0900 (f5b5950) +++ vendor/nginx-1.11.8/src/os/win32/ngx_win32_config.h 2016-12-27 23:47:36 +0900 (4824d05) @@ -51,13 +51,14 @@ /* GCC MinGW's stdio.h includes sys/types.h */ #define _OFF_T_ +#define __have_typedef_off_t #endif #include <stdio.h> #include <stdlib.h> #include <stdarg.h> -#ifdef __MINGW64_VERSION_MAJOR +#ifdef __GNUC__ #include <stdint.h> #endif #include <ctype.h> @@ -87,12 +88,21 @@ typedef long time_t; /* 'type cast': from data pointer to function pointer */ #pragma warning(disable:4055) +/* 'function' : different 'const' qualifiers */ +#pragma warning(disable:4090) + /* unreferenced formal parameter */ #pragma warning(disable:4100) /* FD_SET() and FD_CLR(): conditional expression is constant */ #pragma warning(disable:4127) +/* conversion from 'type1' to 'type2', possible loss of data */ +#pragma warning(disable:4244) + +/* conversion from 'size_t' to 'type', possible loss of data */ +#pragma warning(disable:4267) + /* array is too small to include a terminating null character */ #pragma warning(disable:4295) @@ -118,6 +128,9 @@ typedef long time_t; /* unreferenced formal parameter */ #pragma warn -8057 +/* suspicious pointer arithmetic */ +#pragma warn -8072 + #endif @@ -151,7 +164,7 @@ typedef unsigned short int uint16_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; -#if !defined(__WATCOMC__) && !defined(__MINGW64_VERSION_MAJOR) +#if __BORLANDC__ typedef int intptr_t; typedef u_int uintptr_t; #endif @@ -184,9 +197,13 @@ typedef unsigned int ino_t; #endif -#ifndef __MINGW64_VERSION_MAJOR +#ifndef __GNUC__ +#ifdef _WIN64 +typedef __int64 ssize_t; +#else typedef int ssize_t; #endif +#endif typedef uint32_t in_addr_t; Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_win32_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_wsarecv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_wsarecv_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_wsasend.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_wsasend_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_access_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_core_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_geo_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_geoip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_limit_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_log_module.c (+77 -6) 95% =================================================================== --- vendor/nginx-1.11.6/src/stream/ngx_stream_log_module.c 2016-12-27 22:25:26 +0900 (26e6d22) +++ vendor/nginx-1.11.8/src/stream/ngx_stream_log_module.c 2016-12-27 23:47:36 +0900 (a4b67d0) @@ -106,12 +106,16 @@ static void ngx_stream_log_flush(ngx_open_file_t *file, ngx_log_t *log); static void ngx_stream_log_flush_handler(ngx_event_t *ev); static ngx_int_t ngx_stream_log_variable_compile(ngx_conf_t *cf, - ngx_stream_log_op_t *op, ngx_str_t *value); + ngx_stream_log_op_t *op, ngx_str_t *value, ngx_uint_t json); static size_t ngx_stream_log_variable_getlen(ngx_stream_session_t *s, uintptr_t data); static u_char *ngx_stream_log_variable(ngx_stream_session_t *s, u_char *buf, ngx_stream_log_op_t *op); static uintptr_t ngx_stream_log_escape(u_char *dst, u_char *src, size_t size); +static size_t ngx_stream_log_json_variable_getlen(ngx_stream_session_t *s, + uintptr_t data); +static u_char *ngx_stream_log_json_variable(ngx_stream_session_t *s, + u_char *buf, ngx_stream_log_op_t *op); static void *ngx_stream_log_create_main_conf(ngx_conf_t *cf); @@ -686,7 +690,7 @@ ngx_stream_log_copy_long(ngx_stream_session_t *s, u_char *buf, static ngx_int_t ngx_stream_log_variable_compile(ngx_conf_t *cf, ngx_stream_log_op_t *op, - ngx_str_t *value) + ngx_str_t *value, ngx_uint_t json) { ngx_int_t index; @@ -696,8 +700,16 @@ ngx_stream_log_variable_compile(ngx_conf_t *cf, ngx_stream_log_op_t *op, } op->len = 0; - op->getlen = ngx_stream_log_variable_getlen; - op->run = ngx_stream_log_variable; + + if (json) { + op->getlen = ngx_stream_log_json_variable_getlen; + op->run = ngx_stream_log_json_variable; + + } else { + op->getlen = ngx_stream_log_variable_getlen; + op->run = ngx_stream_log_variable; + } + op->data = index; return NGX_OK; @@ -806,6 +818,47 @@ ngx_stream_log_escape(u_char *dst, u_char *src, size_t size) } +static size_t +ngx_stream_log_json_variable_getlen(ngx_stream_session_t *s, uintptr_t data) +{ + uintptr_t len; + ngx_stream_variable_value_t *value; + + value = ngx_stream_get_indexed_variable(s, data); + + if (value == NULL || value->not_found) { + return 0; + } + + len = ngx_escape_json(NULL, value->data, value->len); + + value->escape = len ? 1 : 0; + + return value->len + len; +} + + +static u_char * +ngx_stream_log_json_variable(ngx_stream_session_t *s, u_char *buf, + ngx_stream_log_op_t *op) +{ + ngx_stream_variable_value_t *value; + + value = ngx_stream_get_indexed_variable(s, op->data); + + if (value == NULL || value->not_found) { + return buf; + } + + if (value->escape == 0) { + return ngx_cpymem(buf, value->data, value->len); + + } else { + return (u_char *) ngx_escape_json(buf, value->data, value->len); + } +} + + static void * ngx_stream_log_create_main_conf(ngx_conf_t *cf) { @@ -1220,11 +1273,27 @@ ngx_stream_log_compile_format(ngx_conf_t *cf, ngx_array_t *flushes, size_t i, len; ngx_str_t *value, var; ngx_int_t *flush; - ngx_uint_t bracket; + ngx_uint_t bracket, json; ngx_stream_log_op_t *op; + json = 0; value = args->elts; + if (s < args->nelts && ngx_strncmp(value[s].data, "escape=", 7) == 0) { + data = value[s].data + 7; + + if (ngx_strcmp(data, "json") == 0) { + json = 1; + + } else if (ngx_strcmp(data, "default") != 0) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "unknown log format escaping \"%s\"", data); + return NGX_CONF_ERROR; + } + + s++; + } + for ( /* void */ ; s < args->nelts; s++) { i = 0; @@ -1289,7 +1358,9 @@ ngx_stream_log_compile_format(ngx_conf_t *cf, ngx_array_t *flushes, goto invalid; } - if (ngx_stream_log_variable_compile(cf, op, &var) != NGX_OK) { + if (ngx_stream_log_variable_compile(cf, op, &var, json) + != NGX_OK) + { return NGX_CONF_ERROR; } Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_map_module.c (+16 -2) 97% =================================================================== --- vendor/nginx-1.11.6/src/stream/ngx_stream_map_module.c 2016-12-27 22:25:26 +0900 (47a15be) +++ vendor/nginx-1.11.8/src/stream/ngx_stream_map_module.c 2016-12-27 23:47:36 +0900 (ef06b2d) @@ -26,7 +26,8 @@ typedef struct { ngx_stream_variable_value_t *default_value; ngx_conf_t *cf; - ngx_uint_t hostnames; /* unsigned hostnames:1 */ + unsigned hostnames:1; + unsigned no_cacheable:1; } ngx_stream_map_conf_ctx_t; @@ -264,6 +265,7 @@ ngx_stream_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ctx.default_value = NULL; ctx.cf = &save; ctx.hostnames = 0; + ctx.no_cacheable = 0; save = *cf; cf->pool = pool; @@ -280,6 +282,10 @@ ngx_stream_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) return rv; } + if (ctx.no_cacheable) { + var->flags |= NGX_STREAM_VAR_NOCACHEABLE; + } + map->default_value = ctx.default_value ? ctx.default_value: &ngx_stream_variable_null_value; @@ -392,8 +398,16 @@ ngx_stream_map(ngx_conf_t *cf, ngx_command_t *dummy, void *conf) { ctx->hostnames = 1; return NGX_CONF_OK; + } + + if (cf->args->nelts == 1 + && ngx_strcmp(value[0].data, "volatile") == 0) + { + ctx->no_cacheable = 1; + return NGX_CONF_OK; + } - } else if (cf->args->nelts != 2) { + if (cf->args->nelts != 2) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "invalid number of the map parameters"); return NGX_CONF_ERROR; Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_proxy_module.c (+5 -0) 99% =================================================================== --- vendor/nginx-1.11.6/src/stream/ngx_stream_proxy_module.c 2016-12-27 22:25:26 +0900 (c03b515) +++ vendor/nginx-1.11.8/src/stream/ngx_stream_proxy_module.c 2016-12-27 23:47:36 +0900 (bfd78d5) @@ -808,6 +808,11 @@ ngx_stream_proxy_init_upstream(ngx_stream_session_t *s) u->state->connect_time = ngx_current_msec - u->state->response_time; + if (u->peer.notify) { + u->peer.notify(&u->peer, u->peer.data, + NGX_STREAM_UPSTREAM_NOTIFY_CONNECT); + } + c->log->action = "proxying connection"; if (u->upstream_buf.start == NULL) { Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_realip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_return_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_script.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_script.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_split_clients_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.c (+157 -0) 75% =================================================================== --- vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_module.c 2016-12-27 22:25:26 +0900 (d00718b) +++ vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.c 2016-12-27 23:47:36 +0900 (fb653c5) @@ -49,6 +49,15 @@ static ngx_conf_bitmask_t ngx_stream_ssl_protocols[] = { }; +static ngx_conf_enum_t ngx_stream_ssl_verify[] = { + { ngx_string("off"), 0 }, + { ngx_string("on"), 1 }, + { ngx_string("optional"), 2 }, + { ngx_string("optional_no_ca"), 3 }, + { ngx_null_string, 0 } +}; + + static ngx_command_t ngx_stream_ssl_commands[] = { { ngx_string("ssl_handshake_timeout"), @@ -107,6 +116,34 @@ static ngx_command_t ngx_stream_ssl_commands[] = { offsetof(ngx_stream_ssl_conf_t, ciphers), NULL }, + { ngx_string("ssl_verify_client"), + NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, + ngx_conf_set_enum_slot, + NGX_STREAM_SRV_CONF_OFFSET, + offsetof(ngx_stream_ssl_conf_t, verify), + &ngx_stream_ssl_verify }, + + { ngx_string("ssl_verify_depth"), + NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, + ngx_conf_set_num_slot, + NGX_STREAM_SRV_CONF_OFFSET, + offsetof(ngx_stream_ssl_conf_t, verify_depth), + NULL }, + + { ngx_string("ssl_client_certificate"), + NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, + ngx_conf_set_str_slot, + NGX_STREAM_SRV_CONF_OFFSET, + offsetof(ngx_stream_ssl_conf_t, client_certificate), + NULL }, + + { ngx_string("ssl_trusted_certificate"), + NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, + ngx_conf_set_str_slot, + NGX_STREAM_SRV_CONF_OFFSET, + offsetof(ngx_stream_ssl_conf_t, trusted_certificate), + NULL }, + { ngx_string("ssl_prefer_server_ciphers"), NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_FLAG, ngx_conf_set_flag_slot, @@ -142,6 +179,13 @@ static ngx_command_t ngx_stream_ssl_commands[] = { offsetof(ngx_stream_ssl_conf_t, session_timeout), NULL }, + { ngx_string("ssl_crl"), + NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, + ngx_conf_set_str_slot, + NGX_STREAM_SRV_CONF_OFFSET, + offsetof(ngx_stream_ssl_conf_t, crl), + NULL }, + ngx_null_command }; @@ -182,6 +226,12 @@ static ngx_stream_variable_t ngx_stream_ssl_vars[] = { { ngx_string("ssl_cipher"), NULL, ngx_stream_ssl_static_variable, (uintptr_t) ngx_ssl_get_cipher_name, NGX_STREAM_VAR_CHANGEABLE, 0 }, + { ngx_string("ssl_ciphers"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_ciphers, NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_curves"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_curves, NGX_STREAM_VAR_CHANGEABLE, 0 }, + { ngx_string("ssl_session_id"), NULL, ngx_stream_ssl_variable, (uintptr_t) ngx_ssl_get_session_id, NGX_STREAM_VAR_CHANGEABLE, 0 }, @@ -191,6 +241,37 @@ static ngx_stream_variable_t ngx_stream_ssl_vars[] = { { ngx_string("ssl_server_name"), NULL, ngx_stream_ssl_variable, (uintptr_t) ngx_ssl_get_server_name, NGX_STREAM_VAR_CHANGEABLE, 0 }, + { ngx_string("ssl_client_cert"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_certificate, NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_raw_cert"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_raw_certificate, + NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_s_dn"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_subject_dn, NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_i_dn"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_issuer_dn, NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_serial"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_serial_number, NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_fingerprint"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_fingerprint, NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_verify"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_client_verify, NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_v_start"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_client_v_start, NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_v_end"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_client_v_end, NGX_STREAM_VAR_CHANGEABLE, 0 }, + + { ngx_string("ssl_client_v_remain"), NULL, ngx_stream_ssl_variable, + (uintptr_t) ngx_ssl_get_client_v_remain, NGX_STREAM_VAR_CHANGEABLE, 0 }, + { ngx_null_string, NULL, NULL, 0, 0, 0 } }; @@ -201,6 +282,8 @@ static ngx_str_t ngx_stream_ssl_sess_id_ctx = ngx_string("STREAM"); static ngx_int_t ngx_stream_ssl_handler(ngx_stream_session_t *s) { + long rc; + X509 *cert; ngx_connection_t *c; ngx_stream_ssl_conf_t *sslcf; @@ -221,6 +304,37 @@ ngx_stream_ssl_handler(ngx_stream_session_t *s) return ngx_stream_ssl_init_connection(&sslcf->ssl, c); } + if (sslcf->verify) { + rc = SSL_get_verify_result(c->ssl->connection); + + if (rc != X509_V_OK + && (sslcf->verify != 3 || !ngx_ssl_verify_error_optional(rc))) + { + ngx_log_error(NGX_LOG_INFO, c->log, 0, + "client SSL certificate verify error: (%l:%s)", + rc, X509_verify_cert_error_string(rc)); + + ngx_ssl_remove_cached_session(sslcf->ssl.ctx, + (SSL_get0_session(c->ssl->connection))); + return NGX_ERROR; + } + + if (sslcf->verify == 1) { + cert = SSL_get_peer_certificate(c->ssl->connection); + + if (cert == NULL) { + ngx_log_error(NGX_LOG_INFO, c->log, 0, + "client sent no required SSL certificate"); + + ngx_ssl_remove_cached_session(sslcf->ssl.ctx, + (SSL_get0_session(c->ssl->connection))); + return NGX_ERROR; + } + + X509_free(cert); + } + } + return NGX_OK; } @@ -378,6 +492,9 @@ ngx_stream_ssl_create_conf(ngx_conf_t *cf) * scf->protocols = 0; * scf->dhparam = { 0, NULL }; * scf->ecdh_curve = { 0, NULL }; + * scf->client_certificate = { 0, NULL }; + * scf->trusted_certificate = { 0, NULL }; + * scf->crl = { 0, NULL }; * scf->ciphers = { 0, NULL }; * scf->shm_zone = NULL; */ @@ -387,6 +504,8 @@ ngx_stream_ssl_create_conf(ngx_conf_t *cf) scf->certificate_keys = NGX_CONF_UNSET_PTR; scf->passwords = NGX_CONF_UNSET_PTR; scf->prefer_server_ciphers = NGX_CONF_UNSET; + scf->verify = NGX_CONF_UNSET_UINT; + scf->verify_depth = NGX_CONF_UNSET_UINT; scf->builtin_session_cache = NGX_CONF_UNSET; scf->session_timeout = NGX_CONF_UNSET; scf->session_tickets = NGX_CONF_UNSET; @@ -417,6 +536,9 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) (NGX_CONF_BITMASK_SET|NGX_SSL_TLSv1 |NGX_SSL_TLSv1_1|NGX_SSL_TLSv1_2)); + ngx_conf_merge_uint_value(conf->verify, prev->verify, 0); + ngx_conf_merge_uint_value(conf->verify_depth, prev->verify_depth, 1); + ngx_conf_merge_ptr_value(conf->certificates, prev->certificates, NULL); ngx_conf_merge_ptr_value(conf->certificate_keys, prev->certificate_keys, NULL); @@ -425,6 +547,12 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) ngx_conf_merge_str_value(conf->dhparam, prev->dhparam, ""); + ngx_conf_merge_str_value(conf->client_certificate, prev->client_certificate, + ""); + ngx_conf_merge_str_value(conf->trusted_certificate, + prev->trusted_certificate, ""); + ngx_conf_merge_str_value(conf->crl, prev->crl, ""); + ngx_conf_merge_str_value(conf->ecdh_curve, prev->ecdh_curve, NGX_DEFAULT_ECDH_CURVE); @@ -474,6 +602,35 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) return NGX_CONF_ERROR; } + if (conf->verify) { + + if (conf->client_certificate.len == 0 && conf->verify != 3) { + ngx_log_error(NGX_LOG_EMERG, cf->log, 0, + "no ssl_client_certificate for ssl_client_verify"); + return NGX_CONF_ERROR; + } + + if (ngx_ssl_client_certificate(cf, &conf->ssl, + &conf->client_certificate, + conf->verify_depth) + != NGX_OK) + { + return NGX_CONF_ERROR; + } + + if (ngx_ssl_trusted_certificate(cf, &conf->ssl, + &conf->trusted_certificate, + conf->verify_depth) + != NGX_OK) + { + return NGX_CONF_ERROR; + } + + if (ngx_ssl_crl(cf, &conf->ssl, &conf->crl) != NGX_OK) { + return NGX_CONF_ERROR; + } + } + if (ngx_ssl_dhparam(cf, &conf->ssl, &conf->dhparam) != NGX_OK) { return NGX_CONF_ERROR; } Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.h (+6 -0) 83% =================================================================== --- vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_module.h 2016-12-27 22:25:26 +0900 (9b1c41a) +++ vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.h 2016-12-27 23:47:36 +0900 (65f5d45) @@ -23,6 +23,9 @@ typedef struct { ngx_uint_t protocols; + ngx_uint_t verify; + ngx_uint_t verify_depth; + ssize_t builtin_session_cache; time_t session_timeout; @@ -32,6 +35,9 @@ typedef struct { ngx_str_t dhparam; ngx_str_t ecdh_curve; + ngx_str_t client_certificate; + ngx_str_t trusted_certificate; + ngx_str_t crl; ngx_str_t ciphers; Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_preread_module.c (+1 -1) 99% =================================================================== --- vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_preread_module.c 2016-12-27 22:25:26 +0900 (e26c518) +++ vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_preread_module.c 2016-12-27 23:47:36 +0900 (2040b4f) @@ -142,7 +142,7 @@ ngx_stream_ssl_preread_handler(ngx_stream_session_t *s) return NGX_DECLINED; } - if (p[1] != 3 || p[2] == 0) { + if (p[1] != 3) { ngx_log_debug0(NGX_LOG_DEBUG_STREAM, ctx->log, 0, "ssl preread: unsupported SSL version"); return NGX_DECLINED; Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.h (+3 -0) 98% =================================================================== --- vendor/nginx-1.11.6/src/stream/ngx_stream_upstream.h 2016-12-27 22:25:26 +0900 (ec75768) +++ vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.h 2016-12-27 23:47:36 +0900 (90076e0) @@ -24,6 +24,9 @@ #define NGX_STREAM_UPSTREAM_MAX_CONNS 0x0100 +#define NGX_STREAM_UPSTREAM_NOTIFY_CONNECT 0x1 + + typedef struct { ngx_array_t upstreams; /* ngx_stream_upstream_srv_conf_t */ Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_hash_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_least_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.c (+29 -0) 96% =================================================================== --- vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_round_robin.c 2016-12-27 22:25:26 +0900 (db620ef) +++ vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.c 2016-12-27 23:47:36 +0900 (526de3a) @@ -16,6 +16,8 @@ static ngx_stream_upstream_rr_peer_t *ngx_stream_upstream_get_peer( ngx_stream_upstream_rr_peer_data_t *rrp); +static void ngx_stream_upstream_notify_round_robin_peer( + ngx_peer_connection_t *pc, void *data, ngx_uint_t state); #if (NGX_STREAM_SSL) @@ -288,6 +290,7 @@ ngx_stream_upstream_init_round_robin_peer(ngx_stream_session_t *s, s->upstream->peer.get = ngx_stream_upstream_get_round_robin_peer; s->upstream->peer.free = ngx_stream_upstream_free_round_robin_peer; + s->upstream->peer.notify = ngx_stream_upstream_notify_round_robin_peer; s->upstream->peer.tries = ngx_stream_upstream_tries(rrp->peers); #if (NGX_STREAM_SSL) s->upstream->peer.set_session = @@ -659,6 +662,32 @@ ngx_stream_upstream_free_round_robin_peer(ngx_peer_connection_t *pc, void *data, } +static void +ngx_stream_upstream_notify_round_robin_peer(ngx_peer_connection_t *pc, + void *data, ngx_uint_t type) +{ + ngx_stream_upstream_rr_peer_data_t *rrp = data; + + ngx_stream_upstream_rr_peer_t *peer; + + peer = rrp->current; + + if (type == NGX_STREAM_UPSTREAM_NOTIFY_CONNECT + && pc->connection->type == SOCK_STREAM) + { + ngx_stream_upstream_rr_peers_rlock(rrp->peers); + ngx_stream_upstream_rr_peer_lock(rrp->peers, peer); + + if (peer->accessed < peer->checked) { + peer->fails = 0; + } + + ngx_stream_upstream_rr_peer_unlock(rrp->peers, peer); + ngx_stream_upstream_rr_peers_unlock(rrp->peers); + } +} + + #if (NGX_STREAM_SSL) static ngx_int_t Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_zone_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_variables.c (+31 -7) 96% =================================================================== --- vendor/nginx-1.11.6/src/stream/ngx_stream_variables.c 2016-12-27 22:25:26 +0900 (aa5361d) +++ vendor/nginx-1.11.8/src/stream/ngx_stream_variables.c 2016-12-27 23:47:36 +0900 (9dc93ee) @@ -119,6 +119,9 @@ ngx_stream_variable_value_t ngx_stream_variable_true_value = ngx_stream_variable("1"); +static ngx_uint_t ngx_stream_variable_depth = 100; + + ngx_stream_variable_t * ngx_stream_add_variable(ngx_conf_t *cf, ngx_str_t *name, ngx_uint_t flags) { @@ -270,9 +273,20 @@ ngx_stream_get_indexed_variable(ngx_stream_session_t *s, ngx_uint_t index) v = cmcf->variables.elts; + if (ngx_stream_variable_depth == 0) { + ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, + "cycle while evaluating variable \"%V\"", + &v[index].name); + return NULL; + } + + ngx_stream_variable_depth--; + if (v[index].get_handler(s, &s->variables[index], v[index].data) == NGX_OK) { + ngx_stream_variable_depth++; + if (v[index].flags & NGX_STREAM_VAR_NOCACHEABLE) { s->variables[index].no_cacheable = 1; } @@ -280,6 +294,8 @@ ngx_stream_get_indexed_variable(ngx_stream_session_t *s, ngx_uint_t index) return &s->variables[index]; } + ngx_stream_variable_depth++; + s->variables[index].valid = 0; s->variables[index].not_found = 1; @@ -322,18 +338,26 @@ ngx_stream_get_variable(ngx_stream_session_t *s, ngx_str_t *name, if (v) { if (v->flags & NGX_STREAM_VAR_INDEXED) { return ngx_stream_get_flushed_variable(s, v->index); + } - } else { + if (ngx_stream_variable_depth == 0) { + ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, + "cycle while evaluating variable \"%V\"", name); + return NULL; + } - vv = ngx_palloc(s->connection->pool, - sizeof(ngx_stream_variable_value_t)); + ngx_stream_variable_depth--; - if (vv && v->get_handler(s, vv, v->data) == NGX_OK) { - return vv; - } + vv = ngx_palloc(s->connection->pool, + sizeof(ngx_stream_variable_value_t)); - return NULL; + if (vv && v->get_handler(s, vv, v->data) == NGX_OK) { + ngx_stream_variable_depth++; + return vv; } + + ngx_stream_variable_depth++; + return NULL; } vv = ngx_palloc(s->connection->pool, sizeof(ngx_stream_variable_value_t)); Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_variables.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_write_filter_module.c (+0 -0) 100% ===================================================================