Kentaro Hayashi 2019-03-27 11:40:45 +0900 (Wed, 27 Mar 2019) Revision: bf4ac6b49647ab0281454337de9ee25cdc8504dd https://github.com/groonga/groonga/commit/bf4ac6b49647ab0281454337de9ee25cdc8504dd Message: nginx: update nginx % ./update_nginx.sh 1.15.10 In 1.15.10, build issue (VS2015 or later) was fixed, but this bug is introduced in 1.15.9, so upgrading 1.15.8 -> 1.15.10 is not affected. Copied files: vendor/nginx-1.15.10/src/event/modules/ngx_poll_module.c (from vendor/nginx-1.15.8/src/event/modules/ngx_poll_module.c) Modified files: nginx_version Renamed files: vendor/nginx-1.15.10/auto/cc/acc (from vendor/nginx-1.15.8/auto/cc/acc) vendor/nginx-1.15.10/auto/cc/bcc (from vendor/nginx-1.15.8/auto/cc/bcc) vendor/nginx-1.15.10/auto/cc/ccc (from vendor/nginx-1.15.8/auto/cc/ccc) vendor/nginx-1.15.10/auto/cc/clang (from vendor/nginx-1.15.8/auto/cc/clang) vendor/nginx-1.15.10/auto/cc/conf (from vendor/nginx-1.15.8/auto/cc/conf) vendor/nginx-1.15.10/auto/cc/gcc (from vendor/nginx-1.15.8/auto/cc/gcc) vendor/nginx-1.15.10/auto/cc/icc (from vendor/nginx-1.15.8/auto/cc/icc) vendor/nginx-1.15.10/auto/cc/msvc (from vendor/nginx-1.15.8/auto/cc/msvc) vendor/nginx-1.15.10/auto/cc/name (from vendor/nginx-1.15.8/auto/cc/name) vendor/nginx-1.15.10/auto/cc/owc (from vendor/nginx-1.15.8/auto/cc/owc) vendor/nginx-1.15.10/auto/cc/sunc (from vendor/nginx-1.15.8/auto/cc/sunc) vendor/nginx-1.15.10/auto/configure (from vendor/nginx-1.15.8/auto/configure) vendor/nginx-1.15.10/auto/define (from vendor/nginx-1.15.8/auto/define) vendor/nginx-1.15.10/auto/endianness (from vendor/nginx-1.15.8/auto/endianness) vendor/nginx-1.15.10/auto/feature (from vendor/nginx-1.15.8/auto/feature) vendor/nginx-1.15.10/auto/have (from vendor/nginx-1.15.8/auto/have) vendor/nginx-1.15.10/auto/have_headers (from vendor/nginx-1.15.8/auto/have_headers) vendor/nginx-1.15.10/auto/headers (from vendor/nginx-1.15.8/auto/headers) vendor/nginx-1.15.10/auto/include (from vendor/nginx-1.15.8/auto/include) vendor/nginx-1.15.10/auto/init (from vendor/nginx-1.15.8/auto/init) vendor/nginx-1.15.10/auto/install (from vendor/nginx-1.15.8/auto/install) vendor/nginx-1.15.10/auto/lib/conf (from vendor/nginx-1.15.8/auto/lib/conf) vendor/nginx-1.15.10/auto/lib/geoip/conf (from vendor/nginx-1.15.8/auto/lib/geoip/conf) vendor/nginx-1.15.10/auto/lib/google-perftools/conf (from vendor/nginx-1.15.8/auto/lib/google-perftools/conf) vendor/nginx-1.15.10/auto/lib/libatomic/conf (from vendor/nginx-1.15.8/auto/lib/libatomic/conf) vendor/nginx-1.15.10/auto/lib/libatomic/make (from vendor/nginx-1.15.8/auto/lib/libatomic/make) vendor/nginx-1.15.10/auto/lib/libgd/conf (from vendor/nginx-1.15.8/auto/lib/libgd/conf) vendor/nginx-1.15.10/auto/lib/libxslt/conf (from vendor/nginx-1.15.8/auto/lib/libxslt/conf) vendor/nginx-1.15.10/auto/lib/make (from vendor/nginx-1.15.8/auto/lib/make) vendor/nginx-1.15.10/auto/lib/openssl/conf (from vendor/nginx-1.15.8/auto/lib/openssl/conf) vendor/nginx-1.15.10/auto/lib/openssl/make (from vendor/nginx-1.15.8/auto/lib/openssl/make) vendor/nginx-1.15.10/auto/lib/openssl/makefile.bcc (from vendor/nginx-1.15.8/auto/lib/openssl/makefile.bcc) vendor/nginx-1.15.10/auto/lib/openssl/makefile.msvc (from vendor/nginx-1.15.8/auto/lib/openssl/makefile.msvc) vendor/nginx-1.15.10/auto/lib/pcre/conf (from vendor/nginx-1.15.8/auto/lib/pcre/conf) vendor/nginx-1.15.10/auto/lib/pcre/make (from vendor/nginx-1.15.8/auto/lib/pcre/make) vendor/nginx-1.15.10/auto/lib/pcre/makefile.bcc (from vendor/nginx-1.15.8/auto/lib/pcre/makefile.bcc) vendor/nginx-1.15.10/auto/lib/pcre/makefile.msvc (from vendor/nginx-1.15.8/auto/lib/pcre/makefile.msvc) vendor/nginx-1.15.10/auto/lib/pcre/makefile.owc (from vendor/nginx-1.15.8/auto/lib/pcre/makefile.owc) vendor/nginx-1.15.10/auto/lib/perl/conf (from vendor/nginx-1.15.8/auto/lib/perl/conf) vendor/nginx-1.15.10/auto/lib/perl/make (from vendor/nginx-1.15.8/auto/lib/perl/make) vendor/nginx-1.15.10/auto/lib/zlib/conf (from vendor/nginx-1.15.8/auto/lib/zlib/conf) vendor/nginx-1.15.10/auto/lib/zlib/make (from vendor/nginx-1.15.8/auto/lib/zlib/make) vendor/nginx-1.15.10/auto/lib/zlib/makefile.bcc (from vendor/nginx-1.15.8/auto/lib/zlib/makefile.bcc) vendor/nginx-1.15.10/auto/lib/zlib/makefile.msvc (from vendor/nginx-1.15.8/auto/lib/zlib/makefile.msvc) vendor/nginx-1.15.10/auto/lib/zlib/makefile.owc (from vendor/nginx-1.15.8/auto/lib/zlib/makefile.owc) vendor/nginx-1.15.10/auto/make (from vendor/nginx-1.15.8/auto/make) vendor/nginx-1.15.10/auto/module (from vendor/nginx-1.15.8/auto/module) vendor/nginx-1.15.10/auto/modules (from vendor/nginx-1.15.8/auto/modules) vendor/nginx-1.15.10/auto/nohave (from vendor/nginx-1.15.8/auto/nohave) vendor/nginx-1.15.10/auto/options (from vendor/nginx-1.15.8/auto/options) vendor/nginx-1.15.10/auto/os/conf (from vendor/nginx-1.15.8/auto/os/conf) vendor/nginx-1.15.10/auto/os/darwin (from vendor/nginx-1.15.8/auto/os/darwin) vendor/nginx-1.15.10/auto/os/freebsd (from vendor/nginx-1.15.8/auto/os/freebsd) vendor/nginx-1.15.10/auto/os/linux (from vendor/nginx-1.15.8/auto/os/linux) vendor/nginx-1.15.10/auto/os/solaris (from vendor/nginx-1.15.8/auto/os/solaris) vendor/nginx-1.15.10/auto/os/win32 (from vendor/nginx-1.15.8/auto/os/win32) vendor/nginx-1.15.10/auto/sources (from vendor/nginx-1.15.8/auto/sources) vendor/nginx-1.15.10/auto/stubs (from vendor/nginx-1.15.8/auto/stubs) vendor/nginx-1.15.10/auto/summary (from vendor/nginx-1.15.8/auto/summary) vendor/nginx-1.15.10/auto/threads (from vendor/nginx-1.15.8/auto/threads) vendor/nginx-1.15.10/auto/types/sizeof (from vendor/nginx-1.15.8/auto/types/sizeof) vendor/nginx-1.15.10/auto/types/typedef (from vendor/nginx-1.15.8/auto/types/typedef) vendor/nginx-1.15.10/auto/types/uintptr_t (from vendor/nginx-1.15.8/auto/types/uintptr_t) vendor/nginx-1.15.10/auto/types/value (from vendor/nginx-1.15.8/auto/types/value) vendor/nginx-1.15.10/auto/unix (from vendor/nginx-1.15.8/auto/unix) vendor/nginx-1.15.10/conf/fastcgi.conf (from vendor/nginx-1.15.8/conf/fastcgi.conf) vendor/nginx-1.15.10/conf/fastcgi_params (from vendor/nginx-1.15.8/conf/fastcgi_params) vendor/nginx-1.15.10/conf/koi-utf (from vendor/nginx-1.15.8/conf/koi-utf) vendor/nginx-1.15.10/conf/koi-win (from vendor/nginx-1.15.8/conf/koi-win) vendor/nginx-1.15.10/conf/mime.types (from vendor/nginx-1.15.8/conf/mime.types) vendor/nginx-1.15.10/conf/nginx.conf (from vendor/nginx-1.15.8/conf/nginx.conf) vendor/nginx-1.15.10/conf/scgi_params (from vendor/nginx-1.15.8/conf/scgi_params) vendor/nginx-1.15.10/conf/uwsgi_params (from vendor/nginx-1.15.8/conf/uwsgi_params) vendor/nginx-1.15.10/conf/win-utf (from vendor/nginx-1.15.8/conf/win-utf) vendor/nginx-1.15.10/contrib/README (from vendor/nginx-1.15.8/contrib/README) vendor/nginx-1.15.10/contrib/geo2nginx.pl (from vendor/nginx-1.15.8/contrib/geo2nginx.pl) vendor/nginx-1.15.10/contrib/unicode2nginx/koi-utf (from vendor/nginx-1.15.8/contrib/unicode2nginx/koi-utf) vendor/nginx-1.15.10/contrib/unicode2nginx/unicode-to-nginx.pl (from vendor/nginx-1.15.8/contrib/unicode2nginx/unicode-to-nginx.pl) vendor/nginx-1.15.10/contrib/unicode2nginx/win-utf (from vendor/nginx-1.15.8/contrib/unicode2nginx/win-utf) vendor/nginx-1.15.10/contrib/vim/ftdetect/nginx.vim (from vendor/nginx-1.15.8/contrib/vim/ftdetect/nginx.vim) vendor/nginx-1.15.10/contrib/vim/ftplugin/nginx.vim (from vendor/nginx-1.15.8/contrib/vim/ftplugin/nginx.vim) vendor/nginx-1.15.10/contrib/vim/indent/nginx.vim (from vendor/nginx-1.15.8/contrib/vim/indent/nginx.vim) vendor/nginx-1.15.10/contrib/vim/syntax/nginx.vim (from vendor/nginx-1.15.8/contrib/vim/syntax/nginx.vim) vendor/nginx-1.15.10/docs/GNUmakefile (from vendor/nginx-1.15.8/docs/GNUmakefile) vendor/nginx-1.15.10/docs/dtd/change_log_conf.dtd (from vendor/nginx-1.15.8/docs/dtd/change_log_conf.dtd) vendor/nginx-1.15.10/docs/dtd/changes.dtd (from vendor/nginx-1.15.8/docs/dtd/changes.dtd) vendor/nginx-1.15.10/docs/html/50x.html (from vendor/nginx-1.15.8/docs/html/50x.html) vendor/nginx-1.15.10/docs/html/index.html (from vendor/nginx-1.15.8/docs/html/index.html) vendor/nginx-1.15.10/docs/man/nginx.8 (from vendor/nginx-1.15.8/docs/man/nginx.8) vendor/nginx-1.15.10/docs/text/LICENSE (from vendor/nginx-1.15.8/docs/text/LICENSE) vendor/nginx-1.15.10/docs/text/README (from vendor/nginx-1.15.8/docs/text/README) vendor/nginx-1.15.10/docs/xml/change_log_conf.xml (from vendor/nginx-1.15.8/docs/xml/change_log_conf.xml) vendor/nginx-1.15.10/docs/xml/nginx/changes.xml (from vendor/nginx-1.15.8/docs/xml/nginx/changes.xml) vendor/nginx-1.15.10/docs/xsls/changes.xsls (from vendor/nginx-1.15.8/docs/xsls/changes.xsls) vendor/nginx-1.15.10/docs/xslt/changes.xslt (from vendor/nginx-1.15.8/docs/xslt/changes.xslt) vendor/nginx-1.15.10/misc/GNUmakefile (from vendor/nginx-1.15.8/misc/GNUmakefile) vendor/nginx-1.15.10/misc/README (from vendor/nginx-1.15.8/misc/README) vendor/nginx-1.15.10/src/core/nginx.c (from vendor/nginx-1.15.8/src/core/nginx.c) vendor/nginx-1.15.10/src/core/nginx.h (from vendor/nginx-1.15.8/src/core/nginx.h) vendor/nginx-1.15.10/src/core/ngx_array.c (from vendor/nginx-1.15.8/src/core/ngx_array.c) vendor/nginx-1.15.10/src/core/ngx_array.h (from vendor/nginx-1.15.8/src/core/ngx_array.h) vendor/nginx-1.15.10/src/core/ngx_buf.c (from vendor/nginx-1.15.8/src/core/ngx_buf.c) vendor/nginx-1.15.10/src/core/ngx_buf.h (from vendor/nginx-1.15.8/src/core/ngx_buf.h) vendor/nginx-1.15.10/src/core/ngx_conf_file.c (from vendor/nginx-1.15.8/src/core/ngx_conf_file.c) vendor/nginx-1.15.10/src/core/ngx_conf_file.h (from vendor/nginx-1.15.8/src/core/ngx_conf_file.h) vendor/nginx-1.15.10/src/core/ngx_config.h (from vendor/nginx-1.15.8/src/core/ngx_config.h) vendor/nginx-1.15.10/src/core/ngx_connection.c (from vendor/nginx-1.15.8/src/core/ngx_connection.c) vendor/nginx-1.15.10/src/core/ngx_connection.h (from vendor/nginx-1.15.8/src/core/ngx_connection.h) vendor/nginx-1.15.10/src/core/ngx_core.h (from vendor/nginx-1.15.8/src/core/ngx_core.h) vendor/nginx-1.15.10/src/core/ngx_cpuinfo.c (from vendor/nginx-1.15.8/src/core/ngx_cpuinfo.c) vendor/nginx-1.15.10/src/core/ngx_crc.h (from vendor/nginx-1.15.8/src/core/ngx_crc.h) vendor/nginx-1.15.10/src/core/ngx_crc32.c (from vendor/nginx-1.15.8/src/core/ngx_crc32.c) vendor/nginx-1.15.10/src/core/ngx_crc32.h (from vendor/nginx-1.15.8/src/core/ngx_crc32.h) vendor/nginx-1.15.10/src/core/ngx_crypt.c (from vendor/nginx-1.15.8/src/core/ngx_crypt.c) vendor/nginx-1.15.10/src/core/ngx_crypt.h (from vendor/nginx-1.15.8/src/core/ngx_crypt.h) vendor/nginx-1.15.10/src/core/ngx_cycle.c (from vendor/nginx-1.15.8/src/core/ngx_cycle.c) vendor/nginx-1.15.10/src/core/ngx_cycle.h (from vendor/nginx-1.15.8/src/core/ngx_cycle.h) vendor/nginx-1.15.10/src/core/ngx_file.c (from vendor/nginx-1.15.8/src/core/ngx_file.c) vendor/nginx-1.15.10/src/core/ngx_file.h (from vendor/nginx-1.15.8/src/core/ngx_file.h) vendor/nginx-1.15.10/src/core/ngx_hash.c (from vendor/nginx-1.15.8/src/core/ngx_hash.c) vendor/nginx-1.15.10/src/core/ngx_hash.h (from vendor/nginx-1.15.8/src/core/ngx_hash.h) vendor/nginx-1.15.10/src/core/ngx_inet.c (from vendor/nginx-1.15.8/src/core/ngx_inet.c) vendor/nginx-1.15.10/src/core/ngx_inet.h (from vendor/nginx-1.15.8/src/core/ngx_inet.h) vendor/nginx-1.15.10/src/core/ngx_list.c (from vendor/nginx-1.15.8/src/core/ngx_list.c) vendor/nginx-1.15.10/src/core/ngx_list.h (from vendor/nginx-1.15.8/src/core/ngx_list.h) vendor/nginx-1.15.10/src/core/ngx_log.c (from vendor/nginx-1.15.8/src/core/ngx_log.c) vendor/nginx-1.15.10/src/core/ngx_log.h (from vendor/nginx-1.15.8/src/core/ngx_log.h) vendor/nginx-1.15.10/src/core/ngx_md5.c (from vendor/nginx-1.15.8/src/core/ngx_md5.c) vendor/nginx-1.15.10/src/core/ngx_md5.h (from vendor/nginx-1.15.8/src/core/ngx_md5.h) vendor/nginx-1.15.10/src/core/ngx_module.c (from vendor/nginx-1.15.8/src/core/ngx_module.c) vendor/nginx-1.15.10/src/core/ngx_module.h (from vendor/nginx-1.15.8/src/core/ngx_module.h) vendor/nginx-1.15.10/src/core/ngx_murmurhash.c (from vendor/nginx-1.15.8/src/core/ngx_murmurhash.c) vendor/nginx-1.15.10/src/core/ngx_murmurhash.h (from vendor/nginx-1.15.8/src/core/ngx_murmurhash.h) vendor/nginx-1.15.10/src/core/ngx_open_file_cache.c (from vendor/nginx-1.15.8/src/core/ngx_open_file_cache.c) vendor/nginx-1.15.10/src/core/ngx_open_file_cache.h (from vendor/nginx-1.15.8/src/core/ngx_open_file_cache.h) vendor/nginx-1.15.10/src/core/ngx_output_chain.c (from vendor/nginx-1.15.8/src/core/ngx_output_chain.c) vendor/nginx-1.15.10/src/core/ngx_palloc.c (from vendor/nginx-1.15.8/src/core/ngx_palloc.c) vendor/nginx-1.15.10/src/core/ngx_palloc.h (from vendor/nginx-1.15.8/src/core/ngx_palloc.h) vendor/nginx-1.15.10/src/core/ngx_parse.c (from vendor/nginx-1.15.8/src/core/ngx_parse.c) vendor/nginx-1.15.10/src/core/ngx_parse.h (from vendor/nginx-1.15.8/src/core/ngx_parse.h) vendor/nginx-1.15.10/src/core/ngx_parse_time.c (from vendor/nginx-1.15.8/src/core/ngx_parse_time.c) vendor/nginx-1.15.10/src/core/ngx_parse_time.h (from vendor/nginx-1.15.8/src/core/ngx_parse_time.h) vendor/nginx-1.15.10/src/core/ngx_proxy_protocol.c (from vendor/nginx-1.15.8/src/core/ngx_proxy_protocol.c) vendor/nginx-1.15.10/src/core/ngx_proxy_protocol.h (from vendor/nginx-1.15.8/src/core/ngx_proxy_protocol.h) vendor/nginx-1.15.10/src/core/ngx_queue.c (from vendor/nginx-1.15.8/src/core/ngx_queue.c) vendor/nginx-1.15.10/src/core/ngx_queue.h (from vendor/nginx-1.15.8/src/core/ngx_queue.h) vendor/nginx-1.15.10/src/core/ngx_radix_tree.c (from vendor/nginx-1.15.8/src/core/ngx_radix_tree.c) vendor/nginx-1.15.10/src/core/ngx_radix_tree.h (from vendor/nginx-1.15.8/src/core/ngx_radix_tree.h) vendor/nginx-1.15.10/src/core/ngx_rbtree.c (from vendor/nginx-1.15.8/src/core/ngx_rbtree.c) vendor/nginx-1.15.10/src/core/ngx_rbtree.h (from vendor/nginx-1.15.8/src/core/ngx_rbtree.h) vendor/nginx-1.15.10/src/core/ngx_regex.c (from vendor/nginx-1.15.8/src/core/ngx_regex.c) vendor/nginx-1.15.10/src/core/ngx_regex.h (from vendor/nginx-1.15.8/src/core/ngx_regex.h) vendor/nginx-1.15.10/src/core/ngx_resolver.c (from vendor/nginx-1.15.8/src/core/ngx_resolver.c) vendor/nginx-1.15.10/src/core/ngx_resolver.h (from vendor/nginx-1.15.8/src/core/ngx_resolver.h) vendor/nginx-1.15.10/src/core/ngx_rwlock.c (from vendor/nginx-1.15.8/src/core/ngx_rwlock.c) vendor/nginx-1.15.10/src/core/ngx_rwlock.h (from vendor/nginx-1.15.8/src/core/ngx_rwlock.h) vendor/nginx-1.15.10/src/core/ngx_sha1.c (from vendor/nginx-1.15.8/src/core/ngx_sha1.c) vendor/nginx-1.15.10/src/core/ngx_sha1.h (from vendor/nginx-1.15.8/src/core/ngx_sha1.h) vendor/nginx-1.15.10/src/core/ngx_shmtx.c (from vendor/nginx-1.15.8/src/core/ngx_shmtx.c) vendor/nginx-1.15.10/src/core/ngx_shmtx.h (from vendor/nginx-1.15.8/src/core/ngx_shmtx.h) vendor/nginx-1.15.10/src/core/ngx_slab.c (from vendor/nginx-1.15.8/src/core/ngx_slab.c) vendor/nginx-1.15.10/src/core/ngx_slab.h (from vendor/nginx-1.15.8/src/core/ngx_slab.h) vendor/nginx-1.15.10/src/core/ngx_spinlock.c (from vendor/nginx-1.15.8/src/core/ngx_spinlock.c) vendor/nginx-1.15.10/src/core/ngx_string.c (from vendor/nginx-1.15.8/src/core/ngx_string.c) vendor/nginx-1.15.10/src/core/ngx_string.h (from vendor/nginx-1.15.8/src/core/ngx_string.h) vendor/nginx-1.15.10/src/core/ngx_syslog.c (from vendor/nginx-1.15.8/src/core/ngx_syslog.c) vendor/nginx-1.15.10/src/core/ngx_syslog.h (from vendor/nginx-1.15.8/src/core/ngx_syslog.h) vendor/nginx-1.15.10/src/core/ngx_thread_pool.c (from vendor/nginx-1.15.8/src/core/ngx_thread_pool.c) vendor/nginx-1.15.10/src/core/ngx_thread_pool.h (from vendor/nginx-1.15.8/src/core/ngx_thread_pool.h) vendor/nginx-1.15.10/src/core/ngx_times.c (from vendor/nginx-1.15.8/src/core/ngx_times.c) vendor/nginx-1.15.10/src/core/ngx_times.h (from vendor/nginx-1.15.8/src/core/ngx_times.h) vendor/nginx-1.15.10/src/event/modules/ngx_devpoll_module.c (from vendor/nginx-1.15.8/src/event/modules/ngx_devpoll_module.c) vendor/nginx-1.15.10/src/event/modules/ngx_epoll_module.c (from vendor/nginx-1.15.8/src/event/modules/ngx_epoll_module.c) vendor/nginx-1.15.10/src/event/modules/ngx_eventport_module.c (from vendor/nginx-1.15.8/src/event/modules/ngx_eventport_module.c) vendor/nginx-1.15.10/src/event/modules/ngx_iocp_module.c (from vendor/nginx-1.15.8/src/event/modules/ngx_iocp_module.c) vendor/nginx-1.15.10/src/event/modules/ngx_iocp_module.h (from vendor/nginx-1.15.8/src/event/modules/ngx_iocp_module.h) vendor/nginx-1.15.10/src/event/modules/ngx_kqueue_module.c (from vendor/nginx-1.15.8/src/event/modules/ngx_kqueue_module.c) vendor/nginx-1.15.10/src/event/modules/ngx_select_module.c (from vendor/nginx-1.15.8/src/event/modules/ngx_select_module.c) vendor/nginx-1.15.10/src/event/modules/ngx_win32_poll_module.c (from vendor/nginx-1.15.8/src/event/modules/ngx_poll_module.c) vendor/nginx-1.15.10/src/event/modules/ngx_win32_select_module.c (from vendor/nginx-1.15.8/src/event/modules/ngx_win32_select_module.c) vendor/nginx-1.15.10/src/event/ngx_event.c (from vendor/nginx-1.15.8/src/event/ngx_event.c) vendor/nginx-1.15.10/src/event/ngx_event.h (from vendor/nginx-1.15.8/src/event/ngx_event.h) vendor/nginx-1.15.10/src/event/ngx_event_accept.c (from vendor/nginx-1.15.8/src/event/ngx_event_accept.c) vendor/nginx-1.15.10/src/event/ngx_event_acceptex.c (from vendor/nginx-1.15.8/src/event/ngx_event_acceptex.c) vendor/nginx-1.15.10/src/event/ngx_event_connect.c (from vendor/nginx-1.15.8/src/event/ngx_event_connect.c) vendor/nginx-1.15.10/src/event/ngx_event_connect.h (from vendor/nginx-1.15.8/src/event/ngx_event_connect.h) vendor/nginx-1.15.10/src/event/ngx_event_connectex.c (from vendor/nginx-1.15.8/src/event/ngx_event_connectex.c) vendor/nginx-1.15.10/src/event/ngx_event_openssl.c (from vendor/nginx-1.15.8/src/event/ngx_event_openssl.c) vendor/nginx-1.15.10/src/event/ngx_event_openssl.h (from vendor/nginx-1.15.8/src/event/ngx_event_openssl.h) vendor/nginx-1.15.10/src/event/ngx_event_openssl_stapling.c (from vendor/nginx-1.15.8/src/event/ngx_event_openssl_stapling.c) vendor/nginx-1.15.10/src/event/ngx_event_pipe.c (from vendor/nginx-1.15.8/src/event/ngx_event_pipe.c) vendor/nginx-1.15.10/src/event/ngx_event_pipe.h (from vendor/nginx-1.15.8/src/event/ngx_event_pipe.h) vendor/nginx-1.15.10/src/event/ngx_event_posted.c (from vendor/nginx-1.15.8/src/event/ngx_event_posted.c) vendor/nginx-1.15.10/src/event/ngx_event_posted.h (from vendor/nginx-1.15.8/src/event/ngx_event_posted.h) vendor/nginx-1.15.10/src/event/ngx_event_timer.c (from vendor/nginx-1.15.8/src/event/ngx_event_timer.c) vendor/nginx-1.15.10/src/event/ngx_event_timer.h (from vendor/nginx-1.15.8/src/event/ngx_event_timer.h) vendor/nginx-1.15.10/src/event/ngx_event_udp.c (from vendor/nginx-1.15.8/src/event/ngx_event_udp.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_access_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_access_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_addition_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_addition_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_auth_basic_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_auth_basic_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_auth_request_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_auth_request_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_autoindex_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_autoindex_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_browser_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_browser_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_charset_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_charset_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_chunked_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_chunked_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_dav_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_dav_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_degradation_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_degradation_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_empty_gif_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_empty_gif_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_fastcgi_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_fastcgi_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_flv_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_flv_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_geo_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_geo_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_geoip_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_geoip_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_grpc_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_grpc_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_gunzip_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_gunzip_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_gzip_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_gzip_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_gzip_static_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_gzip_static_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_headers_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_headers_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_image_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_image_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_index_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_index_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_limit_conn_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_limit_conn_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_limit_req_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_limit_req_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_log_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_log_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_map_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_map_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_memcached_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_memcached_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_mirror_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_mirror_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_mp4_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_mp4_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_not_modified_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_not_modified_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_proxy_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_proxy_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_random_index_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_random_index_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_range_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_range_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_realip_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_realip_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_referer_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_referer_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_rewrite_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_rewrite_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_scgi_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_scgi_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_secure_link_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_secure_link_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_slice_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_slice_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_split_clients_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_split_clients_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_ssi_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_ssi_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_ssi_filter_module.h (from vendor/nginx-1.15.8/src/http/modules/ngx_http_ssi_filter_module.h) vendor/nginx-1.15.10/src/http/modules/ngx_http_ssl_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_ssl_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_ssl_module.h (from vendor/nginx-1.15.8/src/http/modules/ngx_http_ssl_module.h) vendor/nginx-1.15.10/src/http/modules/ngx_http_static_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_static_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_stub_status_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_stub_status_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_sub_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_sub_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_try_files_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_try_files_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_hash_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_upstream_hash_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_ip_hash_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_upstream_ip_hash_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_keepalive_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_upstream_keepalive_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_least_conn_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_upstream_least_conn_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_random_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_upstream_random_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_zone_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_upstream_zone_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_userid_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_userid_filter_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_uwsgi_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_uwsgi_module.c) vendor/nginx-1.15.10/src/http/modules/ngx_http_xslt_filter_module.c (from vendor/nginx-1.15.8/src/http/modules/ngx_http_xslt_filter_module.c) vendor/nginx-1.15.10/src/http/modules/perl/Makefile.PL (from vendor/nginx-1.15.8/src/http/modules/perl/Makefile.PL) vendor/nginx-1.15.10/src/http/modules/perl/nginx.pm (from vendor/nginx-1.15.8/src/http/modules/perl/nginx.pm) vendor/nginx-1.15.10/src/http/modules/perl/nginx.xs (from vendor/nginx-1.15.8/src/http/modules/perl/nginx.xs) vendor/nginx-1.15.10/src/http/modules/perl/ngx_http_perl_module.c (from vendor/nginx-1.15.8/src/http/modules/perl/ngx_http_perl_module.c) vendor/nginx-1.15.10/src/http/modules/perl/ngx_http_perl_module.h (from vendor/nginx-1.15.8/src/http/modules/perl/ngx_http_perl_module.h) vendor/nginx-1.15.10/src/http/modules/perl/typemap (from vendor/nginx-1.15.8/src/http/modules/perl/typemap) vendor/nginx-1.15.10/src/http/ngx_http.c (from vendor/nginx-1.15.8/src/http/ngx_http.c) vendor/nginx-1.15.10/src/http/ngx_http.h (from vendor/nginx-1.15.8/src/http/ngx_http.h) vendor/nginx-1.15.10/src/http/ngx_http_cache.h (from vendor/nginx-1.15.8/src/http/ngx_http_cache.h) vendor/nginx-1.15.10/src/http/ngx_http_config.h (from vendor/nginx-1.15.8/src/http/ngx_http_config.h) vendor/nginx-1.15.10/src/http/ngx_http_copy_filter_module.c (from vendor/nginx-1.15.8/src/http/ngx_http_copy_filter_module.c) vendor/nginx-1.15.10/src/http/ngx_http_core_module.c (from vendor/nginx-1.15.8/src/http/ngx_http_core_module.c) vendor/nginx-1.15.10/src/http/ngx_http_core_module.h (from vendor/nginx-1.15.8/src/http/ngx_http_core_module.h) vendor/nginx-1.15.10/src/http/ngx_http_file_cache.c (from vendor/nginx-1.15.8/src/http/ngx_http_file_cache.c) vendor/nginx-1.15.10/src/http/ngx_http_header_filter_module.c (from vendor/nginx-1.15.8/src/http/ngx_http_header_filter_module.c) vendor/nginx-1.15.10/src/http/ngx_http_parse.c (from vendor/nginx-1.15.8/src/http/ngx_http_parse.c) vendor/nginx-1.15.10/src/http/ngx_http_postpone_filter_module.c (from vendor/nginx-1.15.8/src/http/ngx_http_postpone_filter_module.c) vendor/nginx-1.15.10/src/http/ngx_http_request.c (from vendor/nginx-1.15.8/src/http/ngx_http_request.c) vendor/nginx-1.15.10/src/http/ngx_http_request.h (from vendor/nginx-1.15.8/src/http/ngx_http_request.h) vendor/nginx-1.15.10/src/http/ngx_http_request_body.c (from vendor/nginx-1.15.8/src/http/ngx_http_request_body.c) vendor/nginx-1.15.10/src/http/ngx_http_script.c (from vendor/nginx-1.15.8/src/http/ngx_http_script.c) vendor/nginx-1.15.10/src/http/ngx_http_script.h (from vendor/nginx-1.15.8/src/http/ngx_http_script.h) vendor/nginx-1.15.10/src/http/ngx_http_special_response.c (from vendor/nginx-1.15.8/src/http/ngx_http_special_response.c) vendor/nginx-1.15.10/src/http/ngx_http_upstream.c (from vendor/nginx-1.15.8/src/http/ngx_http_upstream.c) vendor/nginx-1.15.10/src/http/ngx_http_upstream.h (from vendor/nginx-1.15.8/src/http/ngx_http_upstream.h) vendor/nginx-1.15.10/src/http/ngx_http_upstream_round_robin.c (from vendor/nginx-1.15.8/src/http/ngx_http_upstream_round_robin.c) vendor/nginx-1.15.10/src/http/ngx_http_upstream_round_robin.h (from vendor/nginx-1.15.8/src/http/ngx_http_upstream_round_robin.h) vendor/nginx-1.15.10/src/http/ngx_http_variables.c (from vendor/nginx-1.15.8/src/http/ngx_http_variables.c) vendor/nginx-1.15.10/src/http/ngx_http_variables.h (from vendor/nginx-1.15.8/src/http/ngx_http_variables.h) vendor/nginx-1.15.10/src/http/ngx_http_write_filter_module.c (from vendor/nginx-1.15.8/src/http/ngx_http_write_filter_module.c) vendor/nginx-1.15.10/src/http/v2/ngx_http_v2.c (from vendor/nginx-1.15.8/src/http/v2/ngx_http_v2.c) vendor/nginx-1.15.10/src/http/v2/ngx_http_v2.h (from vendor/nginx-1.15.8/src/http/v2/ngx_http_v2.h) vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_encode.c (from vendor/nginx-1.15.8/src/http/v2/ngx_http_v2_encode.c) vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_filter_module.c (from vendor/nginx-1.15.8/src/http/v2/ngx_http_v2_filter_module.c) vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_huff_decode.c (from vendor/nginx-1.15.8/src/http/v2/ngx_http_v2_huff_decode.c) vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_huff_encode.c (from vendor/nginx-1.15.8/src/http/v2/ngx_http_v2_huff_encode.c) vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_module.c (from vendor/nginx-1.15.8/src/http/v2/ngx_http_v2_module.c) vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_module.h (from vendor/nginx-1.15.8/src/http/v2/ngx_http_v2_module.h) vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_table.c (from vendor/nginx-1.15.8/src/http/v2/ngx_http_v2_table.c) vendor/nginx-1.15.10/src/mail/ngx_mail.c (from vendor/nginx-1.15.8/src/mail/ngx_mail.c) vendor/nginx-1.15.10/src/mail/ngx_mail.h (from vendor/nginx-1.15.8/src/mail/ngx_mail.h) vendor/nginx-1.15.10/src/mail/ngx_mail_auth_http_module.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_auth_http_module.c) vendor/nginx-1.15.10/src/mail/ngx_mail_core_module.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_core_module.c) vendor/nginx-1.15.10/src/mail/ngx_mail_handler.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_handler.c) vendor/nginx-1.15.10/src/mail/ngx_mail_imap_handler.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_imap_handler.c) vendor/nginx-1.15.10/src/mail/ngx_mail_imap_module.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_imap_module.c) vendor/nginx-1.15.10/src/mail/ngx_mail_imap_module.h (from vendor/nginx-1.15.8/src/mail/ngx_mail_imap_module.h) vendor/nginx-1.15.10/src/mail/ngx_mail_parse.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_parse.c) vendor/nginx-1.15.10/src/mail/ngx_mail_pop3_handler.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_pop3_handler.c) vendor/nginx-1.15.10/src/mail/ngx_mail_pop3_module.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_pop3_module.c) vendor/nginx-1.15.10/src/mail/ngx_mail_pop3_module.h (from vendor/nginx-1.15.8/src/mail/ngx_mail_pop3_module.h) vendor/nginx-1.15.10/src/mail/ngx_mail_proxy_module.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_proxy_module.c) vendor/nginx-1.15.10/src/mail/ngx_mail_smtp_handler.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_smtp_handler.c) vendor/nginx-1.15.10/src/mail/ngx_mail_smtp_module.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_smtp_module.c) vendor/nginx-1.15.10/src/mail/ngx_mail_smtp_module.h (from vendor/nginx-1.15.8/src/mail/ngx_mail_smtp_module.h) vendor/nginx-1.15.10/src/mail/ngx_mail_ssl_module.c (from vendor/nginx-1.15.8/src/mail/ngx_mail_ssl_module.c) vendor/nginx-1.15.10/src/mail/ngx_mail_ssl_module.h (from vendor/nginx-1.15.8/src/mail/ngx_mail_ssl_module.h) vendor/nginx-1.15.10/src/misc/ngx_cpp_test_module.cpp (from vendor/nginx-1.15.8/src/misc/ngx_cpp_test_module.cpp) vendor/nginx-1.15.10/src/misc/ngx_google_perftools_module.c (from vendor/nginx-1.15.8/src/misc/ngx_google_perftools_module.c) vendor/nginx-1.15.10/src/os/unix/ngx_alloc.c (from vendor/nginx-1.15.8/src/os/unix/ngx_alloc.c) vendor/nginx-1.15.10/src/os/unix/ngx_alloc.h (from vendor/nginx-1.15.8/src/os/unix/ngx_alloc.h) vendor/nginx-1.15.10/src/os/unix/ngx_atomic.h (from vendor/nginx-1.15.8/src/os/unix/ngx_atomic.h) vendor/nginx-1.15.10/src/os/unix/ngx_channel.c (from vendor/nginx-1.15.8/src/os/unix/ngx_channel.c) vendor/nginx-1.15.10/src/os/unix/ngx_channel.h (from vendor/nginx-1.15.8/src/os/unix/ngx_channel.h) vendor/nginx-1.15.10/src/os/unix/ngx_daemon.c (from vendor/nginx-1.15.8/src/os/unix/ngx_daemon.c) vendor/nginx-1.15.10/src/os/unix/ngx_darwin.h (from vendor/nginx-1.15.8/src/os/unix/ngx_darwin.h) vendor/nginx-1.15.10/src/os/unix/ngx_darwin_config.h (from vendor/nginx-1.15.8/src/os/unix/ngx_darwin_config.h) vendor/nginx-1.15.10/src/os/unix/ngx_darwin_init.c (from vendor/nginx-1.15.8/src/os/unix/ngx_darwin_init.c) vendor/nginx-1.15.10/src/os/unix/ngx_darwin_sendfile_chain.c (from vendor/nginx-1.15.8/src/os/unix/ngx_darwin_sendfile_chain.c) vendor/nginx-1.15.10/src/os/unix/ngx_dlopen.c (from vendor/nginx-1.15.8/src/os/unix/ngx_dlopen.c) vendor/nginx-1.15.10/src/os/unix/ngx_dlopen.h (from vendor/nginx-1.15.8/src/os/unix/ngx_dlopen.h) vendor/nginx-1.15.10/src/os/unix/ngx_errno.c (from vendor/nginx-1.15.8/src/os/unix/ngx_errno.c) vendor/nginx-1.15.10/src/os/unix/ngx_errno.h (from vendor/nginx-1.15.8/src/os/unix/ngx_errno.h) vendor/nginx-1.15.10/src/os/unix/ngx_file_aio_read.c (from vendor/nginx-1.15.8/src/os/unix/ngx_file_aio_read.c) vendor/nginx-1.15.10/src/os/unix/ngx_files.c (from vendor/nginx-1.15.8/src/os/unix/ngx_files.c) vendor/nginx-1.15.10/src/os/unix/ngx_files.h (from vendor/nginx-1.15.8/src/os/unix/ngx_files.h) vendor/nginx-1.15.10/src/os/unix/ngx_freebsd.h (from vendor/nginx-1.15.8/src/os/unix/ngx_freebsd.h) vendor/nginx-1.15.10/src/os/unix/ngx_freebsd_config.h (from vendor/nginx-1.15.8/src/os/unix/ngx_freebsd_config.h) vendor/nginx-1.15.10/src/os/unix/ngx_freebsd_init.c (from vendor/nginx-1.15.8/src/os/unix/ngx_freebsd_init.c) vendor/nginx-1.15.10/src/os/unix/ngx_freebsd_sendfile_chain.c (from vendor/nginx-1.15.8/src/os/unix/ngx_freebsd_sendfile_chain.c) vendor/nginx-1.15.10/src/os/unix/ngx_gcc_atomic_amd64.h (from vendor/nginx-1.15.8/src/os/unix/ngx_gcc_atomic_amd64.h) vendor/nginx-1.15.10/src/os/unix/ngx_gcc_atomic_ppc.h (from vendor/nginx-1.15.8/src/os/unix/ngx_gcc_atomic_ppc.h) vendor/nginx-1.15.10/src/os/unix/ngx_gcc_atomic_sparc64.h (from vendor/nginx-1.15.8/src/os/unix/ngx_gcc_atomic_sparc64.h) vendor/nginx-1.15.10/src/os/unix/ngx_gcc_atomic_x86.h (from vendor/nginx-1.15.8/src/os/unix/ngx_gcc_atomic_x86.h) vendor/nginx-1.15.10/src/os/unix/ngx_linux.h (from vendor/nginx-1.15.8/src/os/unix/ngx_linux.h) vendor/nginx-1.15.10/src/os/unix/ngx_linux_aio_read.c (from vendor/nginx-1.15.8/src/os/unix/ngx_linux_aio_read.c) vendor/nginx-1.15.10/src/os/unix/ngx_linux_config.h (from vendor/nginx-1.15.8/src/os/unix/ngx_linux_config.h) vendor/nginx-1.15.10/src/os/unix/ngx_linux_init.c (from vendor/nginx-1.15.8/src/os/unix/ngx_linux_init.c) vendor/nginx-1.15.10/src/os/unix/ngx_linux_sendfile_chain.c (from vendor/nginx-1.15.8/src/os/unix/ngx_linux_sendfile_chain.c) vendor/nginx-1.15.10/src/os/unix/ngx_os.h (from vendor/nginx-1.15.8/src/os/unix/ngx_os.h) vendor/nginx-1.15.10/src/os/unix/ngx_posix_config.h (from vendor/nginx-1.15.8/src/os/unix/ngx_posix_config.h) vendor/nginx-1.15.10/src/os/unix/ngx_posix_init.c (from vendor/nginx-1.15.8/src/os/unix/ngx_posix_init.c) vendor/nginx-1.15.10/src/os/unix/ngx_process.c (from vendor/nginx-1.15.8/src/os/unix/ngx_process.c) vendor/nginx-1.15.10/src/os/unix/ngx_process.h (from vendor/nginx-1.15.8/src/os/unix/ngx_process.h) vendor/nginx-1.15.10/src/os/unix/ngx_process_cycle.c (from vendor/nginx-1.15.8/src/os/unix/ngx_process_cycle.c) vendor/nginx-1.15.10/src/os/unix/ngx_process_cycle.h (from vendor/nginx-1.15.8/src/os/unix/ngx_process_cycle.h) vendor/nginx-1.15.10/src/os/unix/ngx_readv_chain.c (from vendor/nginx-1.15.8/src/os/unix/ngx_readv_chain.c) vendor/nginx-1.15.10/src/os/unix/ngx_recv.c (from vendor/nginx-1.15.8/src/os/unix/ngx_recv.c) vendor/nginx-1.15.10/src/os/unix/ngx_send.c (from vendor/nginx-1.15.8/src/os/unix/ngx_send.c) vendor/nginx-1.15.10/src/os/unix/ngx_setaffinity.c (from vendor/nginx-1.15.8/src/os/unix/ngx_setaffinity.c) vendor/nginx-1.15.10/src/os/unix/ngx_setaffinity.h (from vendor/nginx-1.15.8/src/os/unix/ngx_setaffinity.h) vendor/nginx-1.15.10/src/os/unix/ngx_setproctitle.c (from vendor/nginx-1.15.8/src/os/unix/ngx_setproctitle.c) vendor/nginx-1.15.10/src/os/unix/ngx_setproctitle.h (from vendor/nginx-1.15.8/src/os/unix/ngx_setproctitle.h) vendor/nginx-1.15.10/src/os/unix/ngx_shmem.c (from vendor/nginx-1.15.8/src/os/unix/ngx_shmem.c) vendor/nginx-1.15.10/src/os/unix/ngx_shmem.h (from vendor/nginx-1.15.8/src/os/unix/ngx_shmem.h) vendor/nginx-1.15.10/src/os/unix/ngx_socket.c (from vendor/nginx-1.15.8/src/os/unix/ngx_socket.c) vendor/nginx-1.15.10/src/os/unix/ngx_socket.h (from vendor/nginx-1.15.8/src/os/unix/ngx_socket.h) vendor/nginx-1.15.10/src/os/unix/ngx_solaris.h (from vendor/nginx-1.15.8/src/os/unix/ngx_solaris.h) vendor/nginx-1.15.10/src/os/unix/ngx_solaris_config.h (from vendor/nginx-1.15.8/src/os/unix/ngx_solaris_config.h) vendor/nginx-1.15.10/src/os/unix/ngx_solaris_init.c (from vendor/nginx-1.15.8/src/os/unix/ngx_solaris_init.c) vendor/nginx-1.15.10/src/os/unix/ngx_solaris_sendfilev_chain.c (from vendor/nginx-1.15.8/src/os/unix/ngx_solaris_sendfilev_chain.c) vendor/nginx-1.15.10/src/os/unix/ngx_sunpro_amd64.il (from vendor/nginx-1.15.8/src/os/unix/ngx_sunpro_amd64.il) vendor/nginx-1.15.10/src/os/unix/ngx_sunpro_atomic_sparc64.h (from vendor/nginx-1.15.8/src/os/unix/ngx_sunpro_atomic_sparc64.h) vendor/nginx-1.15.10/src/os/unix/ngx_sunpro_sparc64.il (from vendor/nginx-1.15.8/src/os/unix/ngx_sunpro_sparc64.il) vendor/nginx-1.15.10/src/os/unix/ngx_sunpro_x86.il (from vendor/nginx-1.15.8/src/os/unix/ngx_sunpro_x86.il) vendor/nginx-1.15.10/src/os/unix/ngx_thread.h (from vendor/nginx-1.15.8/src/os/unix/ngx_thread.h) vendor/nginx-1.15.10/src/os/unix/ngx_thread_cond.c (from vendor/nginx-1.15.8/src/os/unix/ngx_thread_cond.c) vendor/nginx-1.15.10/src/os/unix/ngx_thread_id.c (from vendor/nginx-1.15.8/src/os/unix/ngx_thread_id.c) vendor/nginx-1.15.10/src/os/unix/ngx_thread_mutex.c (from vendor/nginx-1.15.8/src/os/unix/ngx_thread_mutex.c) vendor/nginx-1.15.10/src/os/unix/ngx_time.c (from vendor/nginx-1.15.8/src/os/unix/ngx_time.c) vendor/nginx-1.15.10/src/os/unix/ngx_time.h (from vendor/nginx-1.15.8/src/os/unix/ngx_time.h) vendor/nginx-1.15.10/src/os/unix/ngx_udp_recv.c (from vendor/nginx-1.15.8/src/os/unix/ngx_udp_recv.c) vendor/nginx-1.15.10/src/os/unix/ngx_udp_send.c (from vendor/nginx-1.15.8/src/os/unix/ngx_udp_send.c) vendor/nginx-1.15.10/src/os/unix/ngx_udp_sendmsg_chain.c (from vendor/nginx-1.15.8/src/os/unix/ngx_udp_sendmsg_chain.c) vendor/nginx-1.15.10/src/os/unix/ngx_user.c (from vendor/nginx-1.15.8/src/os/unix/ngx_user.c) vendor/nginx-1.15.10/src/os/unix/ngx_user.h (from vendor/nginx-1.15.8/src/os/unix/ngx_user.h) vendor/nginx-1.15.10/src/os/unix/ngx_writev_chain.c (from vendor/nginx-1.15.8/src/os/unix/ngx_writev_chain.c) vendor/nginx-1.15.10/src/os/win32/nginx.ico (from vendor/nginx-1.15.8/src/os/win32/nginx.ico) vendor/nginx-1.15.10/src/os/win32/nginx.rc (from vendor/nginx-1.15.8/src/os/win32/nginx.rc) vendor/nginx-1.15.10/src/os/win32/nginx_icon16.xpm (from vendor/nginx-1.15.8/src/os/win32/nginx_icon16.xpm) vendor/nginx-1.15.10/src/os/win32/nginx_icon32.xpm (from vendor/nginx-1.15.8/src/os/win32/nginx_icon32.xpm) vendor/nginx-1.15.10/src/os/win32/nginx_icon48.xpm (from vendor/nginx-1.15.8/src/os/win32/nginx_icon48.xpm) vendor/nginx-1.15.10/src/os/win32/ngx_alloc.c (from vendor/nginx-1.15.8/src/os/win32/ngx_alloc.c) vendor/nginx-1.15.10/src/os/win32/ngx_alloc.h (from vendor/nginx-1.15.8/src/os/win32/ngx_alloc.h) vendor/nginx-1.15.10/src/os/win32/ngx_atomic.h (from vendor/nginx-1.15.8/src/os/win32/ngx_atomic.h) vendor/nginx-1.15.10/src/os/win32/ngx_dlopen.c (from vendor/nginx-1.15.8/src/os/win32/ngx_dlopen.c) vendor/nginx-1.15.10/src/os/win32/ngx_dlopen.h (from vendor/nginx-1.15.8/src/os/win32/ngx_dlopen.h) vendor/nginx-1.15.10/src/os/win32/ngx_errno.c (from vendor/nginx-1.15.8/src/os/win32/ngx_errno.c) vendor/nginx-1.15.10/src/os/win32/ngx_errno.h (from vendor/nginx-1.15.8/src/os/win32/ngx_errno.h) vendor/nginx-1.15.10/src/os/win32/ngx_event_log.c (from vendor/nginx-1.15.8/src/os/win32/ngx_event_log.c) vendor/nginx-1.15.10/src/os/win32/ngx_files.c (from vendor/nginx-1.15.8/src/os/win32/ngx_files.c) vendor/nginx-1.15.10/src/os/win32/ngx_files.h (from vendor/nginx-1.15.8/src/os/win32/ngx_files.h) vendor/nginx-1.15.10/src/os/win32/ngx_os.h (from vendor/nginx-1.15.8/src/os/win32/ngx_os.h) vendor/nginx-1.15.10/src/os/win32/ngx_process.c (from vendor/nginx-1.15.8/src/os/win32/ngx_process.c) vendor/nginx-1.15.10/src/os/win32/ngx_process.h (from vendor/nginx-1.15.8/src/os/win32/ngx_process.h) vendor/nginx-1.15.10/src/os/win32/ngx_process_cycle.c (from vendor/nginx-1.15.8/src/os/win32/ngx_process_cycle.c) vendor/nginx-1.15.10/src/os/win32/ngx_process_cycle.h (from vendor/nginx-1.15.8/src/os/win32/ngx_process_cycle.h) vendor/nginx-1.15.10/src/os/win32/ngx_service.c (from vendor/nginx-1.15.8/src/os/win32/ngx_service.c) vendor/nginx-1.15.10/src/os/win32/ngx_shmem.c (from vendor/nginx-1.15.8/src/os/win32/ngx_shmem.c) vendor/nginx-1.15.10/src/os/win32/ngx_shmem.h (from vendor/nginx-1.15.8/src/os/win32/ngx_shmem.h) vendor/nginx-1.15.10/src/os/win32/ngx_socket.c (from vendor/nginx-1.15.8/src/os/win32/ngx_socket.c) vendor/nginx-1.15.10/src/os/win32/ngx_socket.h (from vendor/nginx-1.15.8/src/os/win32/ngx_socket.h) vendor/nginx-1.15.10/src/os/win32/ngx_stat.c (from vendor/nginx-1.15.8/src/os/win32/ngx_stat.c) vendor/nginx-1.15.10/src/os/win32/ngx_thread.c (from vendor/nginx-1.15.8/src/os/win32/ngx_thread.c) vendor/nginx-1.15.10/src/os/win32/ngx_thread.h (from vendor/nginx-1.15.8/src/os/win32/ngx_thread.h) vendor/nginx-1.15.10/src/os/win32/ngx_time.c (from vendor/nginx-1.15.8/src/os/win32/ngx_time.c) vendor/nginx-1.15.10/src/os/win32/ngx_time.h (from vendor/nginx-1.15.8/src/os/win32/ngx_time.h) vendor/nginx-1.15.10/src/os/win32/ngx_udp_wsarecv.c (from vendor/nginx-1.15.8/src/os/win32/ngx_udp_wsarecv.c) vendor/nginx-1.15.10/src/os/win32/ngx_user.c (from vendor/nginx-1.15.8/src/os/win32/ngx_user.c) vendor/nginx-1.15.10/src/os/win32/ngx_user.h (from vendor/nginx-1.15.8/src/os/win32/ngx_user.h) vendor/nginx-1.15.10/src/os/win32/ngx_win32_config.h (from vendor/nginx-1.15.8/src/os/win32/ngx_win32_config.h) vendor/nginx-1.15.10/src/os/win32/ngx_win32_init.c (from vendor/nginx-1.15.8/src/os/win32/ngx_win32_init.c) vendor/nginx-1.15.10/src/os/win32/ngx_wsarecv.c (from vendor/nginx-1.15.8/src/os/win32/ngx_wsarecv.c) vendor/nginx-1.15.10/src/os/win32/ngx_wsarecv_chain.c (from vendor/nginx-1.15.8/src/os/win32/ngx_wsarecv_chain.c) vendor/nginx-1.15.10/src/os/win32/ngx_wsasend.c (from vendor/nginx-1.15.8/src/os/win32/ngx_wsasend.c) vendor/nginx-1.15.10/src/os/win32/ngx_wsasend_chain.c (from vendor/nginx-1.15.8/src/os/win32/ngx_wsasend_chain.c) vendor/nginx-1.15.10/src/stream/ngx_stream.c (from vendor/nginx-1.15.8/src/stream/ngx_stream.c) vendor/nginx-1.15.10/src/stream/ngx_stream.h (from vendor/nginx-1.15.8/src/stream/ngx_stream.h) vendor/nginx-1.15.10/src/stream/ngx_stream_access_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_access_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_core_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_core_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_geo_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_geo_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_geoip_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_geoip_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_handler.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_handler.c) vendor/nginx-1.15.10/src/stream/ngx_stream_limit_conn_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_limit_conn_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_log_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_log_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_map_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_map_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_proxy_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_proxy_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_realip_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_realip_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_return_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_return_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_script.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_script.c) vendor/nginx-1.15.10/src/stream/ngx_stream_script.h (from vendor/nginx-1.15.8/src/stream/ngx_stream_script.h) vendor/nginx-1.15.10/src/stream/ngx_stream_split_clients_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_split_clients_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_ssl_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_ssl_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_ssl_module.h (from vendor/nginx-1.15.8/src/stream/ngx_stream_ssl_module.h) vendor/nginx-1.15.10/src/stream/ngx_stream_ssl_preread_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_ssl_preread_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_upstream.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_upstream.c) vendor/nginx-1.15.10/src/stream/ngx_stream_upstream.h (from vendor/nginx-1.15.8/src/stream/ngx_stream_upstream.h) vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_hash_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_upstream_hash_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_least_conn_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_upstream_least_conn_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_random_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_upstream_random_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_round_robin.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_upstream_round_robin.c) vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_round_robin.h (from vendor/nginx-1.15.8/src/stream/ngx_stream_upstream_round_robin.h) vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_zone_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_upstream_zone_module.c) vendor/nginx-1.15.10/src/stream/ngx_stream_variables.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_variables.c) vendor/nginx-1.15.10/src/stream/ngx_stream_variables.h (from vendor/nginx-1.15.8/src/stream/ngx_stream_variables.h) vendor/nginx-1.15.10/src/stream/ngx_stream_write_filter_module.c (from vendor/nginx-1.15.8/src/stream/ngx_stream_write_filter_module.c) Modified: nginx_version (+1 -1) =================================================================== --- nginx_version 2019-03-25 12:44:08 +0900 (98e863cdf) +++ nginx_version 2019-03-27 11:40:45 +0900 (fcf38d94d) @@ -1 +1 @@ -1.15.8 +1.15.10 Renamed: vendor/nginx-1.15.10/auto/cc/acc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/ccc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/clang (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/gcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/icc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/name (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/cc/sunc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/configure (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/define (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/endianness (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/feature (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/have (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/have_headers (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/headers (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/include (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/init (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/install (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/geoip/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/google-perftools/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/libatomic/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/libatomic/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/libgd/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/libxslt/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/openssl/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/openssl/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/openssl/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/openssl/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/pcre/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/pcre/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/pcre/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/pcre/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/pcre/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/perl/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/perl/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/zlib/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/zlib/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/zlib/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/zlib/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/lib/zlib/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/make (+1 -1) 99% =================================================================== --- vendor/nginx-1.15.8/auto/make 2019-03-25 12:44:08 +0900 (7ddd1007b) +++ vendor/nginx-1.15.10/auto/make 2019-03-27 11:40:45 +0900 (34c40cdd5) @@ -229,7 +229,7 @@ build: binary modules manpage binary: $NGX_OBJS${ngx_dirsep}nginx$ngx_binext $NGX_OBJS${ngx_dirsep}nginx$ngx_binext: $ngx_deps$ngx_spacer - \$(LINK) $ngx_long_start$ngx_binout$NGX_OBJS${ngx_dirsep}nginx$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_main_link + \$(LINK) $ngx_long_start$ngx_binout$NGX_OBJS${ngx_dirsep}nginx$ngx_binext$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_main_link $ngx_rcc $ngx_long_end Renamed: vendor/nginx-1.15.10/auto/module (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/modules (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/nohave (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/options (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/os/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/os/darwin (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/os/freebsd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/os/linux (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/os/solaris (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/os/win32 (+2 -6) 84% =================================================================== --- vendor/nginx-1.15.8/auto/os/win32 2019-03-25 12:44:08 +0900 (7a8277496) +++ vendor/nginx-1.15.10/auto/os/win32 2019-03-27 11:40:45 +0900 (b821ae6d8) @@ -11,6 +11,7 @@ CORE_SRCS="$WIN32_SRCS $IOCP_SRCS" OS_CONFIG="$WIN32_CONFIG" NGX_ICONS="$NGX_WIN32_ICONS" SELECT_SRCS=$WIN32_SELECT_SRCS +POLL_SRCS=$WIN32_POLL_SRCS ngx_pic_opt= ngx_binext=".exe" @@ -31,12 +32,7 @@ case "$NGX_CC_NAME" in esac EVENT_MODULES="$EVENT_MODULES $IOCP_MODULE" -EVENT_FOUND=YES - -if [ $EVENT_SELECT = NO ]; then - CORE_SRCS="$CORE_SRCS $SELECT_SRCS" - EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE" -fi +#EVENT_FOUND=YES have=NGX_HAVE_INET6 . auto/have Renamed: vendor/nginx-1.15.10/auto/sources (+1 -0) 99% =================================================================== --- vendor/nginx-1.15.8/auto/sources 2019-03-25 12:44:08 +0900 (9b425063e) +++ vendor/nginx-1.15.10/auto/sources 2019-03-27 11:40:45 +0900 (3dad11132) @@ -106,6 +106,7 @@ WIN32_SELECT_SRCS=src/event/modules/ngx_win32_select_module.c POLL_MODULE=ngx_poll_module POLL_SRCS=src/event/modules/ngx_poll_module.c +WIN32_POLL_SRCS=src/event/modules/ngx_win32_poll_module.c KQUEUE_MODULE=ngx_kqueue_module KQUEUE_SRCS=src/event/modules/ngx_kqueue_module.c Renamed: vendor/nginx-1.15.10/auto/stubs (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/summary (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/threads (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/types/sizeof (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/types/typedef (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/types/uintptr_t (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/types/value (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/auto/unix (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/conf/fastcgi.conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/conf/fastcgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/conf/koi-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/conf/koi-win (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/conf/mime.types (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/conf/nginx.conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/conf/scgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/conf/uwsgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/conf/win-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/contrib/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/contrib/geo2nginx.pl (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/contrib/unicode2nginx/koi-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/contrib/unicode2nginx/unicode-to-nginx.pl (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/contrib/unicode2nginx/win-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/contrib/vim/ftdetect/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/contrib/vim/ftplugin/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/contrib/vim/indent/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/contrib/vim/syntax/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/GNUmakefile (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/dtd/change_log_conf.dtd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/dtd/changes.dtd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/html/50x.html (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/html/index.html (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/man/nginx.8 (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/text/LICENSE (+2 -2) 94% =================================================================== --- vendor/nginx-1.15.8/docs/text/LICENSE 2019-03-25 12:44:08 +0900 (9401174e1) +++ vendor/nginx-1.15.10/docs/text/LICENSE 2019-03-27 11:40:45 +0900 (c63e0ba4e) @@ -1,6 +1,6 @@ /* - * Copyright (C) 2002-2018 Igor Sysoev - * Copyright (C) 2011-2018 Nginx, Inc. + * Copyright (C) 2002-2019 Igor Sysoev + * Copyright (C) 2011-2019 Nginx, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Renamed: vendor/nginx-1.15.10/docs/text/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/xml/change_log_conf.xml (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/xml/nginx/changes.xml (+113 -0) 99% =================================================================== --- vendor/nginx-1.15.8/docs/xml/nginx/changes.xml 2019-03-25 12:44:08 +0900 (4c471d83f) +++ vendor/nginx-1.15.10/docs/xml/nginx/changes.xml 2019-03-27 11:40:45 +0900 (de93e329b) @@ -5,6 +5,119 @@ <change_log title="nginx"> +<changes ver="1.15.10" date="2019-03-26"> + +<change type="change"> +<para lang="ru"> +теперь при использовании имени хоста в директиве listen +nginx создаёт listen-сокеты для всех адресов, +соответствующих этому имени +(ранее использовался только первый адрес). +</para> +<para lang="en"> +when using a hostname in the "listen" directive +nginx now creates listening sockets +for all addresses the hostname resolves to +(previously, only the first address was used). +</para> +</change> + +<change type="feature"> +<para lang="ru"> +диапазоны портов в директиве listen. +</para> +<para lang="en"> +port ranges in the "listen" directive. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +возможность загрузки SSL-сертификатов и секретных ключей из переменных. +</para> +<para lang="en"> +loading of SSL certificates and secret keys from variables. +</para> +</change> + +<change type="workaround"> +<para lang="ru"> +переменная $ssl_server_name могла быть пустой +при использовании OpenSSL 1.1.1. +</para> +<para lang="en"> +the $ssl_server_name variable might be empty +when using OpenSSL 1.1.1. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +nginx/Windows не собирался с Visual Studio 2015 и новее; +ошибка появилась в 1.15.9. +</para> +<para lang="en"> +nginx/Windows could not be built with Visual Studio 2015 or newer; +the bug had appeared in 1.15.9. +</para> +</change> + +</changes> + + +<changes ver="1.15.9" date="2019-02-26"> + +<change type="feature"> +<para lang="ru"> +директивы ssl_certificate и ssl_certificate_key +поддерживают переменные. +</para> +<para lang="en"> +variables support +in the "ssl_certificate" and "ssl_certificate_key" directives. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +метод poll теперь доступен на Windows +при использовании Windows Vista и новее. +</para> +<para lang="en"> +the "poll" method is now available on Windows +when using Windows Vista or newer. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +если при использовании метода select на Windows +происходила ошибка при установлении соединения с бэкендом, +nginx ожидал истечения таймаута на установление соединения. +</para> +<para lang="en"> +if the "select" method was used on Windows +and an error occurred while establishing a backend connection, +nginx waited for the connection establishment timeout to expire. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +директивы proxy_upload_rate и proxy_download_rate +в модуле stream +работали некорректно при проксировании UDP-пакетов. +</para> +<para lang="en"> +the "proxy_upload_rate" and "proxy_download_rate" directives +in the stream module +worked incorrectly when proxying UDP datagrams. +</para> +</change> + +</changes> + + <changes ver="1.15.8" date="2018-12-25"> <change type="feature"> Renamed: vendor/nginx-1.15.10/docs/xsls/changes.xsls (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/docs/xslt/changes.xslt (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/misc/GNUmakefile (+1 -2) 98% =================================================================== --- vendor/nginx-1.15.8/misc/GNUmakefile 2019-03-25 12:44:08 +0900 (d68ceca00) +++ vendor/nginx-1.15.10/misc/GNUmakefile 2019-03-27 11:40:45 +0900 (bf91174eb) @@ -6,7 +6,7 @@ TEMP = tmp CC = cl OBJS = objs.msvc8 -OPENSSL = openssl-1.0.2q +OPENSSL = openssl-1.1.1b ZLIB = zlib-1.2.11 PCRE = pcre-8.42 @@ -65,7 +65,6 @@ win32: --with-cc-opt=-DFD_SETSIZE=1024 \ --with-pcre=$(OBJS)/lib/$(PCRE) \ --with-zlib=$(OBJS)/lib/$(ZLIB) \ - --with-select_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ Renamed: vendor/nginx-1.15.10/misc/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/nginx.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/nginx.h (+2 -2) 84% =================================================================== --- vendor/nginx-1.15.8/src/core/nginx.h 2019-03-25 12:44:08 +0900 (5e2c5a88f) +++ vendor/nginx-1.15.10/src/core/nginx.h 2019-03-27 11:40:45 +0900 (ad1a3b2b0) @@ -9,8 +9,8 @@ #define _NGINX_H_INCLUDED_ -#define nginx_version 1015008 -#define NGINX_VERSION "1.15.8" +#define nginx_version 1015010 +#define NGINX_VERSION "1.15.10" #define NGINX_VER "nginx/" NGINX_VERSION #ifdef NGX_BUILD Renamed: vendor/nginx-1.15.10/src/core/ngx_array.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_array.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_buf.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_buf.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_conf_file.c (+1 -1) 99% =================================================================== --- vendor/nginx-1.15.8/src/core/ngx_conf_file.c 2019-03-25 12:44:08 +0900 (e92cd33c9) +++ vendor/nginx-1.15.10/src/core/ngx_conf_file.c 2019-03-27 11:40:45 +0900 (6d1629e9b) @@ -310,7 +310,7 @@ ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename) goto failed; } - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, rv); + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "%s", rv); goto failed; } Renamed: vendor/nginx-1.15.10/src/core/ngx_conf_file.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_connection.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_connection.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_core.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_cpuinfo.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_crc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_crc32.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_crc32.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_crypt.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_crypt.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_file.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_file.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_hash.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_hash.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_inet.c (+218 -220) 82% =================================================================== --- vendor/nginx-1.15.8/src/core/ngx_inet.c 2019-03-25 12:44:08 +0900 (db48b93c1) +++ vendor/nginx-1.15.10/src/core/ngx_inet.c 2019-03-27 11:40:45 +0900 (4228504ad) @@ -12,6 +12,8 @@ static ngx_int_t ngx_parse_unix_domain_url(ngx_pool_t *pool, ngx_url_t *u); static ngx_int_t ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u); static ngx_int_t ngx_parse_inet6_url(ngx_pool_t *pool, ngx_url_t *u); +static ngx_int_t ngx_inet_add_addr(ngx_pool_t *pool, ngx_url_t *u, + struct sockaddr *sockaddr, socklen_t socklen, ngx_uint_t total); in_addr_t @@ -780,13 +782,10 @@ ngx_parse_unix_domain_url(ngx_pool_t *pool, ngx_url_t *u) static ngx_int_t ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u) { - u_char *p, *host, *port, *last, *uri, *args; - size_t len; - ngx_int_t n; - struct sockaddr_in *sin; -#if (NGX_HAVE_INET6) - struct sockaddr_in6 *sin6; -#endif + u_char *host, *port, *last, *uri, *args, *dash; + size_t len; + ngx_int_t n; + struct sockaddr_in *sin; u->socklen = sizeof(struct sockaddr_in); sin = (struct sockaddr_in *) &u->sockaddr; @@ -831,6 +830,25 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u) len = last - port; + if (u->listen) { + dash = ngx_strlchr(port, last, '-'); + + if (dash) { + dash++; + + n = ngx_atoi(dash, last - dash); + + if (n < 1 || n > 65535) { + u->err = "invalid port"; + return NGX_ERROR; + } + + u->last_port = (in_port_t) n; + + len = dash - port - 1; + } + } + n = ngx_atoi(port, len); if (n < 1 || n > 65535) { @@ -838,10 +856,15 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u) return NGX_ERROR; } + if (u->last_port && n > u->last_port) { + u->err = "invalid port range"; + return NGX_ERROR; + } + u->port = (in_port_t) n; sin->sin_port = htons((in_port_t) n); - u->port_text.len = len; + u->port_text.len = last - port; u->port_text.data = port; last = port - 1; @@ -853,31 +876,69 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u) /* test value as port only */ - n = ngx_atoi(host, last - host); + len = last - host; + + dash = ngx_strlchr(host, last, '-'); + + if (dash) { + dash++; + + n = ngx_atoi(dash, last - dash); + + if (n == NGX_ERROR) { + goto no_port; + } + + if (n < 1 || n > 65535) { + u->err = "invalid port"; + + } else { + u->last_port = (in_port_t) n; + } + + len = dash - host - 1; + } + + n = ngx_atoi(host, len); if (n != NGX_ERROR) { + if (u->err) { + return NGX_ERROR; + } + if (n < 1 || n > 65535) { u->err = "invalid port"; return NGX_ERROR; } + if (u->last_port && n > u->last_port) { + u->err = "invalid port range"; + return NGX_ERROR; + } + u->port = (in_port_t) n; sin->sin_port = htons((in_port_t) n); + sin->sin_addr.s_addr = INADDR_ANY; u->port_text.len = last - host; u->port_text.data = host; u->wildcard = 1; - return NGX_OK; + return ngx_inet_add_addr(pool, u, &u->sockaddr.sockaddr, + u->socklen, 1); } } } +no_port: + + u->err = NULL; u->no_port = 1; u->port = u->default_port; sin->sin_port = htons(u->default_port); + u->last_port = 0; } len = last - host; @@ -893,7 +954,7 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u) if (u->listen && len == 1 && *host == '*') { sin->sin_addr.s_addr = INADDR_ANY; u->wildcard = 1; - return NGX_OK; + return ngx_inet_add_addr(pool, u, &u->sockaddr.sockaddr, u->socklen, 1); } sin->sin_addr.s_addr = ngx_inet_addr(host, len); @@ -904,33 +965,7 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u) u->wildcard = 1; } - u->naddrs = 1; - - u->addrs = ngx_pcalloc(pool, sizeof(ngx_addr_t)); - if (u->addrs == NULL) { - return NGX_ERROR; - } - - sin = ngx_pcalloc(pool, sizeof(struct sockaddr_in)); - if (sin == NULL) { - return NGX_ERROR; - } - - ngx_memcpy(sin, &u->sockaddr, sizeof(struct sockaddr_in)); - - u->addrs[0].sockaddr = (struct sockaddr *) sin; - u->addrs[0].socklen = sizeof(struct sockaddr_in); - - p = ngx_pnalloc(pool, u->host.len + sizeof(":65535") - 1); - if (p == NULL) { - return NGX_ERROR; - } - - u->addrs[0].name.len = ngx_sprintf(p, "%V:%d", - &u->host, u->port) - p; - u->addrs[0].name.data = p; - - return NGX_OK; + return ngx_inet_add_addr(pool, u, &u->sockaddr.sockaddr, u->socklen, 1); } if (u->no_resolve) { @@ -944,29 +979,7 @@ ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u) u->family = u->addrs[0].sockaddr->sa_family; u->socklen = u->addrs[0].socklen; ngx_memcpy(&u->sockaddr, u->addrs[0].sockaddr, u->addrs[0].socklen); - - switch (u->family) { - -#if (NGX_HAVE_INET6) - case AF_INET6: - sin6 = (struct sockaddr_in6 *) &u->sockaddr; - - if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { - u->wildcard = 1; - } - - break; -#endif - - default: /* AF_INET */ - sin = (struct sockaddr_in *) &u->sockaddr; - - if (sin->sin_addr.s_addr == INADDR_ANY) { - u->wildcard = 1; - } - - break; - } + u->wildcard = ngx_inet_wildcard(&u->sockaddr.sockaddr); return NGX_OK; } @@ -976,7 +989,7 @@ static ngx_int_t ngx_parse_inet6_url(ngx_pool_t *pool, ngx_url_t *u) { #if (NGX_HAVE_INET6) - u_char *p, *host, *port, *last, *uri; + u_char *p, *host, *port, *last, *uri, *dash; size_t len; ngx_int_t n; struct sockaddr_in6 *sin6; @@ -1022,6 +1035,25 @@ ngx_parse_inet6_url(ngx_pool_t *pool, ngx_url_t *u) len = last - port; + if (u->listen) { + dash = ngx_strlchr(port, last, '-'); + + if (dash) { + dash++; + + n = ngx_atoi(dash, last - dash); + + if (n < 1 || n > 65535) { + u->err = "invalid port"; + return NGX_ERROR; + } + + u->last_port = (in_port_t) n; + + len = dash - port - 1; + } + } + n = ngx_atoi(port, len); if (n < 1 || n > 65535) { @@ -1029,10 +1061,15 @@ ngx_parse_inet6_url(ngx_pool_t *pool, ngx_url_t *u) return NGX_ERROR; } + if (u->last_port && n > u->last_port) { + u->err = "invalid port range"; + return NGX_ERROR; + } + u->port = (in_port_t) n; sin6->sin6_port = htons((in_port_t) n); - u->port_text.len = len; + u->port_text.len = last - port; u->port_text.data = port; } else { @@ -1061,33 +1098,8 @@ ngx_parse_inet6_url(ngx_pool_t *pool, ngx_url_t *u) } u->family = AF_INET6; - u->naddrs = 1; - - u->addrs = ngx_pcalloc(pool, sizeof(ngx_addr_t)); - if (u->addrs == NULL) { - return NGX_ERROR; - } - - sin6 = ngx_pcalloc(pool, sizeof(struct sockaddr_in6)); - if (sin6 == NULL) { - return NGX_ERROR; - } - - ngx_memcpy(sin6, &u->sockaddr, sizeof(struct sockaddr_in6)); - - u->addrs[0].sockaddr = (struct sockaddr *) sin6; - u->addrs[0].socklen = sizeof(struct sockaddr_in6); - - p = ngx_pnalloc(pool, u->host.len + sizeof(":65535") - 1); - if (p == NULL) { - return NGX_ERROR; - } - u->addrs[0].name.len = ngx_sprintf(p, "%V:%d", - &u->host, u->port) - p; - u->addrs[0].name.data = p; - - return NGX_OK; + return ngx_inet_add_addr(pool, u, &u->sockaddr.sockaddr, u->socklen, 1); #else @@ -1104,15 +1116,9 @@ ngx_parse_inet6_url(ngx_pool_t *pool, ngx_url_t *u) ngx_int_t ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u) { - u_char *p, *host; - size_t len; - in_port_t port; - ngx_uint_t i; - struct addrinfo hints, *res, *rp; - struct sockaddr_in *sin; - struct sockaddr_in6 *sin6; - - port = htons(u->port); + u_char *host; + ngx_uint_t n; + struct addrinfo hints, *res, *rp; host = ngx_alloc(u->host.len + 1, pool->log); if (host == NULL) { @@ -1136,7 +1142,7 @@ ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u) ngx_free(host); - for (i = 0, rp = res; rp != NULL; rp = rp->ai_next) { + for (n = 0, rp = res; rp != NULL; rp = rp->ai_next) { switch (rp->ai_family) { @@ -1148,92 +1154,33 @@ ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u) continue; } - i++; + n++; } - if (i == 0) { + if (n == 0) { u->err = "host not found"; goto failed; } /* MP: ngx_shared_palloc() */ - u->addrs = ngx_pcalloc(pool, i * sizeof(ngx_addr_t)); - if (u->addrs == NULL) { - goto failed; - } - - u->naddrs = i; - - i = 0; - - /* AF_INET addresses first */ - for (rp = res; rp != NULL; rp = rp->ai_next) { - if (rp->ai_family != AF_INET) { - continue; - } - - sin = ngx_pcalloc(pool, rp->ai_addrlen); - if (sin == NULL) { - goto failed; - } - - ngx_memcpy(sin, rp->ai_addr, rp->ai_addrlen); - - sin->sin_port = port; - - u->addrs[i].sockaddr = (struct sockaddr *) sin; - u->addrs[i].socklen = rp->ai_addrlen; - - len = NGX_INET_ADDRSTRLEN + sizeof(":65535") - 1; - - p = ngx_pnalloc(pool, len); - if (p == NULL) { - goto failed; - } - - len = ngx_sock_ntop((struct sockaddr *) sin, rp->ai_addrlen, p, len, 1); - - u->addrs[i].name.len = len; - u->addrs[i].name.data = p; - - i++; - } + switch (rp->ai_family) { - for (rp = res; rp != NULL; rp = rp->ai_next) { + case AF_INET: + case AF_INET6: + break; - if (rp->ai_family != AF_INET6) { + default: continue; } - sin6 = ngx_pcalloc(pool, rp->ai_addrlen); - if (sin6 == NULL) { - goto failed; - } - - ngx_memcpy(sin6, rp->ai_addr, rp->ai_addrlen); - - sin6->sin6_port = port; - - u->addrs[i].sockaddr = (struct sockaddr *) sin6; - u->addrs[i].socklen = rp->ai_addrlen; - - len = NGX_INET6_ADDRSTRLEN + sizeof("[]:65535") - 1; - - p = ngx_pnalloc(pool, len); - if (p == NULL) { + if (ngx_inet_add_addr(pool, u, rp->ai_addr, rp->ai_addrlen, n) + != NGX_OK) + { goto failed; } - - len = ngx_sock_ntop((struct sockaddr *) sin6, rp->ai_addrlen, p, - len, 1); - - u->addrs[i].name.len = len; - u->addrs[i].name.data = p; - - i++; } freeaddrinfo(res); @@ -1250,21 +1197,19 @@ failed: ngx_int_t ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u) { - u_char *p, *host; - size_t len; - in_port_t port; - in_addr_t in_addr; - ngx_uint_t i; + u_char *host; + ngx_uint_t i, n; struct hostent *h; - struct sockaddr_in *sin; + struct sockaddr_in sin; /* AF_INET only */ - port = htons(u->port); + ngx_memzero(&sin, sizeof(struct sockaddr_in)); - in_addr = ngx_inet_addr(u->host.data, u->host.len); + sin.sin_family = AF_INET; + sin.sin_addr.s_addr = ngx_inet_addr(u->host.data, u->host.len); - if (in_addr == INADDR_NONE) { + if (sin.sin_addr.s_addr == INADDR_NONE) { host = ngx_alloc(u->host.len + 1, pool->log); if (host == NULL) { return NGX_ERROR; @@ -1281,83 +1226,99 @@ ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u) return NGX_ERROR; } - for (i = 0; h->h_addr_list[i] != NULL; i++) { /* void */ } + for (n = 0; h->h_addr_list[n] != NULL; n++) { /* void */ } /* MP: ngx_shared_palloc() */ - u->addrs = ngx_pcalloc(pool, i * sizeof(ngx_addr_t)); - if (u->addrs == NULL) { - return NGX_ERROR; - } - - u->naddrs = i; + for (i = 0; i < n; i++) { + sin.sin_addr.s_addr = *(in_addr_t *) (h->h_addr_list[i]); - for (i = 0; i < u->naddrs; i++) { - - sin = ngx_pcalloc(pool, sizeof(struct sockaddr_in)); - if (sin == NULL) { + if (ngx_inet_add_addr(pool, u, (struct sockaddr *) &sin, + sizeof(struct sockaddr_in), n) + != NGX_OK) + { return NGX_ERROR; } + } - sin->sin_family = AF_INET; - sin->sin_port = port; - sin->sin_addr.s_addr = *(in_addr_t *) (h->h_addr_list[i]); + } else { - u->addrs[i].sockaddr = (struct sockaddr *) sin; - u->addrs[i].socklen = sizeof(struct sockaddr_in); + /* MP: ngx_shared_palloc() */ - len = NGX_INET_ADDRSTRLEN + sizeof(":65535") - 1; + if (ngx_inet_add_addr(pool, u, (struct sockaddr *) &sin, + sizeof(struct sockaddr_in), 1) + != NGX_OK) + { + return NGX_ERROR; + } + } - p = ngx_pnalloc(pool, len); - if (p == NULL) { - return NGX_ERROR; - } + return NGX_OK; +} - len = ngx_sock_ntop((struct sockaddr *) sin, - sizeof(struct sockaddr_in), p, len, 1); +#endif /* NGX_HAVE_GETADDRINFO && NGX_HAVE_INET6 */ - u->addrs[i].name.len = len; - u->addrs[i].name.data = p; - } - } else { +static ngx_int_t +ngx_inet_add_addr(ngx_pool_t *pool, ngx_url_t *u, struct sockaddr *sockaddr, + socklen_t socklen, ngx_uint_t total) +{ + u_char *p; + size_t len; + ngx_uint_t i, nports; + ngx_addr_t *addr; + struct sockaddr *sa; - /* MP: ngx_shared_palloc() */ + nports = u->last_port ? u->last_port - u->port + 1 : 1; - u->addrs = ngx_pcalloc(pool, sizeof(ngx_addr_t)); + if (u->addrs == NULL) { + u->addrs = ngx_palloc(pool, total * nports * sizeof(ngx_addr_t)); if (u->addrs == NULL) { return NGX_ERROR; } + } - sin = ngx_pcalloc(pool, sizeof(struct sockaddr_in)); - if (sin == NULL) { + for (i = 0; i < nports; i++) { + sa = ngx_pcalloc(pool, socklen); + if (sa == NULL) { return NGX_ERROR; } - u->naddrs = 1; + ngx_memcpy(sa, sockaddr, socklen); - sin->sin_family = AF_INET; - sin->sin_port = port; - sin->sin_addr.s_addr = in_addr; + ngx_inet_set_port(sa, u->port + i); - u->addrs[0].sockaddr = (struct sockaddr *) sin; - u->addrs[0].socklen = sizeof(struct sockaddr_in); + switch (sa->sa_family) { + +#if (NGX_HAVE_INET6) + case AF_INET6: + len = NGX_INET6_ADDRSTRLEN + sizeof("[]:65536") - 1; + break; +#endif - p = ngx_pnalloc(pool, u->host.len + sizeof(":65535") - 1); + default: /* AF_INET */ + len = NGX_INET_ADDRSTRLEN + sizeof(":65535") - 1; + } + + p = ngx_pnalloc(pool, len); if (p == NULL) { return NGX_ERROR; } - u->addrs[0].name.len = ngx_sprintf(p, "%V:%d", - &u->host, ntohs(port)) - p; - u->addrs[0].name.data = p; + len = ngx_sock_ntop(sa, socklen, p, len, 1); + + addr = &u->addrs[u->naddrs++]; + + addr->sockaddr = sa; + addr->socklen = socklen; + + addr->name.len = len; + addr->name.data = p; } return NGX_OK; } -#endif /* NGX_HAVE_GETADDRINFO && NGX_HAVE_INET6 */ - ngx_int_t ngx_cmp_sockaddr(struct sockaddr *sa1, socklen_t slen1, @@ -1495,3 +1456,40 @@ ngx_inet_set_port(struct sockaddr *sa, in_port_t port) break; } } + + +ngx_uint_t +ngx_inet_wildcard(struct sockaddr *sa) +{ + struct sockaddr_in *sin; +#if (NGX_HAVE_INET6) + struct sockaddr_in6 *sin6; +#endif + + switch (sa->sa_family) { + + case AF_INET: + sin = (struct sockaddr_in *) sa; + + if (sin->sin_addr.s_addr == INADDR_ANY) { + return 1; + } + + break; + +#if (NGX_HAVE_INET6) + + case AF_INET6: + sin6 = (struct sockaddr_in6 *) sa; + + if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { + return 1; + } + + break; + +#endif + } + + return 0; +} Renamed: vendor/nginx-1.15.10/src/core/ngx_inet.h (+2 -0) 97% =================================================================== --- vendor/nginx-1.15.8/src/core/ngx_inet.h 2019-03-25 12:44:08 +0900 (a3b392ee7) +++ vendor/nginx-1.15.10/src/core/ngx_inet.h 2019-03-27 11:40:45 +0900 (19050fc75) @@ -86,6 +86,7 @@ typedef struct { in_port_t port; in_port_t default_port; + in_port_t last_port; int family; unsigned listen:1; @@ -125,6 +126,7 @@ ngx_int_t ngx_cmp_sockaddr(struct sockaddr *sa1, socklen_t slen1, struct sockaddr *sa2, socklen_t slen2, ngx_uint_t cmp_port); in_port_t ngx_inet_get_port(struct sockaddr *sa); void ngx_inet_set_port(struct sockaddr *sa, in_port_t port); +ngx_uint_t ngx_inet_wildcard(struct sockaddr *sa); #endif /* _NGX_INET_H_INCLUDED_ */ Renamed: vendor/nginx-1.15.10/src/core/ngx_list.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_list.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_log.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_log.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_md5.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_md5.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_murmurhash.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_murmurhash.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_open_file_cache.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_open_file_cache.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_output_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_palloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_palloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_parse.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_parse_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_parse_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_proxy_protocol.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_proxy_protocol.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_queue.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_queue.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_radix_tree.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_radix_tree.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_rbtree.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_rbtree.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_regex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_regex.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_resolver.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_resolver.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_rwlock.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_rwlock.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_sha1.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_sha1.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_shmtx.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_shmtx.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_slab.c (+1 -2) 99% =================================================================== --- vendor/nginx-1.15.8/src/core/ngx_slab.c 2019-03-25 12:44:08 +0900 (402387053) +++ vendor/nginx-1.15.10/src/core/ngx_slab.c 2019-03-27 11:40:45 +0900 (b8577ce75) @@ -635,10 +635,9 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p) goto fail; } - n = ((u_char *) p - pool->start) >> ngx_pagesize_shift; size = slab & ~NGX_SLAB_PAGE_START; - ngx_slab_free_pages(pool, &pool->pages[n], size); + ngx_slab_free_pages(pool, page, size); ngx_slab_junk(p, size << ngx_pagesize_shift); Renamed: vendor/nginx-1.15.10/src/core/ngx_slab.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_spinlock.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_string.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_string.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_syslog.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_syslog.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_thread_pool.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_thread_pool.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_times.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/core/ngx_times.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/modules/ngx_devpoll_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/modules/ngx_epoll_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/modules/ngx_eventport_module.c (+0 -2) 99% =================================================================== --- vendor/nginx-1.15.8/src/event/modules/ngx_eventport_module.c 2019-03-25 12:44:08 +0900 (01cfc97ea) +++ vendor/nginx-1.15.10/src/event/modules/ngx_eventport_module.c 2019-03-27 11:40:45 +0900 (11ad0934e) @@ -250,9 +250,7 @@ ngx_eventport_init(ngx_cycle_t *cycle, ngx_msec_t timer) ngx_memzero(&sev, sizeof(struct sigevent)); sev.sigev_notify = SIGEV_PORT; -#if !(NGX_TEST_BUILD_EVENTPORT) sev.sigev_value.sival_ptr = &pn; -#endif if (timer_create(CLOCK_REALTIME, &sev, &event_timer) == -1) { ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, Renamed: vendor/nginx-1.15.10/src/event/modules/ngx_iocp_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/modules/ngx_iocp_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/modules/ngx_kqueue_module.c (+0 -0) 100% =================================================================== Copied: vendor/nginx-1.15.10/src/event/modules/ngx_poll_module.c (+1 -1) 99% =================================================================== --- vendor/nginx-1.15.8/src/event/modules/ngx_poll_module.c 2019-03-25 12:44:08 +0900 (4e03dabf2) +++ vendor/nginx-1.15.10/src/event/modules/ngx_poll_module.c 2019-03-27 11:40:45 +0900 (b46ab538a) @@ -84,7 +84,7 @@ ngx_poll_init(ngx_cycle_t *cycle, ngx_msec_t timer) } if (event_list) { - ngx_memcpy(list, event_list, sizeof(ngx_event_t *) * nevents); + ngx_memcpy(list, event_list, sizeof(struct pollfd) * nevents); ngx_free(event_list); } Renamed: vendor/nginx-1.15.10/src/event/modules/ngx_select_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/modules/ngx_win32_poll_module.c (+48 -28) 86% =================================================================== --- vendor/nginx-1.15.8/src/event/modules/ngx_poll_module.c 2019-03-25 12:44:08 +0900 (4e03dabf2) +++ vendor/nginx-1.15.10/src/event/modules/ngx_win32_poll_module.c 2019-03-27 11:40:45 +0900 (9fe867f79) @@ -1,6 +1,7 @@ /* * Copyright (C) Igor Sysoev + * Copyright (C) Maxim Dounin * Copyright (C) Nginx, Inc. */ @@ -21,8 +22,9 @@ static ngx_int_t ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, static char *ngx_poll_init_conf(ngx_cycle_t *cycle, void *conf); -static struct pollfd *event_list; -static ngx_uint_t nevents; +static struct pollfd *event_list; +static ngx_connection_t **event_index; +static ngx_uint_t nevents; static ngx_str_t poll_name = ngx_string("poll"); @@ -67,7 +69,8 @@ ngx_module_t ngx_poll_module = { static ngx_int_t ngx_poll_init(ngx_cycle_t *cycle, ngx_msec_t timer) { - struct pollfd *list; + struct pollfd *list; + ngx_connection_t **index; if (event_list == NULL) { nevents = 0; @@ -84,18 +87,32 @@ ngx_poll_init(ngx_cycle_t *cycle, ngx_msec_t timer) } if (event_list) { - ngx_memcpy(list, event_list, sizeof(ngx_event_t *) * nevents); + ngx_memcpy(list, event_list, sizeof(struct pollfd) * nevents); ngx_free(event_list); } event_list = list; + + index = ngx_alloc(sizeof(ngx_connection_t *) * cycle->connection_n, + cycle->log); + if (index == NULL) { + return NGX_ERROR; + } + + if (event_index) { + ngx_memcpy(index, event_index, + sizeof(ngx_connection_t *) * nevents); + ngx_free(event_index); + } + + event_index = index; } ngx_io = ngx_os_io; ngx_event_actions = ngx_poll_module_ctx.actions; - ngx_event_flags = NGX_USE_LEVEL_EVENT|NGX_USE_FD_EVENT; + ngx_event_flags = NGX_USE_LEVEL_EVENT; return NGX_OK; } @@ -105,8 +122,10 @@ static void ngx_poll_done(ngx_cycle_t *cycle) { ngx_free(event_list); + ngx_free(event_index); event_list = NULL; + event_index = NULL; } @@ -143,10 +162,13 @@ ngx_poll_add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags) "poll add event: fd:%d ev:%i", c->fd, event); if (e == NULL || e->index == NGX_INVALID_INDEX) { + event_list[nevents].fd = c->fd; event_list[nevents].events = (short) event; event_list[nevents].revents = 0; + event_index[nevents] = c; + ev->index = nevents; nevents++; @@ -204,10 +226,11 @@ ngx_poll_del_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags) "index: copy event %ui to %i", nevents, ev->index); event_list[ev->index] = event_list[nevents]; + event_index[ev->index] = event_index[nevents]; - c = ngx_cycle->files[event_list[nevents].fd]; + c = event_index[ev->index]; - if (c->fd == -1) { + if (c->fd == (ngx_socket_t) -1) { ngx_log_error(NGX_LOG_ALERT, ev->log, 0, "unexpected last event"); @@ -240,7 +263,7 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) { int ready, revents; ngx_err_t err; - ngx_uint_t i, found, level; + ngx_uint_t i, found; ngx_event_t *ev; ngx_queue_t *queue; ngx_connection_t *c; @@ -259,7 +282,7 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "poll timer: %M", timer); - ready = poll(event_list, (u_int) nevents, (int) timer); + ready = WSAPoll(event_list, (u_int) nevents, (int) timer); err = (ready == -1) ? ngx_errno : 0; @@ -271,20 +294,7 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) "poll ready %d of %ui", ready, nevents); if (err) { - if (err == NGX_EINTR) { - - if (ngx_event_timer_alarm) { - ngx_event_timer_alarm = 0; - return NGX_OK; - } - - level = NGX_LOG_INFO; - - } else { - level = NGX_LOG_ALERT; - } - - ngx_log_error(level, cycle->log, err, "poll() failed"); + ngx_log_error(NGX_LOG_ALERT, cycle->log, err, "WSAPoll() failed"); return NGX_ERROR; } @@ -294,7 +304,7 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) } ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, - "poll() returned no events without timeout"); + "WSAPoll() returned no events without timeout"); return NGX_ERROR; } @@ -326,7 +336,7 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) event_list[i].fd, event_list[i].events, revents); } - if (event_list[i].fd == -1) { + if (event_list[i].fd == (ngx_socket_t) -1) { /* * the disabled event, a workaround for our possible bug, * see the comment below @@ -334,9 +344,9 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) continue; } - c = ngx_cycle->files[event_list[i].fd]; + c = event_index[i]; - if (c->fd == -1) { + if (c->fd == (ngx_socket_t) -1) { ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "unexpected event"); /* @@ -347,7 +357,7 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) if (i == nevents - 1) { nevents--; } else { - event_list[i].fd = -1; + event_list[i].fd = (ngx_socket_t) -1; } continue; @@ -411,5 +421,15 @@ ngx_poll_init_conf(ngx_cycle_t *cycle, void *conf) return NGX_CONF_OK; } +#if (NGX_LOAD_WSAPOLL) + + if (!ngx_have_wsapoll) { + ngx_log_error(NGX_LOG_EMERG, cycle->log, 0, + "poll is not available on this platform"); + return NGX_CONF_ERROR; + } + +#endif + return NGX_CONF_OK; } Renamed: vendor/nginx-1.15.10/src/event/modules/ngx_win32_select_module.c (+13 -4) 95% =================================================================== --- vendor/nginx-1.15.8/src/event/modules/ngx_win32_select_module.c 2019-03-25 12:44:08 +0900 (a98a83f28) +++ vendor/nginx-1.15.10/src/event/modules/ngx_win32_select_module.c 2019-03-27 11:40:45 +0900 (8093a600b) @@ -26,6 +26,7 @@ static fd_set master_read_fd_set; static fd_set master_write_fd_set; static fd_set work_read_fd_set; static fd_set work_write_fd_set; +static fd_set work_except_fd_set; static ngx_uint_t max_read; static ngx_uint_t max_write; @@ -251,9 +252,11 @@ ngx_select_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, work_read_fd_set = master_read_fd_set; work_write_fd_set = master_write_fd_set; + work_except_fd_set = master_write_fd_set; if (max_read || max_write) { - ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp); + ready = select(0, &work_read_fd_set, &work_write_fd_set, + &work_except_fd_set, tp); } else { @@ -306,14 +309,20 @@ ngx_select_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, if (ev->write) { if (FD_ISSET(c->fd, &work_write_fd_set)) { - found = 1; + found++; ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "select write %d", c->fd); } + if (FD_ISSET(c->fd, &work_except_fd_set)) { + found++; + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, + "select except %d", c->fd); + } + } else { if (FD_ISSET(c->fd, &work_read_fd_set)) { - found = 1; + found++; ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "select read %d", c->fd); } @@ -327,7 +336,7 @@ ngx_select_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_post_event(ev, queue); - nready++; + nready += found; } } Renamed: vendor/nginx-1.15.10/src/event/ngx_event.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_accept.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_acceptex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_connect.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_connect.h (+1 -0) 97% =================================================================== --- vendor/nginx-1.15.8/src/event/ngx_event_connect.h 2019-03-25 12:44:08 +0900 (7253ebb04) +++ vendor/nginx-1.15.10/src/event/ngx_event_connect.h 2019-03-27 11:40:45 +0900 (d3b23782e) @@ -63,6 +63,7 @@ struct ngx_peer_connection_s { unsigned cached:1; unsigned transparent:1; unsigned so_keepalive:1; + unsigned down:1; /* ngx_connection_log_error_e */ unsigned log_error:2; Renamed: vendor/nginx-1.15.10/src/event/ngx_event_connectex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_openssl.c (+442 -136) 90% =================================================================== --- vendor/nginx-1.15.8/src/event/ngx_event_openssl.c 2019-03-25 12:44:08 +0900 (37a4b72b6) +++ vendor/nginx-1.15.10/src/event/ngx_event_openssl.c 2019-03-27 11:40:45 +0900 (bee264c9f) @@ -18,6 +18,10 @@ typedef struct { } ngx_openssl_conf_t; +static X509 *ngx_ssl_load_certificate(ngx_pool_t *pool, char **err, + ngx_str_t *cert, STACK_OF(X509) **chain); +static EVP_PKEY *ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err, + ngx_str_t *key, ngx_array_t *passwords); static int ngx_ssl_password_callback(char *buf, int size, int rwflag, void *userdata); static int ngx_ssl_verify_callback(int ok, X509_STORE_CTX *x509_store); @@ -50,7 +54,7 @@ static void ngx_ssl_connection_error(ngx_connection_t *c, int sslerr, static void ngx_ssl_clear_error(ngx_log_t *log); static ngx_int_t ngx_ssl_session_id_context(ngx_ssl_t *ssl, - ngx_str_t *sess_ctx); + ngx_str_t *sess_ctx, ngx_array_t *certificates); static int ngx_ssl_new_session(ngx_ssl_conn_t *ssl_conn, ngx_ssl_session_t *sess); static ngx_ssl_session_t *ngx_ssl_get_cached_session(ngx_ssl_conn_t *ssl_conn, @@ -68,6 +72,7 @@ static void ngx_ssl_session_rbtree_insert_value(ngx_rbtree_node_t *temp, static int 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); +static void ngx_ssl_session_ticket_keys_cleanup(void *data); #endif #ifndef X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT @@ -363,6 +368,10 @@ ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data) SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_ANTI_REPLAY); #endif +#ifdef SSL_OP_NO_CLIENT_RENEGOTIATION + SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_CLIENT_RENEGOTIATION); +#endif + #ifdef SSL_MODE_RELEASE_BUFFERS SSL_CTX_set_mode(ssl->ctx, SSL_MODE_RELEASE_BUFFERS); #endif @@ -406,34 +415,19 @@ ngx_int_t ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, ngx_str_t *key, ngx_array_t *passwords) { - BIO *bio; - X509 *x509; - u_long n; - ngx_str_t *pwd; - ngx_uint_t tries; - - if (ngx_conf_full_name(cf->cycle, cert, 1) != NGX_OK) { - return NGX_ERROR; - } - - /* - * we can't use SSL_CTX_use_certificate_chain_file() as it doesn't - * allow to access certificate later from SSL_CTX, so we reimplement - * it here - */ + char *err; + X509 *x509; + EVP_PKEY *pkey; + STACK_OF(X509) *chain; - bio = BIO_new_file((char *) cert->data, "r"); - if (bio == NULL) { - ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "BIO_new_file(\"%s\") failed", cert->data); - return NGX_ERROR; - } - - x509 = PEM_read_bio_X509_AUX(bio, NULL, NULL, NULL); + x509 = ngx_ssl_load_certificate(cf->pool, &err, cert, &chain); if (x509 == NULL) { - ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "PEM_read_bio_X509_AUX(\"%s\") failed", cert->data); - BIO_free(bio); + if (err != NULL) { + ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, + "cannot load certificate \"%s\": %s", + cert->data, err); + } + return NGX_ERROR; } @@ -441,7 +435,7 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, "SSL_CTX_use_certificate(\"%s\") failed", cert->data); X509_free(x509); - BIO_free(bio); + sk_X509_pop_free(chain, X509_free); return NGX_ERROR; } @@ -450,7 +444,7 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, { ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, "X509_set_ex_data() failed"); X509_free(x509); - BIO_free(bio); + sk_X509_pop_free(chain, X509_free); return NGX_ERROR; } @@ -460,26 +454,211 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, { ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, "X509_set_ex_data() failed"); X509_free(x509); - BIO_free(bio); + sk_X509_pop_free(chain, X509_free); return NGX_ERROR; } - if (SSL_CTX_set_ex_data(ssl->ctx, ngx_ssl_certificate_index, x509) - == 0) - { + if (SSL_CTX_set_ex_data(ssl->ctx, ngx_ssl_certificate_index, x509) == 0) { ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, "SSL_CTX_set_ex_data() failed"); X509_free(x509); - BIO_free(bio); + sk_X509_pop_free(chain, X509_free); return NGX_ERROR; } - /* read rest of the chain */ + /* + * Note that x509 is not freed here, but will be instead freed in + * ngx_ssl_cleanup_ctx(). This is because we need to preserve all + * certificates to be able to iterate all of them through exdata + * (ngx_ssl_certificate_index, ngx_ssl_next_certificate_index), + * while OpenSSL can free a certificate if it is replaced with another + * certificate of the same type. + */ + +#ifdef SSL_CTX_set0_chain + + if (SSL_CTX_set0_chain(ssl->ctx, chain) == 0) { + ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, + "SSL_CTX_set0_chain(\"%s\") failed", cert->data); + sk_X509_pop_free(chain, X509_free); + return NGX_ERROR; + } + +#else + { + int n; + + /* SSL_CTX_set0_chain() is only available in OpenSSL 1.0.2+ */ + + n = sk_X509_num(chain); + + while (n--) { + x509 = sk_X509_shift(chain); + + if (SSL_CTX_add_extra_chain_cert(ssl->ctx, x509) == 0) { + ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, + "SSL_CTX_add_extra_chain_cert(\"%s\") failed", + cert->data); + sk_X509_pop_free(chain, X509_free); + return NGX_ERROR; + } + } + + sk_X509_free(chain); + } +#endif + + pkey = ngx_ssl_load_certificate_key(cf->pool, &err, key, passwords); + if (pkey == NULL) { + if (err != NULL) { + ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, + "cannot load certificate key \"%s\": %s", + key->data, err); + } + + return NGX_ERROR; + } + + if (SSL_CTX_use_PrivateKey(ssl->ctx, pkey) == 0) { + ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, + "SSL_CTX_use_PrivateKey(\"%s\") failed", key->data); + EVP_PKEY_free(pkey); + return NGX_ERROR; + } + + EVP_PKEY_free(pkey); + + return NGX_OK; +} + + +ngx_int_t +ngx_ssl_connection_certificate(ngx_connection_t *c, ngx_pool_t *pool, + ngx_str_t *cert, ngx_str_t *key, ngx_array_t *passwords) +{ + char *err; + X509 *x509; + EVP_PKEY *pkey; + STACK_OF(X509) *chain; + + x509 = ngx_ssl_load_certificate(pool, &err, cert, &chain); + if (x509 == NULL) { + if (err != NULL) { + ngx_ssl_error(NGX_LOG_ERR, c->log, 0, + "cannot load certificate \"%s\": %s", + cert->data, err); + } + + return NGX_ERROR; + } + + if (SSL_use_certificate(c->ssl->connection, x509) == 0) { + ngx_ssl_error(NGX_LOG_ERR, c->log, 0, + "SSL_use_certificate(\"%s\") failed", cert->data); + X509_free(x509); + sk_X509_pop_free(chain, X509_free); + return NGX_ERROR; + } + + X509_free(x509); + +#ifdef SSL_set0_chain + + /* + * SSL_set0_chain() is only available in OpenSSL 1.0.2+, + * but this function is only called via certificate callback, + * which is only available in OpenSSL 1.0.2+ as well + */ + + if (SSL_set0_chain(c->ssl->connection, chain) == 0) { + ngx_ssl_error(NGX_LOG_ERR, c->log, 0, + "SSL_set0_chain(\"%s\") failed", cert->data); + sk_X509_pop_free(chain, X509_free); + return NGX_ERROR; + } + +#endif + + pkey = ngx_ssl_load_certificate_key(pool, &err, key, passwords); + if (pkey == NULL) { + if (err != NULL) { + ngx_ssl_error(NGX_LOG_ERR, c->log, 0, + "cannot load certificate key \"%s\": %s", + key->data, err); + } + + return NGX_ERROR; + } + + if (SSL_use_PrivateKey(c->ssl->connection, pkey) == 0) { + ngx_ssl_error(NGX_LOG_ERR, c->log, 0, + "SSL_use_PrivateKey(\"%s\") failed", key->data); + EVP_PKEY_free(pkey); + return NGX_ERROR; + } + + EVP_PKEY_free(pkey); + + return NGX_OK; +} + + +static X509 * +ngx_ssl_load_certificate(ngx_pool_t *pool, char **err, ngx_str_t *cert, + STACK_OF(X509) **chain) +{ + BIO *bio; + X509 *x509, *temp; + u_long n; + + if (ngx_strncmp(cert->data, "data:", sizeof("data:") - 1) == 0) { + + bio = BIO_new_mem_buf(cert->data + sizeof("data:") - 1, + cert->len - (sizeof("data:") - 1)); + if (bio == NULL) { + *err = "BIO_new_mem_buf() failed"; + return NULL; + } + + } else { + + if (ngx_get_full_name(pool, (ngx_str_t *) &ngx_cycle->conf_prefix, cert) + != NGX_OK) + { + *err = NULL; + return NULL; + } + + bio = BIO_new_file((char *) cert->data, "r"); + if (bio == NULL) { + *err = "BIO_new_file() failed"; + return NULL; + } + } + + /* certificate itself */ + + x509 = PEM_read_bio_X509_AUX(bio, NULL, NULL, NULL); + if (x509 == NULL) { + *err = "PEM_read_bio_X509_AUX() failed"; + BIO_free(bio); + return NULL; + } + + /* rest of the chain */ + + *chain = sk_X509_new_null(); + if (*chain == NULL) { + *err = "sk_X509_new_null() failed"; + BIO_free(bio); + X509_free(x509); + return NULL; + } for ( ;; ) { - x509 = PEM_read_bio_X509(bio, NULL, NULL, NULL); - if (x509 == NULL) { + temp = PEM_read_bio_X509(bio, NULL, NULL, NULL); + if (temp == NULL) { n = ERR_peek_last_error(); if (ERR_GET_LIB(n) == ERR_LIB_PEM @@ -492,58 +671,51 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, /* some real error */ - ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "PEM_read_bio_X509(\"%s\") failed", cert->data); + *err = "PEM_read_bio_X509() failed"; BIO_free(bio); - return NGX_ERROR; - } - -#ifdef SSL_CTRL_CHAIN_CERT - - /* - * SSL_CTX_add0_chain_cert() is needed to add chain to - * a particular certificate when multiple certificates are used; - * only available in OpenSSL 1.0.2+ - */ - - if (SSL_CTX_add0_chain_cert(ssl->ctx, x509) == 0) { - ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "SSL_CTX_add0_chain_cert(\"%s\") failed", - cert->data); X509_free(x509); - BIO_free(bio); - return NGX_ERROR; + sk_X509_pop_free(*chain, X509_free); + return NULL; } -#else - if (SSL_CTX_add_extra_chain_cert(ssl->ctx, x509) == 0) { - ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "SSL_CTX_add_extra_chain_cert(\"%s\") failed", - cert->data); - X509_free(x509); + if (sk_X509_push(*chain, temp) == 0) { + *err = "sk_X509_push() failed"; BIO_free(bio); - return NGX_ERROR; + X509_free(x509); + sk_X509_pop_free(*chain, X509_free); + return NULL; } -#endif } BIO_free(bio); + return x509; +} + + +static EVP_PKEY * +ngx_ssl_load_certificate_key(ngx_pool_t *pool, char **err, + ngx_str_t *key, ngx_array_t *passwords) +{ + BIO *bio; + EVP_PKEY *pkey; + ngx_str_t *pwd; + ngx_uint_t tries; + pem_password_cb *cb; + if (ngx_strncmp(key->data, "engine:", sizeof("engine:") - 1) == 0) { #ifndef OPENSSL_NO_ENGINE - u_char *p, *last; - ENGINE *engine; - EVP_PKEY *pkey; + u_char *p, *last; + ENGINE *engine; p = key->data + sizeof("engine:") - 1; last = (u_char *) ngx_strchr(p, ':'); if (last == NULL) { - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "invalid syntax in \"%V\"", key); - return NGX_ERROR; + *err = "invalid syntax"; + return NULL; } *last = '\0'; @@ -551,9 +723,8 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, engine = ENGINE_by_id((char *) p); if (engine == NULL) { - ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "ENGINE_by_id(\"%s\") failed", p); - return NGX_ERROR; + *err = "ENGINE_by_id() failed"; + return NULL; } *last++ = ':'; @@ -561,76 +732,81 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, pkey = ENGINE_load_private_key(engine, (char *) last, 0, 0); if (pkey == NULL) { - ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "ENGINE_load_private_key(\"%s\") failed", last); + *err = "ENGINE_load_private_key() failed"; ENGINE_free(engine); - return NGX_ERROR; + return NULL; } ENGINE_free(engine); - if (SSL_CTX_use_PrivateKey(ssl->ctx, pkey) == 0) { - ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "SSL_CTX_use_PrivateKey(\"%s\") failed", last); - EVP_PKEY_free(pkey); - return NGX_ERROR; - } - - EVP_PKEY_free(pkey); - - return NGX_OK; + return pkey; #else - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "loading \"engine:...\" certificate keys " - "is not supported"); - return NGX_ERROR; + *err = "loading \"engine:...\" certificate keys is not supported"; + return NULL; #endif } - if (ngx_conf_full_name(cf->cycle, key, 1) != NGX_OK) { - return NGX_ERROR; + if (ngx_strncmp(key->data, "data:", sizeof("data:") - 1) == 0) { + + bio = BIO_new_mem_buf(key->data + sizeof("data:") - 1, + key->len - (sizeof("data:") - 1)); + if (bio == NULL) { + *err = "BIO_new_mem_buf() failed"; + return NULL; + } + + } else { + + if (ngx_get_full_name(pool, (ngx_str_t *) &ngx_cycle->conf_prefix, key) + != NGX_OK) + { + *err = NULL; + return NULL; + } + + bio = BIO_new_file((char *) key->data, "r"); + if (bio == NULL) { + *err = "BIO_new_file() failed"; + return NULL; + } } if (passwords) { tries = passwords->nelts; pwd = passwords->elts; - - SSL_CTX_set_default_passwd_cb(ssl->ctx, ngx_ssl_password_callback); - SSL_CTX_set_default_passwd_cb_userdata(ssl->ctx, pwd); + cb = ngx_ssl_password_callback; } else { tries = 1; -#if (NGX_SUPPRESS_WARN) pwd = NULL; -#endif + cb = NULL; } for ( ;; ) { - if (SSL_CTX_use_PrivateKey_file(ssl->ctx, (char *) key->data, - SSL_FILETYPE_PEM) - != 0) - { + pkey = PEM_read_bio_PrivateKey(bio, NULL, cb, pwd); + if (pkey != NULL) { break; } - if (--tries) { + if (tries-- > 1) { ERR_clear_error(); - SSL_CTX_set_default_passwd_cb_userdata(ssl->ctx, ++pwd); + (void) BIO_reset(bio); + pwd++; continue; } - ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "SSL_CTX_use_PrivateKey_file(\"%s\") failed", key->data); - return NGX_ERROR; + *err = "PEM_read_bio_PrivateKey() failed"; + BIO_free(bio); + return NULL; } - SSL_CTX_set_default_passwd_cb(ssl->ctx, NULL); + BIO_free(bio); - return NGX_OK; + return pkey; } @@ -645,6 +821,10 @@ ngx_ssl_password_callback(char *buf, int size, int rwflag, void *userdata) return 0; } + if (pwd == NULL) { + return 0; + } + if (pwd->len > (size_t) size) { ngx_log_error(NGX_LOG_ERR, ngx_cycle->log, 0, "password is truncated to %d bytes", size); @@ -946,10 +1126,13 @@ ngx_ssl_read_password_file(ngx_conf_t *cf, ngx_str_t *file) return NULL; } - cln = ngx_pool_cleanup_add(cf->temp_pool, 0); passwords = ngx_array_create(cf->temp_pool, 4, sizeof(ngx_str_t)); + if (passwords == NULL) { + return NULL; + } - if (cln == NULL || passwords == NULL) { + cln = ngx_pool_cleanup_add(cf->temp_pool, 0); + if (cln == NULL) { return NULL; } @@ -1057,6 +1240,69 @@ cleanup: } +ngx_array_t * +ngx_ssl_preserve_passwords(ngx_conf_t *cf, ngx_array_t *passwords) +{ + ngx_str_t *opwd, *pwd; + ngx_uint_t i; + ngx_array_t *pwds; + ngx_pool_cleanup_t *cln; + static ngx_array_t empty_passwords; + + if (passwords == NULL) { + + /* + * If there are no passwords, an empty array is used + * to make sure OpenSSL's default password callback + * won't block on reading from stdin. + */ + + return &empty_passwords; + } + + /* + * Passwords are normally allocated from the temporary pool + * and cleared after parsing configuration. To be used at + * runtime they have to be copied to the configuration pool. + */ + + pwds = ngx_array_create(cf->pool, passwords->nelts, sizeof(ngx_str_t)); + if (pwds == NULL) { + return NULL; + } + + cln = ngx_pool_cleanup_add(cf->pool, 0); + if (cln == NULL) { + return NULL; + } + + cln->handler = ngx_ssl_passwords_cleanup; + cln->data = pwds; + + opwd = passwords->elts; + + for (i = 0; i < passwords->nelts; i++) { + + pwd = ngx_array_push(pwds); + if (pwd == NULL) { + return NULL; + } + + pwd->len = opwd[i].len; + pwd->data = ngx_pnalloc(cf->pool, pwd->len); + + if (pwd->data == NULL) { + pwds->nelts--; + return NULL; + } + + ngx_memcpy(pwd->data, opwd[i].data, opwd[i].len); + } + + return pwds; +} + + static void ngx_ssl_passwords_cleanup(void *data) { @@ -2630,9 +2876,15 @@ ngx_ssl_connection_error(ngx_connection_t *c, int sslerr, ngx_err_t err, || n == SSL_R_NO_COMPRESSION_SPECIFIED /* 187 */ || n == SSL_R_NO_SHARED_CIPHER /* 193 */ || n == SSL_R_RECORD_LENGTH_MISMATCH /* 213 */ +#ifdef SSL_R_CLIENTHELLO_TLSEXT + || n == SSL_R_CLIENTHELLO_TLSEXT /* 226 */ +#endif #ifdef SSL_R_PARSE_TLSEXT || n == SSL_R_PARSE_TLSEXT /* 227 */ #endif +#ifdef SSL_R_CALLBACK_FAILED + || n == SSL_R_CALLBACK_FAILED /* 234 */ +#endif || n == SSL_R_UNEXPECTED_MESSAGE /* 244 */ || n == SSL_R_UNEXPECTED_RECORD /* 245 */ || n == SSL_R_UNKNOWN_ALERT_TYPE /* 246 */ @@ -2660,6 +2912,9 @@ ngx_ssl_connection_error(ngx_connection_t *c, int sslerr, ngx_err_t err, #ifdef SSL_R_INAPPROPRIATE_FALLBACK || n == SSL_R_INAPPROPRIATE_FALLBACK /* 373 */ #endif +#ifdef SSL_R_CERT_CB_ERROR + || n == SSL_R_CERT_CB_ERROR /* 377 */ +#endif #ifdef SSL_R_VERSION_TOO_LOW || n == SSL_R_VERSION_TOO_LOW /* 396 */ #endif @@ -2739,53 +2994,60 @@ ngx_ssl_error(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, char *fmt, ...) p = ngx_vslprintf(errstr, last - 1, fmt, args); va_end(args); - p = ngx_cpystrn(p, (u_char *) " (SSL:", last - p); + if (ERR_peek_error()) { + p = ngx_cpystrn(p, (u_char *) " (SSL:", last - p); - for ( ;; ) { + for ( ;; ) { - n = ERR_peek_error_line_data(NULL, NULL, &data, &flags); + n = ERR_peek_error_line_data(NULL, NULL, &data, &flags); - if (n == 0) { - break; - } + if (n == 0) { + break; + } - /* ERR_error_string_n() requires at least one byte */ + /* ERR_error_string_n() requires at least one byte */ - if (p >= last - 1) { - goto next; - } + if (p >= last - 1) { + goto next; + } - *p++ = ' '; + *p++ = ' '; - ERR_error_string_n(n, (char *) p, last - p); + ERR_error_string_n(n, (char *) p, last - p); - while (p < last && *p) { - p++; - } + while (p < last && *p) { + p++; + } - if (p < last && *data && (flags & ERR_TXT_STRING)) { - *p++ = ':'; - p = ngx_cpystrn(p, (u_char *) data, last - p); - } + if (p < last && *data && (flags & ERR_TXT_STRING)) { + *p++ = ':'; + p = ngx_cpystrn(p, (u_char *) data, last - p); + } - next: + next: + + (void) ERR_get_error(); + } - (void) ERR_get_error(); + if (p < last) { + *p++ = ')'; + } } - ngx_log_error(level, log, err, "%*s)", p - errstr, errstr); + ngx_log_error(level, log, err, "%*s", p - errstr, errstr); } ngx_int_t ngx_ssl_session_cache(ngx_ssl_t *ssl, ngx_str_t *sess_ctx, - ssize_t builtin_session_cache, ngx_shm_zone_t *shm_zone, time_t timeout) + ngx_array_t *certificates, ssize_t builtin_session_cache, + ngx_shm_zone_t *shm_zone, time_t timeout) { long cache_mode; SSL_CTX_set_timeout(ssl->ctx, (long) timeout); - if (ngx_ssl_session_id_context(ssl, sess_ctx) != NGX_OK) { + if (ngx_ssl_session_id_context(ssl, sess_ctx, certificates) != NGX_OK) { return NGX_ERROR; } @@ -2851,11 +3113,14 @@ ngx_ssl_session_cache(ngx_ssl_t *ssl, ngx_str_t *sess_ctx, static ngx_int_t -ngx_ssl_session_id_context(ngx_ssl_t *ssl, ngx_str_t *sess_ctx) +ngx_ssl_session_id_context(ngx_ssl_t *ssl, ngx_str_t *sess_ctx, + ngx_array_t *certificates) { int n, i; X509 *cert; X509_NAME *name; + ngx_str_t *certs; + ngx_uint_t k; EVP_MD_CTX *md; unsigned int len; STACK_OF(X509_NAME) *list; @@ -2900,6 +3165,24 @@ ngx_ssl_session_id_context(ngx_ssl_t *ssl, ngx_str_t *sess_ctx) } } + if (SSL_CTX_get_ex_data(ssl->ctx, ngx_ssl_certificate_index) == NULL) { + + /* + * If certificates are loaded dynamically, we use certificate + * names as specified in the configuration (with variables). + */ + + certs = certificates->elts; + for (k = 0; k < certificates->nelts; k++) { + + if (EVP_DigestUpdate(md, certs[k].data, certs[k].len) == 0) { + ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, + "EVP_DigestUpdate() failed"); + goto failed; + } + } + } + list = SSL_CTX_get_client_CA_list(ssl->ctx); if (list != NULL) { @@ -2924,7 +3207,7 @@ ngx_ssl_session_id_context(ngx_ssl_t *ssl, ngx_str_t *sess_ctx) if (EVP_DigestFinal_ex(md, buf, &len) == 0) { ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, - "EVP_DigestUpdate() failed"); + "EVP_DigestFinal_ex() failed"); goto failed; } @@ -3455,6 +3738,7 @@ ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths) ngx_uint_t i; ngx_array_t *keys; ngx_file_info_t fi; + ngx_pool_cleanup_t *cln; ngx_ssl_session_ticket_key_t *key; if (paths == NULL) { @@ -3467,6 +3751,14 @@ ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths) return NGX_ERROR; } + cln = ngx_pool_cleanup_add(cf->pool, 0); + if (cln == NULL) { + return NGX_ERROR; + } + + cln->handler = ngx_ssl_session_ticket_keys_cleanup; + cln->data = keys; + path = paths->elts; for (i = 0; i < paths->nelts; i++) { @@ -3538,6 +3830,8 @@ ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths) ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno, ngx_close_file_n " \"%V\" failed", &file.name); } + + ngx_explicit_memzero(&buf, 80); } if (SSL_CTX_set_ex_data(ssl->ctx, ngx_ssl_session_ticket_keys_index, keys) @@ -3568,6 +3862,8 @@ failed: ngx_close_file_n " \"%V\" failed", &file.name); } + ngx_explicit_memzero(&buf, 80); + return NGX_ERROR; } @@ -3696,6 +3992,16 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn, } } + +static void +ngx_ssl_session_ticket_keys_cleanup(void *data) +{ + ngx_array_t *keys = data; + + ngx_explicit_memzero(keys->elts, + keys->nelts * sizeof(ngx_ssl_session_ticket_key_t)); +} + #else ngx_int_t Renamed: vendor/nginx-1.15.10/src/event/ngx_event_openssl.h (+8 -1) 96% =================================================================== --- vendor/nginx-1.15.8/src/event/ngx_event_openssl.h 2019-03-25 12:44:08 +0900 (9ec001d09) +++ vendor/nginx-1.15.10/src/event/ngx_event_openssl.h 2019-03-27 11:40:45 +0900 (61da0c5db) @@ -161,10 +161,14 @@ typedef struct { ngx_int_t ngx_ssl_init(ngx_log_t *log); ngx_int_t ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data); + ngx_int_t ngx_ssl_certificates(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *certs, ngx_array_t *keys, ngx_array_t *passwords); ngx_int_t ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, ngx_str_t *key, ngx_array_t *passwords); +ngx_int_t ngx_ssl_connection_certificate(ngx_connection_t *c, ngx_pool_t *pool, + ngx_str_t *cert, ngx_str_t *key, ngx_array_t *passwords); + ngx_int_t ngx_ssl_ciphers(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *ciphers, ngx_uint_t prefer_server_ciphers); ngx_int_t ngx_ssl_client_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, @@ -179,6 +183,8 @@ ngx_int_t ngx_ssl_stapling_resolver(ngx_conf_t *cf, ngx_ssl_t *ssl, RSA *ngx_ssl_rsa512_key_callback(ngx_ssl_conn_t *ssl_conn, int is_export, int key_length); ngx_array_t *ngx_ssl_read_password_file(ngx_conf_t *cf, ngx_str_t *file); +ngx_array_t *ngx_ssl_preserve_passwords(ngx_conf_t *cf, + ngx_array_t *passwords); ngx_int_t ngx_ssl_dhparam(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *file); ngx_int_t ngx_ssl_ecdh_curve(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *name); ngx_int_t ngx_ssl_early_data(ngx_conf_t *cf, ngx_ssl_t *ssl, @@ -186,7 +192,8 @@ ngx_int_t ngx_ssl_early_data(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_int_t ngx_ssl_client_session_cache(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_uint_t enable); ngx_int_t ngx_ssl_session_cache(ngx_ssl_t *ssl, ngx_str_t *sess_ctx, - ssize_t builtin_session_cache, ngx_shm_zone_t *shm_zone, time_t timeout); + ngx_array_t *certificates, ssize_t builtin_session_cache, + ngx_shm_zone_t *shm_zone, time_t timeout); ngx_int_t ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths); ngx_int_t ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, void *data); Renamed: vendor/nginx-1.15.10/src/event/ngx_event_openssl_stapling.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_pipe.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_pipe.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_posted.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_posted.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_timer.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_timer.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/event/ngx_event_udp.c (+6 -0) 99% =================================================================== --- vendor/nginx-1.15.8/src/event/ngx_event_udp.c 2019-03-25 12:44:08 +0900 (65eb22fd2) +++ vendor/nginx-1.15.10/src/event/ngx_event_udp.c 2019-03-27 11:40:45 +0900 (557283050) @@ -256,7 +256,9 @@ ngx_event_recvmsg(ngx_event_t *ev) rev = c->read; c->udp->buffer = &buf; + rev->ready = 1; + rev->active = 0; rev->handler(rev); @@ -265,6 +267,7 @@ ngx_event_recvmsg(ngx_event_t *ev) } rev->ready = 0; + rev->active = 1; goto next; } @@ -343,6 +346,7 @@ ngx_event_recvmsg(ngx_event_t *ev) rev = c->read; wev = c->write; + rev->active = 1; wev->ready = 1; rev->log = log; @@ -453,7 +457,9 @@ ngx_udp_shared_recv(ngx_connection_t *c, u_char *buf, size_t size) ngx_memcpy(buf, b->pos, n); c->udp->buffer = NULL; + c->read->ready = 0; + c->read->active = 1; return n; } Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_access_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_addition_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_auth_basic_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_auth_request_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_autoindex_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_browser_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_charset_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_chunked_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_dav_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_degradation_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_empty_gif_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_fastcgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_flv_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_geo_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_geoip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_grpc_module.c (+1 -0) 99% =================================================================== --- vendor/nginx-1.15.8/src/http/modules/ngx_http_grpc_module.c 2019-03-25 12:44:08 +0900 (18478b978) +++ vendor/nginx-1.15.10/src/http/modules/ngx_http_grpc_module.c 2019-03-27 11:40:45 +0900 (f59ecbda7) @@ -4650,6 +4650,7 @@ ngx_http_grpc_set_ssl(ngx_conf_t *cf, ngx_http_grpc_loc_conf_t *glcf) cln = ngx_pool_cleanup_add(cf->pool, 0); if (cln == NULL) { + ngx_ssl_cleanup_ctx(glcf->upstream.ssl); return NGX_ERROR; } Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_gunzip_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_gzip_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_gzip_static_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_headers_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_image_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_index_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_limit_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_limit_req_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_log_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_map_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_memcached_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_mirror_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_mp4_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_not_modified_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_proxy_module.c (+1 -0) 99% =================================================================== --- vendor/nginx-1.15.8/src/http/modules/ngx_http_proxy_module.c 2019-03-25 12:44:08 +0900 (d6a892217) +++ vendor/nginx-1.15.10/src/http/modules/ngx_http_proxy_module.c 2019-03-27 11:40:45 +0900 (3aafb9996) @@ -4270,6 +4270,7 @@ ngx_http_proxy_set_ssl(ngx_conf_t *cf, ngx_http_proxy_loc_conf_t *plcf) cln = ngx_pool_cleanup_add(cf->pool, 0); if (cln == NULL) { + ngx_ssl_cleanup_ctx(plcf->upstream.ssl); return NGX_ERROR; } Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_random_index_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_range_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_realip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_referer_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_rewrite_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_scgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_secure_link_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_slice_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_split_clients_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_ssi_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_ssi_filter_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_ssl_module.c (+123 -9) 90% =================================================================== --- vendor/nginx-1.15.8/src/http/modules/ngx_http_ssl_module.c 2019-03-25 12:44:08 +0900 (9e243ea05) +++ vendor/nginx-1.15.10/src/http/modules/ngx_http_ssl_module.c 2019-03-27 11:40:45 +0900 (b3f8f4795) @@ -41,6 +41,9 @@ static void *ngx_http_ssl_create_srv_conf(ngx_conf_t *cf); static char *ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child); +static ngx_int_t ngx_http_ssl_compile_certificates(ngx_conf_t *cf, + ngx_http_ssl_srv_conf_t *conf); + static char *ngx_http_ssl_enable(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); static char *ngx_http_ssl_password_file(ngx_conf_t *cf, ngx_command_t *cmd, @@ -550,6 +553,7 @@ ngx_http_ssl_create_srv_conf(ngx_conf_t *cf) * set by ngx_pcalloc(): * * sscf->protocols = 0; + * sscf->certificate_values = NULL; * sscf->dhparam = { 0, NULL }; * sscf->ecdh_curve = { 0, NULL }; * sscf->client_certificate = { 0, NULL }; @@ -696,6 +700,15 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) return NGX_CONF_ERROR; } + cln = ngx_pool_cleanup_add(cf->pool, 0); + if (cln == NULL) { + ngx_ssl_cleanup_ctx(&conf->ssl); + return NGX_CONF_ERROR; + } + + cln->handler = ngx_ssl_cleanup_ctx; + cln->data = &conf->ssl; + #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME if (SSL_CTX_set_tlsext_servername_callback(conf->ssl.ctx, @@ -719,19 +732,36 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) ngx_http_ssl_npn_advertised, NULL); #endif - cln = ngx_pool_cleanup_add(cf->pool, 0); - if (cln == NULL) { + if (ngx_http_ssl_compile_certificates(cf, conf) != NGX_OK) { return NGX_CONF_ERROR; } - cln->handler = ngx_ssl_cleanup_ctx; - cln->data = &conf->ssl; + if (conf->certificate_values) { - if (ngx_ssl_certificates(cf, &conf->ssl, conf->certificates, - conf->certificate_keys, conf->passwords) - != NGX_OK) - { +#ifdef SSL_R_CERT_CB_ERROR + + /* install callback to lookup certificates */ + + SSL_CTX_set_cert_cb(conf->ssl.ctx, ngx_http_ssl_certificate, conf); + +#else + ngx_log_error(NGX_LOG_EMERG, cf->log, 0, + "variables in " + "\"ssl_certificate\" and \"ssl_certificate_key\" " + "directives are not supported on this platform"); return NGX_CONF_ERROR; +#endif + + } else { + + /* configure certificates */ + + if (ngx_ssl_certificates(cf, &conf->ssl, conf->certificates, + conf->certificate_keys, conf->passwords) + != NGX_OK) + { + return NGX_CONF_ERROR; + } } if (ngx_ssl_ciphers(cf, &conf->ssl, &conf->ciphers, @@ -788,7 +818,7 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) } if (ngx_ssl_session_cache(&conf->ssl, &ngx_http_ssl_sess_id_ctx, - conf->builtin_session_cache, + conf->certificates, conf->builtin_session_cache, conf->shm_zone, conf->session_timeout) != NGX_OK) { @@ -831,6 +861,90 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) } +static ngx_int_t +ngx_http_ssl_compile_certificates(ngx_conf_t *cf, + ngx_http_ssl_srv_conf_t *conf) +{ + ngx_str_t *cert, *key; + ngx_uint_t i, nelts; + ngx_http_complex_value_t *cv; + ngx_http_compile_complex_value_t ccv; + + cert = conf->certificates->elts; + key = conf->certificate_keys->elts; + nelts = conf->certificates->nelts; + + for (i = 0; i < nelts; i++) { + + if (ngx_http_script_variables_count(&cert[i])) { + goto found; + } + + if (ngx_http_script_variables_count(&key[i])) { + goto found; + } + } + + return NGX_OK; + +found: + + conf->certificate_values = ngx_array_create(cf->pool, nelts, + sizeof(ngx_http_complex_value_t)); + if (conf->certificate_values == NULL) { + return NGX_ERROR; + } + + conf->certificate_key_values = ngx_array_create(cf->pool, nelts, + sizeof(ngx_http_complex_value_t)); + if (conf->certificate_key_values == NULL) { + return NGX_ERROR; + } + + for (i = 0; i < nelts; i++) { + + cv = ngx_array_push(conf->certificate_values); + if (cv == NULL) { + return NGX_ERROR; + } + + ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t)); + + ccv.cf = cf; + ccv.value = &cert[i]; + ccv.complex_value = cv; + ccv.zero = 1; + + if (ngx_http_compile_complex_value(&ccv) != NGX_OK) { + return NGX_ERROR; + } + + cv = ngx_array_push(conf->certificate_key_values); + if (cv == NULL) { + return NGX_ERROR; + } + + ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t)); + + ccv.cf = cf; + ccv.value = &key[i]; + ccv.complex_value = cv; + ccv.zero = 1; + + if (ngx_http_compile_complex_value(&ccv) != NGX_OK) { + return NGX_ERROR; + } + } + + conf->passwords = ngx_ssl_preserve_passwords(cf, conf->passwords); + if (conf->passwords == NULL) { + return NGX_ERROR; + } + + return NGX_OK; +} + + static char * ngx_http_ssl_enable(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) { Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_ssl_module.h (+3 -0) 93% =================================================================== --- vendor/nginx-1.15.8/src/http/modules/ngx_http_ssl_module.h 2019-03-25 12:44:08 +0900 (fb3219b63) +++ vendor/nginx-1.15.10/src/http/modules/ngx_http_ssl_module.h 2019-03-27 11:40:45 +0900 (26fdccfe4) @@ -36,6 +36,9 @@ typedef struct { ngx_array_t *certificates; ngx_array_t *certificate_keys; + ngx_array_t *certificate_values; + ngx_array_t *certificate_key_values; + ngx_str_t dhparam; ngx_str_t ecdh_curve; ngx_str_t client_certificate; Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_static_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_stub_status_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_sub_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_try_files_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_hash_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_ip_hash_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_keepalive_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_least_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_random_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_upstream_zone_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_userid_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_uwsgi_module.c (+1 -0) 99% =================================================================== --- vendor/nginx-1.15.8/src/http/modules/ngx_http_uwsgi_module.c 2019-03-25 12:44:08 +0900 (8b091101f) +++ vendor/nginx-1.15.10/src/http/modules/ngx_http_uwsgi_module.c 2019-03-27 11:40:45 +0900 (56dc236ef) @@ -2359,6 +2359,7 @@ ngx_http_uwsgi_set_ssl(ngx_conf_t *cf, ngx_http_uwsgi_loc_conf_t *uwcf) cln = ngx_pool_cleanup_add(cf->pool, 0); if (cln == NULL) { + ngx_ssl_cleanup_ctx(uwcf->upstream.ssl); return NGX_ERROR; } Renamed: vendor/nginx-1.15.10/src/http/modules/ngx_http_xslt_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/perl/Makefile.PL (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/perl/nginx.pm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/perl/nginx.xs (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/perl/ngx_http_perl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/perl/ngx_http_perl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/modules/perl/typemap (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http.c (+18 -16) 98% =================================================================== --- vendor/nginx-1.15.8/src/http/ngx_http.c 2019-03-25 12:44:08 +0900 (5e2022690) +++ vendor/nginx-1.15.10/src/http/ngx_http.c 2019-03-27 11:40:45 +0900 (79ef9c644) @@ -1157,7 +1157,7 @@ ngx_http_add_listen(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, } } - sa = &lsopt->sockaddr.sockaddr; + sa = lsopt->sockaddr; p = ngx_inet_get_port(sa); port = cmcf->ports->elts; @@ -1209,8 +1209,8 @@ ngx_http_add_addresses(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, for (i = 0; i < port->addrs.nelts; i++) { - if (ngx_cmp_sockaddr(&lsopt->sockaddr.sockaddr, lsopt->socklen, - &addr[i].opt.sockaddr.sockaddr, + if (ngx_cmp_sockaddr(lsopt->sockaddr, lsopt->socklen, + addr[i].opt.sockaddr, addr[i].opt.socklen, 0) != NGX_OK) { @@ -1239,7 +1239,8 @@ ngx_http_add_addresses(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, if (addr[i].opt.set) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "duplicate listen options for %s", addr[i].opt.addr); + "duplicate listen options for %V", + &addr[i].opt.addr_text); return NGX_ERROR; } @@ -1252,7 +1253,8 @@ ngx_http_add_addresses(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, if (default_server) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "a duplicate default server for %s", addr[i].opt.addr); + "a duplicate default server for %V", + &addr[i].opt.addr_text); return NGX_ERROR; } @@ -1305,8 +1307,8 @@ ngx_http_add_address(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, if (lsopt->http2 && lsopt->ssl) { ngx_conf_log_error(NGX_LOG_WARN, cf, 0, "nginx was built with OpenSSL that lacks ALPN " - "and NPN support, HTTP/2 is not enabled for %s", - lsopt->addr); + "and NPN support, HTTP/2 is not enabled for %V", + &lsopt->addr_text); } #endif @@ -1354,7 +1356,8 @@ ngx_http_add_server(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, for (i = 0; i < addr->servers.nelts; i++) { if (server[i] == cscf) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "a duplicate listen %s", addr->opt.addr); + "a duplicate listen %V", + &addr->opt.addr_text); return NGX_ERROR; } } @@ -1471,15 +1474,15 @@ ngx_http_server_names(ngx_conf_t *cf, ngx_http_core_main_conf_t *cmcf, if (rc == NGX_DECLINED) { ngx_log_error(NGX_LOG_EMERG, cf->log, 0, - "invalid server name or wildcard \"%V\" on %s", - &name[n].name, addr->opt.addr); + "invalid server name or wildcard \"%V\" on %V", + &name[n].name, &addr->opt.addr_text); return NGX_ERROR; } if (rc == NGX_BUSY) { ngx_log_error(NGX_LOG_WARN, cf->log, 0, - "conflicting server name \"%V\" on %s, ignored", - &name[n].name, addr->opt.addr); + "conflicting server name \"%V\" on %V, ignored", + &name[n].name, &addr->opt.addr_text); } } } @@ -1700,8 +1703,7 @@ ngx_http_add_listening(ngx_conf_t *cf, ngx_http_conf_addr_t *addr) ngx_http_core_loc_conf_t *clcf; ngx_http_core_srv_conf_t *cscf; - ls = ngx_create_listening(cf, &addr->opt.sockaddr.sockaddr, - addr->opt.socklen); + ls = ngx_create_listening(cf, addr->opt.sockaddr, addr->opt.socklen); if (ls == NULL) { return NULL; } @@ -1791,7 +1793,7 @@ ngx_http_add_addrs(ngx_conf_t *cf, ngx_http_port_t *hport, for (i = 0; i < hport->naddrs; i++) { - sin = &addr[i].opt.sockaddr.sockaddr_in; + sin = (struct sockaddr_in *) addr[i].opt.sockaddr; addrs[i].addr = sin->sin_addr.s_addr; addrs[i].conf.default_server = addr[i].default_server; #if (NGX_HTTP_SSL) @@ -1856,7 +1858,7 @@ ngx_http_add_addrs6(ngx_conf_t *cf, ngx_http_port_t *hport, for (i = 0; i < hport->naddrs; i++) { - sin6 = &addr[i].opt.sockaddr.sockaddr_in6; + sin6 = (struct sockaddr_in6 *) addr[i].opt.sockaddr; addrs6[i].addr6 = sin6->sin6_addr; addrs6[i].conf.default_server = addr[i].default_server; #if (NGX_HTTP_SSL) Renamed: vendor/nginx-1.15.10/src/http/ngx_http.h (+4 -0) 97% =================================================================== --- vendor/nginx-1.15.8/src/http/ngx_http.h 2019-03-25 12:44:08 +0900 (afab4f645) +++ vendor/nginx-1.15.10/src/http/ngx_http.h 2019-03-27 11:40:45 +0900 (8b43857ee) @@ -88,6 +88,10 @@ void ngx_http_close_connection(ngx_connection_t *c); #if (NGX_HTTP_SSL && defined SSL_CTRL_SET_TLSEXT_HOSTNAME) int ngx_http_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg); #endif +#if (NGX_HTTP_SSL && defined SSL_R_CERT_CB_ERROR) +int ngx_http_ssl_certificate(ngx_ssl_conn_t *ssl_conn, void *arg); +#endif + ngx_int_t ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b); ngx_int_t ngx_http_parse_uri(ngx_http_request_t *r); Renamed: vendor/nginx-1.15.10/src/http/ngx_http_cache.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_copy_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_core_module.c (+40 -35) 98% =================================================================== --- vendor/nginx-1.15.8/src/http/ngx_http_core_module.c 2019-03-25 12:44:08 +0900 (5e7152f0f) +++ vendor/nginx-1.15.10/src/http/ngx_http_core_module.c 2019-03-27 11:40:45 +0900 (cb49ef74a) @@ -2715,6 +2715,8 @@ ngx_http_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy) { char *rv; void *mconf; + size_t len; + u_char *p; ngx_uint_t i; ngx_conf_t pcf; ngx_http_module_t *module; @@ -2802,7 +2804,14 @@ ngx_http_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy) if (rv == NGX_CONF_OK && !cscf->listen) { ngx_memzero(&lsopt, sizeof(ngx_http_listen_opt_t)); - sin = &lsopt.sockaddr.sockaddr_in; + p = ngx_pcalloc(cf->pool, sizeof(struct sockaddr_in)); + if (p == NULL) { + return NGX_CONF_ERROR; + } + + lsopt.sockaddr = (struct sockaddr *) p; + + sin = (struct sockaddr_in *) p; sin->sin_family = AF_INET; #if (NGX_WIN32) @@ -2825,8 +2834,16 @@ ngx_http_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy) #endif lsopt.wildcard = 1; - (void) ngx_sock_ntop(&lsopt.sockaddr.sockaddr, lsopt.socklen, - lsopt.addr, NGX_SOCKADDR_STRLEN, 1); + len = NGX_INET_ADDRSTRLEN + sizeof(":65535") - 1; + + p = ngx_pnalloc(cf->pool, len); + if (p == NULL) { + return NGX_CONF_ERROR; + } + + lsopt.addr_text.data = p; + lsopt.addr_text.len = ngx_sock_ntop(lsopt.sockaddr, lsopt.socklen, p, + len, 1); if (ngx_http_add_listen(cf, cscf, &lsopt) != NGX_OK) { return NGX_CONF_ERROR; @@ -3779,9 +3796,6 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ngx_memzero(&lsopt, sizeof(ngx_http_listen_opt_t)); - ngx_memcpy(&lsopt.sockaddr.sockaddr, &u.sockaddr, u.socklen); - - lsopt.socklen = u.socklen; lsopt.backlog = NGX_LISTEN_BACKLOG; lsopt.rcvbuf = -1; lsopt.sndbuf = -1; @@ -3791,14 +3805,10 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) #if (NGX_HAVE_TCP_FASTOPEN) lsopt.fastopen = -1; #endif - lsopt.wildcard = u.wildcard; #if (NGX_HAVE_INET6) lsopt.ipv6only = 1; #endif - (void) ngx_sock_ntop(&lsopt.sockaddr.sockaddr, lsopt.socklen, lsopt.addr, - NGX_SOCKADDR_STRLEN, 1); - for (n = 2; n < cf->args->nelts; n++) { if (ngx_strcmp(value[n].data, "default_server") == 0 @@ -3923,34 +3933,22 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) if (ngx_strncmp(value[n].data, "ipv6only=o", 10) == 0) { #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) - struct sockaddr *sa; - - sa = &lsopt.sockaddr.sockaddr; - - if (sa->sa_family == AF_INET6) { - - if (ngx_strcmp(&value[n].data[10], "n") == 0) { - lsopt.ipv6only = 1; + if (ngx_strcmp(&value[n].data[10], "n") == 0) { + lsopt.ipv6only = 1; - } else if (ngx_strcmp(&value[n].data[10], "ff") == 0) { - lsopt.ipv6only = 0; - - } else { - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "invalid ipv6only flags \"%s\"", - &value[n].data[9]); - return NGX_CONF_ERROR; - } - - lsopt.set = 1; - lsopt.bind = 1; + } else if (ngx_strcmp(&value[n].data[10], "ff") == 0) { + lsopt.ipv6only = 0; } else { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "ipv6only is not supported " - "on addr \"%s\", ignored", lsopt.addr); + "invalid ipv6only flags \"%s\"", + &value[n].data[9]); + return NGX_CONF_ERROR; } + lsopt.set = 1; + lsopt.bind = 1; + continue; #else ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, @@ -4106,11 +4104,18 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) return NGX_CONF_ERROR; } - if (ngx_http_add_listen(cf, cscf, &lsopt) == NGX_OK) { - return NGX_CONF_OK; + for (n = 0; n < u.naddrs; n++) { + lsopt.sockaddr = u.addrs[n].sockaddr; + lsopt.socklen = u.addrs[n].socklen; + lsopt.addr_text = u.addrs[n].name; + lsopt.wildcard = ngx_inet_wildcard(lsopt.sockaddr); + + if (ngx_http_add_listen(cf, cscf, &lsopt) != NGX_OK) { + return NGX_CONF_ERROR; + } } - return NGX_CONF_ERROR; + return NGX_CONF_OK; } Renamed: vendor/nginx-1.15.10/src/http/ngx_http_core_module.h (+2 -3) 99% =================================================================== --- vendor/nginx-1.15.8/src/http/ngx_http_core_module.h 2019-03-25 12:44:08 +0900 (4c6da7c0f) +++ vendor/nginx-1.15.10/src/http/ngx_http_core_module.h 2019-03-27 11:40:45 +0900 (85f6d66dc) @@ -65,8 +65,9 @@ typedef struct ngx_http_core_loc_conf_s ngx_http_core_loc_conf_t; typedef struct { - ngx_sockaddr_t sockaddr; + struct sockaddr *sockaddr; socklen_t socklen; + ngx_str_t addr_text; unsigned set:1; unsigned default_server:1; @@ -100,8 +101,6 @@ typedef struct { #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER) char *accept_filter; #endif - - u_char addr[NGX_SOCKADDR_STRLEN + 1]; } ngx_http_listen_opt_t; Renamed: vendor/nginx-1.15.10/src/http/ngx_http_file_cache.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_header_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_postpone_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_request.c (+137 -34) 97% =================================================================== --- vendor/nginx-1.15.8/src/http/ngx_http_request.c 2019-03-25 12:44:08 +0900 (7dd28b8c2) +++ vendor/nginx-1.15.10/src/http/ngx_http_request.c 2019-03-27 11:40:45 +0900 (80c19656f) @@ -11,6 +11,7 @@ static void ngx_http_wait_request_handler(ngx_event_t *ev); +static ngx_http_request_t *ngx_http_alloc_request(ngx_connection_t *c); static void ngx_http_process_request_line(ngx_event_t *rev); static void ngx_http_process_request_headers(ngx_event_t *rev); static ssize_t ngx_http_read_request_header(ngx_http_request_t *r); @@ -503,17 +504,45 @@ ngx_http_wait_request_handler(ngx_event_t *rev) ngx_http_request_t * ngx_http_create_request(ngx_connection_t *c) { + ngx_http_request_t *r; + ngx_http_log_ctx_t *ctx; + ngx_http_core_loc_conf_t *clcf; + + r = ngx_http_alloc_request(c); + if (r == NULL) { + return NULL; + } + + c->requests++; + + clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); + + ngx_set_connection_log(c, clcf->error_log); + + ctx = c->log->data; + ctx->request = r; + ctx->current_request = r; + +#if (NGX_STAT_STUB) + (void) ngx_atomic_fetch_add(ngx_stat_reading, 1); + r->stat_reading = 1; + (void) ngx_atomic_fetch_add(ngx_stat_requests, 1); +#endif + + return r; +} + + +static ngx_http_request_t * +ngx_http_alloc_request(ngx_connection_t *c) +{ ngx_pool_t *pool; ngx_time_t *tp; ngx_http_request_t *r; - ngx_http_log_ctx_t *ctx; ngx_http_connection_t *hc; ngx_http_core_srv_conf_t *cscf; - ngx_http_core_loc_conf_t *clcf; ngx_http_core_main_conf_t *cmcf; - c->requests++; - hc = c->data; cscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_core_module); @@ -541,10 +570,6 @@ ngx_http_create_request(ngx_connection_t *c) r->read_event_handler = ngx_http_block_reading; - clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); - - ngx_set_connection_log(r->connection, clcf->error_log); - r->header_in = hc->busy ? hc->busy->buf : c->buffer; if (ngx_list_init(&r->headers_out.headers, r->pool, 20, @@ -604,17 +629,8 @@ ngx_http_create_request(ngx_connection_t *c) r->http_state = NGX_HTTP_READING_REQUEST_STATE; - ctx = c->log->data; - ctx->request = r; - ctx->current_request = r; r->log_handler = ngx_http_log_error_handler; -#if (NGX_STAT_STUB) - (void) ngx_atomic_fetch_add(ngx_stat_reading, 1); - r->stat_reading = 1; - (void) ngx_atomic_fetch_add(ngx_stat_requests, 1); -#endif - return r; } @@ -833,11 +849,13 @@ ngx_http_ssl_handshake_handler(ngx_connection_t *c) ngx_http_close_connection(c); } + #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME int ngx_http_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg) { + ngx_int_t rc; ngx_str_t host; const char *servername; ngx_connection_t *c; @@ -846,16 +864,17 @@ ngx_http_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg) ngx_http_core_loc_conf_t *clcf; ngx_http_core_srv_conf_t *cscf; - servername = SSL_get_servername(ssl_conn, TLSEXT_NAMETYPE_host_name); + c = ngx_ssl_get_connection(ssl_conn); - if (servername == NULL) { - return SSL_TLSEXT_ERR_NOACK; + if (c->ssl->handshaked) { + *ad = SSL_AD_NO_RENEGOTIATION; + return SSL_TLSEXT_ERR_ALERT_FATAL; } - c = ngx_ssl_get_connection(ssl_conn); + servername = SSL_get_servername(ssl_conn, TLSEXT_NAMETYPE_host_name); - if (c->ssl->handshaked) { - return SSL_TLSEXT_ERR_NOACK; + if (servername == NULL) { + return SSL_TLSEXT_ERR_OK; } ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, @@ -864,27 +883,40 @@ ngx_http_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg) host.len = ngx_strlen(servername); if (host.len == 0) { - return SSL_TLSEXT_ERR_NOACK; + return SSL_TLSEXT_ERR_OK; } host.data = (u_char *) servername; - if (ngx_http_validate_host(&host, c->pool, 1) != NGX_OK) { - return SSL_TLSEXT_ERR_NOACK; + rc = ngx_http_validate_host(&host, c->pool, 1); + + if (rc == NGX_ERROR) { + *ad = SSL_AD_INTERNAL_ERROR; + return SSL_TLSEXT_ERR_ALERT_FATAL; + } + + if (rc == NGX_DECLINED) { + return SSL_TLSEXT_ERR_OK; } hc = c->data; - if (ngx_http_find_virtual_server(c, hc->addr_conf->virtual_names, &host, - NULL, &cscf) - != NGX_OK) - { - return SSL_TLSEXT_ERR_NOACK; + rc = ngx_http_find_virtual_server(c, hc->addr_conf->virtual_names, &host, + NULL, &cscf); + + if (rc == NGX_ERROR) { + *ad = SSL_AD_INTERNAL_ERROR; + return SSL_TLSEXT_ERR_ALERT_FATAL; + } + + if (rc == NGX_DECLINED) { + return SSL_TLSEXT_ERR_OK; } hc->ssl_servername = ngx_palloc(c->pool, sizeof(ngx_str_t)); if (hc->ssl_servername == NULL) { - return SSL_TLSEXT_ERR_NOACK; + *ad = SSL_AD_INTERNAL_ERROR; + return SSL_TLSEXT_ERR_ALERT_FATAL; } *hc->ssl_servername = host; @@ -930,6 +962,75 @@ ngx_http_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg) #endif + +#ifdef SSL_R_CERT_CB_ERROR + +int +ngx_http_ssl_certificate(ngx_ssl_conn_t *ssl_conn, void *arg) +{ + ngx_str_t cert, key; + ngx_uint_t i, nelts; + ngx_connection_t *c; + ngx_http_request_t *r; + ngx_http_ssl_srv_conf_t *sscf; + ngx_http_complex_value_t *certs, *keys; + + c = ngx_ssl_get_connection(ssl_conn); + + if (c->ssl->handshaked) { + return 0; + } + + r = ngx_http_alloc_request(c); + if (r == NULL) { + return 0; + } + + r->logged = 1; + + sscf = arg; + + nelts = sscf->certificate_values->nelts; + certs = sscf->certificate_values->elts; + keys = sscf->certificate_key_values->elts; + + for (i = 0; i < nelts; i++) { + + if (ngx_http_complex_value(r, &certs[i], &cert) != NGX_OK) { + goto failed; + } + + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, + "ssl cert: \"%s\"", cert.data); + + if (ngx_http_complex_value(r, &keys[i], &key) != NGX_OK) { + goto failed; + } + + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, + "ssl key: \"%s\"", key.data); + + if (ngx_ssl_connection_certificate(c, r->pool, &cert, &key, + sscf->passwords) + != NGX_OK) + { + goto failed; + } + } + + ngx_http_free_request(r, 0); + c->destroyed = 0; + return 1; + +failed: + + ngx_http_free_request(r, 0); + c->destroyed = 0; + return 0; +} + +#endif + #endif @@ -3513,9 +3614,11 @@ ngx_http_free_request(ngx_http_request_t *r, ngx_int_t rc) r->headers_out.status = rc; } - log->action = "logging request"; + if (!r->logged) { + log->action = "logging request"; - ngx_http_log_request(r); + ngx_http_log_request(r); + } log->action = "closing request"; Renamed: vendor/nginx-1.15.10/src/http/ngx_http_request.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_request_body.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_script.c (+28 -0) 98% =================================================================== --- vendor/nginx-1.15.8/src/http/ngx_http_script.c 2019-03-25 12:44:08 +0900 (1a8773561) +++ vendor/nginx-1.15.10/src/http/ngx_http_script.c 2019-03-27 11:40:45 +0900 (415388904) @@ -271,6 +271,34 @@ ngx_http_test_predicates(ngx_http_request_t *r, ngx_array_t *predicates) } +ngx_int_t +ngx_http_test_required_predicates(ngx_http_request_t *r, + ngx_array_t *predicates) +{ + ngx_str_t val; + ngx_uint_t i; + ngx_http_complex_value_t *cv; + + if (predicates == NULL) { + return NGX_OK; + } + + cv = predicates->elts; + + for (i = 0; i < predicates->nelts; i++) { + if (ngx_http_complex_value(r, &cv[i], &val) != NGX_OK) { + return NGX_ERROR; + } + + if (val.len == 0 || (val.len == 1 && val.data[0] == '0')) { + return NGX_DECLINED; + } + } + + return NGX_OK; +} + + char * ngx_http_set_predicate_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) { Renamed: vendor/nginx-1.15.10/src/http/ngx_http_script.h (+2 -0) 98% =================================================================== --- vendor/nginx-1.15.8/src/http/ngx_http_script.h 2019-03-25 12:44:08 +0900 (a5116d747) +++ vendor/nginx-1.15.10/src/http/ngx_http_script.h 2019-03-27 11:40:45 +0900 (25bb6d73f) @@ -214,6 +214,8 @@ char *ngx_http_set_complex_value_slot(ngx_conf_t *cf, ngx_command_t *cmd, ngx_int_t ngx_http_test_predicates(ngx_http_request_t *r, ngx_array_t *predicates); +ngx_int_t ngx_http_test_required_predicates(ngx_http_request_t *r, + ngx_array_t *predicates); char *ngx_http_set_predicate_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); Renamed: vendor/nginx-1.15.10/src/http/ngx_http_special_response.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_upstream.c (+1 -1) 99% =================================================================== --- vendor/nginx-1.15.8/src/http/ngx_http_upstream.c 2019-03-25 12:44:08 +0900 (907105571) +++ vendor/nginx-1.15.10/src/http/ngx_http_upstream.c 2019-03-27 11:40:45 +0900 (a7391d09a) @@ -850,7 +850,7 @@ ngx_http_upstream_cache(ngx_http_request_t *r, ngx_http_upstream_t *u) ngx_http_file_cache_create_key(r); - if (r->cache->header_start + 256 >= u->conf->buffer_size) { + if (r->cache->header_start + 256 > u->conf->buffer_size) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "%V_buffer_size %uz is not enough for cache key, " "it should be increased to at least %uz", Renamed: vendor/nginx-1.15.10/src/http/ngx_http_upstream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_upstream_round_robin.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_upstream_round_robin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_variables.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_variables.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/ngx_http_write_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/v2/ngx_http_v2.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/v2/ngx_http_v2.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_encode.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_huff_decode.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_huff_encode.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/http/v2/ngx_http_v2_table.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail.c (+6 -36) 91% =================================================================== --- vendor/nginx-1.15.8/src/mail/ngx_mail.c 2019-03-25 12:44:08 +0900 (5fd5fa00c) +++ vendor/nginx-1.15.10/src/mail/ngx_mail.c 2019-03-27 11:40:45 +0900 (f17c2ccc3) @@ -231,7 +231,7 @@ ngx_mail_add_ports(ngx_conf_t *cf, ngx_array_t *ports, ngx_mail_conf_port_t *port; ngx_mail_conf_addr_t *addr; - sa = &listen->sockaddr.sockaddr; + sa = listen->sockaddr; p = ngx_inet_get_port(sa); port = ports->elts; @@ -316,7 +316,7 @@ ngx_mail_optimize_servers(ngx_conf_t *cf, ngx_array_t *ports) continue; } - ls = ngx_create_listening(cf, &addr[i].opt.sockaddr.sockaddr, + ls = ngx_create_listening(cf, addr[i].opt.sockaddr, addr[i].opt.socklen); if (ls == NULL) { return NGX_CONF_ERROR; @@ -384,12 +384,9 @@ static ngx_int_t ngx_mail_add_addrs(ngx_conf_t *cf, ngx_mail_port_t *mport, ngx_mail_conf_addr_t *addr) { - u_char *p; - size_t len; ngx_uint_t i; ngx_mail_in_addr_t *addrs; struct sockaddr_in *sin; - u_char buf[NGX_SOCKADDR_STRLEN]; mport->addrs = ngx_pcalloc(cf->pool, mport->naddrs * sizeof(ngx_mail_in_addr_t)); @@ -401,26 +398,14 @@ ngx_mail_add_addrs(ngx_conf_t *cf, ngx_mail_port_t *mport, for (i = 0; i < mport->naddrs; i++) { - sin = &addr[i].opt.sockaddr.sockaddr_in; + sin = (struct sockaddr_in *) addr[i].opt.sockaddr; addrs[i].addr = sin->sin_addr.s_addr; addrs[i].conf.ctx = addr[i].opt.ctx; #if (NGX_MAIL_SSL) addrs[i].conf.ssl = addr[i].opt.ssl; #endif - - len = ngx_sock_ntop(&addr[i].opt.sockaddr.sockaddr, addr[i].opt.socklen, - buf, NGX_SOCKADDR_STRLEN, 1); - - p = ngx_pnalloc(cf->pool, len); - if (p == NULL) { - return NGX_ERROR; - } - - ngx_memcpy(p, buf, len); - - addrs[i].conf.addr_text.len = len; - addrs[i].conf.addr_text.data = p; + addrs[i].conf.addr_text = addr[i].opt.addr_text; } return NGX_OK; @@ -433,12 +418,9 @@ static ngx_int_t ngx_mail_add_addrs6(ngx_conf_t *cf, ngx_mail_port_t *mport, ngx_mail_conf_addr_t *addr) { - u_char *p; - size_t len; ngx_uint_t i; ngx_mail_in6_addr_t *addrs6; struct sockaddr_in6 *sin6; - u_char buf[NGX_SOCKADDR_STRLEN]; mport->addrs = ngx_pcalloc(cf->pool, mport->naddrs * sizeof(ngx_mail_in6_addr_t)); @@ -450,26 +432,14 @@ ngx_mail_add_addrs6(ngx_conf_t *cf, ngx_mail_port_t *mport, for (i = 0; i < mport->naddrs; i++) { - sin6 = &addr[i].opt.sockaddr.sockaddr_in6; + sin6 = (struct sockaddr_in6 *) addr[i].opt.sockaddr; addrs6[i].addr6 = sin6->sin6_addr; addrs6[i].conf.ctx = addr[i].opt.ctx; #if (NGX_MAIL_SSL) addrs6[i].conf.ssl = addr[i].opt.ssl; #endif - - len = ngx_sock_ntop(&addr[i].opt.sockaddr.sockaddr, addr[i].opt.socklen, - buf, NGX_SOCKADDR_STRLEN, 1); - - p = ngx_pnalloc(cf->pool, len); - if (p == NULL) { - return NGX_ERROR; - } - - ngx_memcpy(p, buf, len); - - addrs6[i].conf.addr_text.len = len; - addrs6[i].conf.addr_text.data = p; + addrs6[i].conf.addr_text = addr[i].opt.addr_text; } return NGX_OK; Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail.h (+2 -1) 99% =================================================================== --- vendor/nginx-1.15.8/src/mail/ngx_mail.h 2019-03-25 12:44:08 +0900 (6ecfefc98) +++ vendor/nginx-1.15.10/src/mail/ngx_mail.h 2019-03-27 11:40:45 +0900 (d904f25f1) @@ -27,8 +27,9 @@ typedef struct { typedef struct { - ngx_sockaddr_t sockaddr; + struct sockaddr *sockaddr; socklen_t socklen; + ngx_str_t addr_text; /* server ctx */ ngx_mail_conf_ctx_t *ctx; Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_auth_http_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_core_module.c (+37 -46) 91% =================================================================== --- vendor/nginx-1.15.8/src/mail/ngx_mail_core_module.c 2019-03-25 12:44:08 +0900 (dd4e9802b) +++ vendor/nginx-1.15.10/src/mail/ngx_mail_core_module.c 2019-03-27 11:40:45 +0900 (e16d70238) @@ -297,8 +297,8 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ngx_str_t *value, size; ngx_url_t u; - ngx_uint_t i, m; - ngx_mail_listen_t *ls; + ngx_uint_t i, n, m; + ngx_mail_listen_t *ls, *als; ngx_mail_module_t *module; ngx_mail_core_main_conf_t *cmcf; @@ -323,36 +323,16 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) cmcf = ngx_mail_conf_get_module_main_conf(cf, ngx_mail_core_module); - ls = cmcf->listen.elts; - - for (i = 0; i < cmcf->listen.nelts; i++) { - - if (ngx_cmp_sockaddr(&ls[i].sockaddr.sockaddr, ls[i].socklen, - (struct sockaddr *) &u.sockaddr, u.socklen, 1) - != NGX_OK) - { - continue; - } - - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "duplicate \"%V\" address and port pair", &u.url); - return NGX_CONF_ERROR; - } - - ls = ngx_array_push(&cmcf->listen); + ls = ngx_array_push_n(&cmcf->listen, u.naddrs); if (ls == NULL) { return NGX_CONF_ERROR; } ngx_memzero(ls, sizeof(ngx_mail_listen_t)); - ngx_memcpy(&ls->sockaddr.sockaddr, &u.sockaddr, u.socklen); - - ls->socklen = u.socklen; ls->backlog = NGX_LISTEN_BACKLOG; ls->rcvbuf = -1; ls->sndbuf = -1; - ls->wildcard = u.wildcard; ls->ctx = cf->ctx; #if (NGX_HAVE_INET6) @@ -434,35 +414,20 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) { #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) - size_t len; - u_char buf[NGX_SOCKADDR_STRLEN]; - - if (ls->sockaddr.sockaddr.sa_family == AF_INET6) { - - if (ngx_strcmp(&value[i].data[10], "n") == 0) { - ls->ipv6only = 1; - - } else if (ngx_strcmp(&value[i].data[10], "ff") == 0) { - ls->ipv6only = 0; - - } else { - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "invalid ipv6only flags \"%s\"", - &value[i].data[9]); - return NGX_CONF_ERROR; - } + if (ngx_strcmp(&value[i].data[10], "n") == 0) { + ls->ipv6only = 1; - ls->bind = 1; + } else if (ngx_strcmp(&value[i].data[10], "ff") == 0) { + ls->ipv6only = 0; } else { - len = ngx_sock_ntop(&ls->sockaddr.sockaddr, ls->socklen, buf, - NGX_SOCKADDR_STRLEN, 1); - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "ipv6only is not supported " - "on addr \"%*s\", ignored", len, buf); + "invalid ipv6only flags \"%s\"", + &value[i].data[9]); + return NGX_CONF_ERROR; } + ls->bind = 1; continue; #else ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, @@ -588,6 +553,32 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) return NGX_CONF_ERROR; } + als = cmcf->listen.elts; + + for (n = 0; n < u.naddrs; n++) { + ls[n] = ls[0]; + + ls[n].sockaddr = u.addrs[n].sockaddr; + ls[n].socklen = u.addrs[n].socklen; + ls[n].addr_text = u.addrs[n].name; + ls[n].wildcard = ngx_inet_wildcard(ls[n].sockaddr); + + for (i = 0; i < cmcf->listen.nelts - u.naddrs + n; i++) { + + if (ngx_cmp_sockaddr(als[i].sockaddr, als[i].socklen, + ls[n].sockaddr, ls[n].socklen, 1) + != NGX_OK) + { + continue; + } + + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "duplicate \"%V\" address and port pair", + &ls[n].addr_text); + return NGX_CONF_ERROR; + } + } + return NGX_CONF_OK; } Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_imap_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_imap_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_imap_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_pop3_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_pop3_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_pop3_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_proxy_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_smtp_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_smtp_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_smtp_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_ssl_module.c (+2 -1) 99% =================================================================== --- vendor/nginx-1.15.8/src/mail/ngx_mail_ssl_module.c 2019-03-25 12:44:08 +0900 (45095979e) +++ vendor/nginx-1.15.10/src/mail/ngx_mail_ssl_module.c 2019-03-27 11:40:45 +0900 (5544f7522) @@ -370,6 +370,7 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) cln = ngx_pool_cleanup_add(cf->pool, 0); if (cln == NULL) { + ngx_ssl_cleanup_ctx(&conf->ssl); return NGX_CONF_ERROR; } @@ -435,7 +436,7 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) } if (ngx_ssl_session_cache(&conf->ssl, &ngx_mail_ssl_sess_id_ctx, - conf->builtin_session_cache, + conf->certificates, conf->builtin_session_cache, conf->shm_zone, conf->session_timeout) != NGX_OK) { Renamed: vendor/nginx-1.15.10/src/mail/ngx_mail_ssl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/misc/ngx_cpp_test_module.cpp (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/misc/ngx_google_perftools_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_alloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_alloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_atomic.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_channel.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_channel.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_daemon.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_darwin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_darwin_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_darwin_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_darwin_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_dlopen.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_dlopen.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_errno.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_errno.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_file_aio_read.c (+1 -1) 98% =================================================================== --- vendor/nginx-1.15.8/src/os/unix/ngx_file_aio_read.c 2019-03-25 12:44:08 +0900 (aedc3c90c) +++ vendor/nginx-1.15.10/src/os/unix/ngx_file_aio_read.c 2019-03-27 11:40:45 +0900 (bb60ee824) @@ -110,7 +110,7 @@ ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, #if (NGX_HAVE_KQUEUE) aio->aiocb.aio_sigevent.sigev_notify_kqueue = ngx_kqueue; aio->aiocb.aio_sigevent.sigev_notify = SIGEV_KEVENT; - aio->aiocb.aio_sigevent.sigev_value.sigval_ptr = ev; + aio->aiocb.aio_sigevent.sigev_value.sival_ptr = ev; #endif ev->handler = ngx_file_aio_event_handler; Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_files.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_files.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_freebsd.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_freebsd_config.h (+6 -0) 95% =================================================================== --- vendor/nginx-1.15.8/src/os/unix/ngx_freebsd_config.h 2019-03-25 12:44:08 +0900 (b7da48cb1) +++ vendor/nginx-1.15.10/src/os/unix/ngx_freebsd_config.h 2019-03-27 11:40:45 +0900 (c641108b7) @@ -89,8 +89,14 @@ #if (NGX_HAVE_FILE_AIO) + #include <aio.h> typedef struct aiocb ngx_aiocb_t; + +#if (__FreeBSD_version < 700005 && !defined __DragonFly__) +#define sival_ptr sigval_ptr +#endif + #endif Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_freebsd_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_freebsd_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_gcc_atomic_amd64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_gcc_atomic_ppc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_gcc_atomic_sparc64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_gcc_atomic_x86.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_linux.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_linux_aio_read.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_linux_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_linux_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_linux_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_os.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_posix_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_posix_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_process.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_process.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_process_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_process_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_readv_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_recv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_send.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_setaffinity.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_setaffinity.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_setproctitle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_setproctitle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_shmem.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_shmem.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_socket.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_socket.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_solaris.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_solaris_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_solaris_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_solaris_sendfilev_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_sunpro_amd64.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_sunpro_atomic_sparc64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_sunpro_sparc64.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_sunpro_x86.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_thread.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_thread_cond.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_thread_id.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_thread_mutex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_udp_recv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_udp_send.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_udp_sendmsg_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_user.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_user.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/unix/ngx_writev_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/nginx.ico (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/nginx.rc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/nginx_icon16.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/nginx_icon32.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/nginx_icon48.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_alloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_alloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_atomic.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_dlopen.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_dlopen.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_errno.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_errno.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_event_log.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_files.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_files.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_os.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_process.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_process.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_process_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_process_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_service.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_shmem.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_shmem.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_socket.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_socket.h (+43 -0) 85% =================================================================== --- vendor/nginx-1.15.8/src/os/win32/ngx_socket.h 2019-03-25 12:44:08 +0900 (a9e26c295) +++ vendor/nginx-1.15.10/src/os/win32/ngx_socket.h 2019-03-27 11:40:45 +0900 (f8a453d56) @@ -200,6 +200,49 @@ extern LPFN_CONNECTEX ngx_connectex; extern LPFN_DISCONNECTEX ngx_disconnectex; +#if (NGX_HAVE_POLL && !defined POLLIN) + +/* + * WSAPoll() is only available if _WIN32_WINNT >= 0x0600. + * If it is not available during compilation, we try to + * load it dynamically at runtime. + */ + +#define NGX_LOAD_WSAPOLL 1 + +#define POLLRDNORM 0x0100 +#define POLLRDBAND 0x0200 +#define POLLIN (POLLRDNORM | POLLRDBAND) +#define POLLPRI 0x0400 + +#define POLLWRNORM 0x0010 +#define POLLOUT (POLLWRNORM) +#define POLLWRBAND 0x0020 + +#define POLLERR 0x0001 +#define POLLHUP 0x0002 +#define POLLNVAL 0x0004 + +typedef struct pollfd { + + SOCKET fd; + SHORT events; + SHORT revents; + +} WSAPOLLFD, *PWSAPOLLFD, FAR *LPWSAPOLLFD; + +typedef int (WSAAPI *ngx_wsapoll_pt)( + LPWSAPOLLFD fdArray, + ULONG fds, + INT timeout + ); + +extern ngx_wsapoll_pt WSAPoll; +extern ngx_uint_t ngx_have_wsapoll; + +#endif + + int ngx_tcp_push(ngx_socket_t s); #define ngx_tcp_push_n "tcp_push()" Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_stat.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_thread.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_thread.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_udp_wsarecv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_user.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_user.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_win32_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_win32_init.c (+32 -0) 92% =================================================================== --- vendor/nginx-1.15.8/src/os/win32/ngx_win32_init.c 2019-03-25 12:44:08 +0900 (ec9b51efa) +++ vendor/nginx-1.15.10/src/os/win32/ngx_win32_init.c 2019-03-27 11:40:45 +0900 (70bee8ef4) @@ -58,6 +58,12 @@ static GUID cx_guid = WSAID_CONNECTEX; static GUID dx_guid = WSAID_DISCONNECTEX; +#if (NGX_LOAD_WSAPOLL) +ngx_wsapoll_pt WSAPoll; +ngx_uint_t ngx_have_wsapoll; +#endif + + ngx_int_t ngx_os_init(ngx_log_t *log) { @@ -223,6 +229,32 @@ ngx_os_init(ngx_log_t *log) ngx_close_socket_n " failed"); } +#if (NGX_LOAD_WSAPOLL) + { + HMODULE hmod; + + hmod = GetModuleHandle("ws2_32.dll"); + if (hmod == NULL) { + ngx_log_error(NGX_LOG_NOTICE, log, ngx_errno, + "GetModuleHandle(\"ws2_32.dll\") failed"); + goto nopoll; + } + + WSAPoll = (ngx_wsapoll_pt) GetProcAddress(hmod, "WSAPoll"); + if (WSAPoll == NULL) { + ngx_log_error(NGX_LOG_NOTICE, log, ngx_errno, + "GetProcAddress(\"WSAPoll\") failed"); + goto nopoll; + } + + ngx_have_wsapoll = 1; + + } + +nopoll: + +#endif + if (GetEnvironmentVariable("ngx_unique", ngx_unique, NGX_INT32_LEN + 1) != 0) { Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_wsarecv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_wsarecv_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_wsasend.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/os/win32/ngx_wsasend_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream.c (+6 -36) 93% =================================================================== --- vendor/nginx-1.15.8/src/stream/ngx_stream.c 2019-03-25 12:44:08 +0900 (4abe387e8) +++ vendor/nginx-1.15.10/src/stream/ngx_stream.c 2019-03-27 11:40:45 +0900 (78356754e) @@ -387,7 +387,7 @@ ngx_stream_add_ports(ngx_conf_t *cf, ngx_array_t *ports, ngx_stream_conf_port_t *port; ngx_stream_conf_addr_t *addr; - sa = &listen->sockaddr.sockaddr; + sa = listen->sockaddr; p = ngx_inet_get_port(sa); port = ports->elts; @@ -476,7 +476,7 @@ ngx_stream_optimize_servers(ngx_conf_t *cf, ngx_array_t *ports) continue; } - ls = ngx_create_listening(cf, &addr[i].opt.sockaddr.sockaddr, + ls = ngx_create_listening(cf, addr[i].opt.sockaddr, addr[i].opt.socklen); if (ls == NULL) { return NGX_CONF_ERROR; @@ -551,12 +551,9 @@ static ngx_int_t ngx_stream_add_addrs(ngx_conf_t *cf, ngx_stream_port_t *stport, ngx_stream_conf_addr_t *addr) { - u_char *p; - size_t len; ngx_uint_t i; struct sockaddr_in *sin; ngx_stream_in_addr_t *addrs; - u_char buf[NGX_SOCKADDR_STRLEN]; stport->addrs = ngx_pcalloc(cf->pool, stport->naddrs * sizeof(ngx_stream_in_addr_t)); @@ -568,7 +565,7 @@ ngx_stream_add_addrs(ngx_conf_t *cf, ngx_stream_port_t *stport, for (i = 0; i < stport->naddrs; i++) { - sin = &addr[i].opt.sockaddr.sockaddr_in; + sin = (struct sockaddr_in *) addr[i].opt.sockaddr; addrs[i].addr = sin->sin_addr.s_addr; addrs[i].conf.ctx = addr[i].opt.ctx; @@ -576,19 +573,7 @@ ngx_stream_add_addrs(ngx_conf_t *cf, ngx_stream_port_t *stport, addrs[i].conf.ssl = addr[i].opt.ssl; #endif addrs[i].conf.proxy_protocol = addr[i].opt.proxy_protocol; - - len = ngx_sock_ntop(&addr[i].opt.sockaddr.sockaddr, addr[i].opt.socklen, - buf, NGX_SOCKADDR_STRLEN, 1); - - p = ngx_pnalloc(cf->pool, len); - if (p == NULL) { - return NGX_ERROR; - } - - ngx_memcpy(p, buf, len); - - addrs[i].conf.addr_text.len = len; - addrs[i].conf.addr_text.data = p; + addrs[i].conf.addr_text = addr[i].opt.addr_text; } return NGX_OK; @@ -601,12 +586,9 @@ static ngx_int_t ngx_stream_add_addrs6(ngx_conf_t *cf, ngx_stream_port_t *stport, ngx_stream_conf_addr_t *addr) { - u_char *p; - size_t len; ngx_uint_t i; struct sockaddr_in6 *sin6; ngx_stream_in6_addr_t *addrs6; - u_char buf[NGX_SOCKADDR_STRLEN]; stport->addrs = ngx_pcalloc(cf->pool, stport->naddrs * sizeof(ngx_stream_in6_addr_t)); @@ -618,7 +600,7 @@ ngx_stream_add_addrs6(ngx_conf_t *cf, ngx_stream_port_t *stport, for (i = 0; i < stport->naddrs; i++) { - sin6 = &addr[i].opt.sockaddr.sockaddr_in6; + sin6 = (struct sockaddr_in6 *) addr[i].opt.sockaddr; addrs6[i].addr6 = sin6->sin6_addr; addrs6[i].conf.ctx = addr[i].opt.ctx; @@ -626,19 +608,7 @@ ngx_stream_add_addrs6(ngx_conf_t *cf, ngx_stream_port_t *stport, addrs6[i].conf.ssl = addr[i].opt.ssl; #endif addrs6[i].conf.proxy_protocol = addr[i].opt.proxy_protocol; - - len = ngx_sock_ntop(&addr[i].opt.sockaddr.sockaddr, addr[i].opt.socklen, - buf, NGX_SOCKADDR_STRLEN, 1); - - p = ngx_pnalloc(cf->pool, len); - if (p == NULL) { - return NGX_ERROR; - } - - ngx_memcpy(p, buf, len); - - addrs6[i].conf.addr_text.len = len; - addrs6[i].conf.addr_text.data = p; + addrs6[i].conf.addr_text = addr[i].opt.addr_text; } return NGX_OK; Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream.h (+2 -1) 99% =================================================================== --- vendor/nginx-1.15.8/src/stream/ngx_stream.h 2019-03-25 12:44:08 +0900 (09d245939) +++ vendor/nginx-1.15.10/src/stream/ngx_stream.h 2019-03-27 11:40:45 +0900 (57e73e046) @@ -41,8 +41,9 @@ typedef struct { typedef struct { - ngx_sockaddr_t sockaddr; + struct sockaddr *sockaddr; socklen_t socklen; + ngx_str_t addr_text; /* server ctx */ ngx_stream_conf_ctx_t *ctx; Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_access_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_core_module.c (+33 -42) 93% =================================================================== --- vendor/nginx-1.15.8/src/stream/ngx_stream_core_module.c 2019-03-25 12:44:08 +0900 (3c4027b77) +++ vendor/nginx-1.15.10/src/stream/ngx_stream_core_module.c 2019-03-27 11:40:45 +0900 (9b6afe974) @@ -577,7 +577,7 @@ ngx_stream_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ngx_str_t *value, size; ngx_url_t u; - ngx_uint_t i, backlog; + ngx_uint_t i, n, backlog; ngx_stream_listen_t *ls, *als; ngx_stream_core_main_conf_t *cmcf; @@ -602,21 +602,17 @@ ngx_stream_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) cmcf = ngx_stream_conf_get_module_main_conf(cf, ngx_stream_core_module); - ls = ngx_array_push(&cmcf->listen); + ls = ngx_array_push_n(&cmcf->listen, u.naddrs); if (ls == NULL) { return NGX_CONF_ERROR; } ngx_memzero(ls, sizeof(ngx_stream_listen_t)); - ngx_memcpy(&ls->sockaddr.sockaddr, &u.sockaddr, u.socklen); - - ls->socklen = u.socklen; ls->backlog = NGX_LISTEN_BACKLOG; ls->rcvbuf = -1; ls->sndbuf = -1; ls->type = SOCK_STREAM; - ls->wildcard = u.wildcard; ls->ctx = cf->ctx; #if (NGX_HAVE_INET6) @@ -688,35 +684,20 @@ ngx_stream_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) { #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) - size_t len; - u_char buf[NGX_SOCKADDR_STRLEN]; - - if (ls->sockaddr.sockaddr.sa_family == AF_INET6) { - - if (ngx_strcmp(&value[i].data[10], "n") == 0) { - ls->ipv6only = 1; - - } else if (ngx_strcmp(&value[i].data[10], "ff") == 0) { - ls->ipv6only = 0; - - } else { - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "invalid ipv6only flags \"%s\"", - &value[i].data[9]); - return NGX_CONF_ERROR; - } + if (ngx_strcmp(&value[i].data[10], "n") == 0) { + ls->ipv6only = 1; - ls->bind = 1; + } else if (ngx_strcmp(&value[i].data[10], "ff") == 0) { + ls->ipv6only = 0; } else { - len = ngx_sock_ntop(&ls->sockaddr.sockaddr, ls->socklen, buf, - NGX_SOCKADDR_STRLEN, 1); - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "ipv6only is not supported " - "on addr \"%*s\", ignored", len, buf); + "invalid ipv6only flags \"%s\"", + &value[i].data[9]); + return NGX_CONF_ERROR; } + ls->bind = 1; continue; #else ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, @@ -882,21 +863,31 @@ ngx_stream_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) als = cmcf->listen.elts; - for (i = 0; i < cmcf->listen.nelts - 1; i++) { - if (ls->type != als[i].type) { - continue; - } + for (n = 0; n < u.naddrs; n++) { + ls[n] = ls[0]; - if (ngx_cmp_sockaddr(&als[i].sockaddr.sockaddr, als[i].socklen, - &ls->sockaddr.sockaddr, ls->socklen, 1) - != NGX_OK) - { - continue; - } + ls[n].sockaddr = u.addrs[n].sockaddr; + ls[n].socklen = u.addrs[n].socklen; + ls[n].addr_text = u.addrs[n].name; + ls[n].wildcard = ngx_inet_wildcard(ls[n].sockaddr); - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "duplicate \"%V\" address and port pair", &u.url); - return NGX_CONF_ERROR; + for (i = 0; i < cmcf->listen.nelts - u.naddrs + n; i++) { + if (ls[n].type != als[i].type) { + continue; + } + + if (ngx_cmp_sockaddr(als[i].sockaddr, als[i].socklen, + ls[n].sockaddr, ls[n].socklen, 1) + != NGX_OK) + { + continue; + } + + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "duplicate \"%V\" address and port pair", + &ls[n].addr_text); + return NGX_CONF_ERROR; + } } return NGX_CONF_OK; Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_geo_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_geoip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_limit_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_log_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_map_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_proxy_module.c (+4 -3) 99% =================================================================== --- vendor/nginx-1.15.8/src/stream/ngx_stream_proxy_module.c 2019-03-25 12:44:08 +0900 (094931355) +++ vendor/nginx-1.15.10/src/stream/ngx_stream_proxy_module.c 2019-03-27 11:40:45 +0900 (127c8a4a4) @@ -1593,7 +1593,7 @@ ngx_stream_proxy_process(ngx_stream_session_t *s, ngx_uint_t from_upstream, break; } - if ((off_t) size > limit) { + if (c->type == SOCK_STREAM && (off_t) size > limit) { size = (size_t) limit; } } @@ -1667,13 +1667,13 @@ ngx_stream_proxy_process(ngx_stream_session_t *s, ngx_uint_t from_upstream, flags = src->read->eof ? NGX_CLOSE_EVENT : 0; - if (!src->shared && ngx_handle_read_event(src->read, flags) != NGX_OK) { + if (ngx_handle_read_event(src->read, flags) != NGX_OK) { ngx_stream_proxy_finalize(s, NGX_STREAM_INTERNAL_SERVER_ERROR); return; } if (dst) { - if (!dst->shared && ngx_handle_write_event(dst->write, 0) != NGX_OK) { + if (ngx_handle_write_event(dst->write, 0) != NGX_OK) { ngx_stream_proxy_finalize(s, NGX_STREAM_INTERNAL_SERVER_ERROR); return; } @@ -2096,6 +2096,7 @@ ngx_stream_proxy_set_ssl(ngx_conf_t *cf, ngx_stream_proxy_srv_conf_t *pscf) cln = ngx_pool_cleanup_add(cf->pool, 0); if (cln == NULL) { + ngx_ssl_cleanup_ctx(pscf->ssl); return NGX_ERROR; } Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_realip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_return_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_script.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_script.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_split_clients_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_ssl_module.c (+197 -5) 83% =================================================================== --- vendor/nginx-1.15.8/src/stream/ngx_stream_ssl_module.c 2019-03-25 12:44:08 +0900 (dcc33e1ce) +++ vendor/nginx-1.15.10/src/stream/ngx_stream_ssl_module.c 2019-03-27 11:40:45 +0900 (ec9524e07) @@ -22,6 +22,12 @@ static ngx_int_t ngx_stream_ssl_handler(ngx_stream_session_t *s); static ngx_int_t ngx_stream_ssl_init_connection(ngx_ssl_t *ssl, ngx_connection_t *c); static void ngx_stream_ssl_handshake_handler(ngx_connection_t *c); +#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME +int ngx_stream_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg); +#endif +#ifdef SSL_R_CERT_CB_ERROR +static int ngx_stream_ssl_certificate(ngx_ssl_conn_t *ssl_conn, void *arg); +#endif static ngx_int_t ngx_stream_ssl_static_variable(ngx_stream_session_t *s, ngx_stream_variable_value_t *v, uintptr_t data); static ngx_int_t ngx_stream_ssl_variable(ngx_stream_session_t *s, @@ -32,6 +38,9 @@ static void *ngx_stream_ssl_create_conf(ngx_conf_t *cf); static char *ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child); +static ngx_int_t ngx_stream_ssl_compile_certificates(ngx_conf_t *cf, + ngx_stream_ssl_conf_t *conf); + static char *ngx_stream_ssl_password_file(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); static char *ngx_stream_ssl_session_cache(ngx_conf_t *cf, ngx_command_t *cmd, @@ -408,6 +417,73 @@ ngx_stream_ssl_handshake_handler(ngx_connection_t *c) } +#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME + +int +ngx_stream_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg) +{ + return SSL_TLSEXT_ERR_OK; +} + +#endif + + +#ifdef SSL_R_CERT_CB_ERROR + +int +ngx_stream_ssl_certificate(ngx_ssl_conn_t *ssl_conn, void *arg) +{ + ngx_str_t cert, key; + ngx_uint_t i, nelts; + ngx_connection_t *c; + ngx_stream_session_t *s; + ngx_stream_ssl_conf_t *sslcf; + ngx_stream_complex_value_t *certs, *keys; + + c = ngx_ssl_get_connection(ssl_conn); + + if (c->ssl->handshaked) { + return 0; + } + + s = c->data; + + sslcf = arg; + + nelts = sslcf->certificate_values->nelts; + certs = sslcf->certificate_values->elts; + keys = sslcf->certificate_key_values->elts; + + for (i = 0; i < nelts; i++) { + + if (ngx_stream_complex_value(s, &certs[i], &cert) != NGX_OK) { + return 0; + } + + ngx_log_debug1(NGX_LOG_DEBUG_STREAM, c->log, 0, + "ssl cert: \"%s\"", cert.data); + + if (ngx_stream_complex_value(s, &keys[i], &key) != NGX_OK) { + return 0; + } + + ngx_log_debug1(NGX_LOG_DEBUG_STREAM, c->log, 0, + "ssl key: \"%s\"", key.data); + + if (ngx_ssl_connection_certificate(c, c->pool, &cert, &key, + sslcf->passwords) + != NGX_OK) + { + return 0; + } + } + + return 1; +} + +#endif + + static ngx_int_t ngx_stream_ssl_static_variable(ngx_stream_session_t *s, ngx_stream_variable_value_t *v, uintptr_t data) @@ -505,6 +581,7 @@ ngx_stream_ssl_create_conf(ngx_conf_t *cf) * * scf->listen = 0; * scf->protocols = 0; + * scf->certificate_values = NULL; * scf->dhparam = { 0, NULL }; * scf->ecdh_curve = { 0, NULL }; * scf->client_certificate = { 0, NULL }; @@ -613,19 +690,50 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) cln = ngx_pool_cleanup_add(cf->pool, 0); if (cln == NULL) { + ngx_ssl_cleanup_ctx(&conf->ssl); return NGX_CONF_ERROR; } cln->handler = ngx_ssl_cleanup_ctx; cln->data = &conf->ssl; - if (ngx_ssl_certificates(cf, &conf->ssl, conf->certificates, - conf->certificate_keys, conf->passwords) - != NGX_OK) - { +#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME + SSL_CTX_set_tlsext_servername_callback(conf->ssl.ctx, + ngx_stream_ssl_servername); +#endif + + if (ngx_stream_ssl_compile_certificates(cf, conf) != NGX_OK) { return NGX_CONF_ERROR; } + if (conf->certificate_values) { + +#ifdef SSL_R_CERT_CB_ERROR + + /* install callback to lookup certificates */ + + SSL_CTX_set_cert_cb(conf->ssl.ctx, ngx_stream_ssl_certificate, conf); + +#else + ngx_log_error(NGX_LOG_EMERG, cf->log, 0, + "variables in " + "\"ssl_certificate\" and \"ssl_certificate_key\" " + "directives are not supported on this platform"); + return NGX_CONF_ERROR; +#endif + + } else { + + /* configure certificates */ + + if (ngx_ssl_certificates(cf, &conf->ssl, conf->certificates, + conf->certificate_keys, conf->passwords) + != NGX_OK) + { + return NGX_CONF_ERROR; + } + } + if (ngx_ssl_ciphers(cf, &conf->ssl, &conf->ciphers, conf->prefer_server_ciphers) != NGX_OK) @@ -678,7 +786,7 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) } if (ngx_ssl_session_cache(&conf->ssl, &ngx_stream_ssl_sess_id_ctx, - conf->builtin_session_cache, + conf->certificates, conf->builtin_session_cache, conf->shm_zone, conf->session_timeout) != NGX_OK) { @@ -707,6 +815,90 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) } +static ngx_int_t +ngx_stream_ssl_compile_certificates(ngx_conf_t *cf, + ngx_stream_ssl_conf_t *conf) +{ + ngx_str_t *cert, *key; + ngx_uint_t i, nelts; + ngx_stream_complex_value_t *cv; + ngx_stream_compile_complex_value_t ccv; + + cert = conf->certificates->elts; + key = conf->certificate_keys->elts; + nelts = conf->certificates->nelts; + + for (i = 0; i < nelts; i++) { + + if (ngx_stream_script_variables_count(&cert[i])) { + goto found; + } + + if (ngx_stream_script_variables_count(&key[i])) { + goto found; + } + } + + return NGX_OK; + +found: + + conf->certificate_values = ngx_array_create(cf->pool, nelts, + sizeof(ngx_stream_complex_value_t)); + if (conf->certificate_values == NULL) { + return NGX_ERROR; + } + + conf->certificate_key_values = ngx_array_create(cf->pool, nelts, + sizeof(ngx_stream_complex_value_t)); + if (conf->certificate_key_values == NULL) { + return NGX_ERROR; + } + + for (i = 0; i < nelts; i++) { + + cv = ngx_array_push(conf->certificate_values); + if (cv == NULL) { + return NGX_ERROR; + } + + ngx_memzero(&ccv, sizeof(ngx_stream_compile_complex_value_t)); + + ccv.cf = cf; + ccv.value = &cert[i]; + ccv.complex_value = cv; + ccv.zero = 1; + + if (ngx_stream_compile_complex_value(&ccv) != NGX_OK) { + return NGX_ERROR; + } + + cv = ngx_array_push(conf->certificate_key_values); + if (cv == NULL) { + return NGX_ERROR; + } + + ngx_memzero(&ccv, sizeof(ngx_stream_compile_complex_value_t)); + + ccv.cf = cf; + ccv.value = &key[i]; + ccv.complex_value = cv; + ccv.zero = 1; + + if (ngx_stream_compile_complex_value(&ccv) != NGX_OK) { + return NGX_ERROR; + } + } + + conf->passwords = ngx_ssl_preserve_passwords(cf, conf->passwords); + if (conf->passwords == NULL) { + return NGX_ERROR; + } + + return NGX_OK; +} + + static char * ngx_stream_ssl_password_file(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) { Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_ssl_module.h (+3 -0) 92% =================================================================== --- vendor/nginx-1.15.8/src/stream/ngx_stream_ssl_module.h 2019-03-25 12:44:08 +0900 (9f8f01cf1) +++ vendor/nginx-1.15.10/src/stream/ngx_stream_ssl_module.h 2019-03-27 11:40:45 +0900 (6cb4140a8) @@ -34,6 +34,9 @@ typedef struct { ngx_array_t *certificates; ngx_array_t *certificate_keys; + ngx_array_t *certificate_values; + ngx_array_t *certificate_key_values; + ngx_str_t dhparam; ngx_str_t ecdh_curve; ngx_str_t client_certificate; Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_ssl_preread_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_upstream.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_upstream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_hash_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_least_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_random_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_round_robin.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_round_robin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_upstream_zone_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_variables.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_variables.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.10/src/stream/ngx_stream_write_filter_module.c (+0 -0) 100% ===================================================================