Kentaro Hayashi
null+****@clear*****
Tue Jul 24 00:28:29 JST 2018
Kentaro Hayashi 2018-07-24 00:28:29 +0900 (Tue, 24 Jul 2018) New Revision: cb950c9d634159594f2d1f9c7c38ca8ca72df197 https://github.com/groonga/groonga/commit/cb950c9d634159594f2d1f9c7c38ca8ca72df197 Message: nginx: update to 1.15.1 $ ./update_nginx.sh 1.15.1 Added files: vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_random_module.c vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_random_module.c Modified files: nginx_version Renamed files: vendor/nginx-1.15.1/auto/cc/acc (from vendor/nginx-1.15.0/auto/cc/acc) vendor/nginx-1.15.1/auto/cc/bcc (from vendor/nginx-1.15.0/auto/cc/bcc) vendor/nginx-1.15.1/auto/cc/ccc (from vendor/nginx-1.15.0/auto/cc/ccc) vendor/nginx-1.15.1/auto/cc/clang (from vendor/nginx-1.15.0/auto/cc/clang) vendor/nginx-1.15.1/auto/cc/conf (from vendor/nginx-1.15.0/auto/cc/conf) vendor/nginx-1.15.1/auto/cc/gcc (from vendor/nginx-1.15.0/auto/cc/gcc) vendor/nginx-1.15.1/auto/cc/icc (from vendor/nginx-1.15.0/auto/cc/icc) vendor/nginx-1.15.1/auto/cc/msvc (from vendor/nginx-1.15.0/auto/cc/msvc) vendor/nginx-1.15.1/auto/cc/name (from vendor/nginx-1.15.0/auto/cc/name) vendor/nginx-1.15.1/auto/cc/owc (from vendor/nginx-1.15.0/auto/cc/owc) vendor/nginx-1.15.1/auto/cc/sunc (from vendor/nginx-1.15.0/auto/cc/sunc) vendor/nginx-1.15.1/auto/configure (from vendor/nginx-1.15.0/auto/configure) vendor/nginx-1.15.1/auto/define (from vendor/nginx-1.15.0/auto/define) vendor/nginx-1.15.1/auto/endianness (from vendor/nginx-1.15.0/auto/endianness) vendor/nginx-1.15.1/auto/feature (from vendor/nginx-1.15.0/auto/feature) vendor/nginx-1.15.1/auto/have (from vendor/nginx-1.15.0/auto/have) vendor/nginx-1.15.1/auto/have_headers (from vendor/nginx-1.15.0/auto/have_headers) vendor/nginx-1.15.1/auto/headers (from vendor/nginx-1.15.0/auto/headers) vendor/nginx-1.15.1/auto/include (from vendor/nginx-1.15.0/auto/include) vendor/nginx-1.15.1/auto/init (from vendor/nginx-1.15.0/auto/init) vendor/nginx-1.15.1/auto/install (from vendor/nginx-1.15.0/auto/install) vendor/nginx-1.15.1/auto/lib/conf (from vendor/nginx-1.15.0/auto/lib/conf) vendor/nginx-1.15.1/auto/lib/geoip/conf (from vendor/nginx-1.15.0/auto/lib/geoip/conf) vendor/nginx-1.15.1/auto/lib/google-perftools/conf (from vendor/nginx-1.15.0/auto/lib/google-perftools/conf) vendor/nginx-1.15.1/auto/lib/libatomic/conf (from vendor/nginx-1.15.0/auto/lib/libatomic/conf) vendor/nginx-1.15.1/auto/lib/libatomic/make (from vendor/nginx-1.15.0/auto/lib/libatomic/make) vendor/nginx-1.15.1/auto/lib/libgd/conf (from vendor/nginx-1.15.0/auto/lib/libgd/conf) vendor/nginx-1.15.1/auto/lib/libxslt/conf (from vendor/nginx-1.15.0/auto/lib/libxslt/conf) vendor/nginx-1.15.1/auto/lib/make (from vendor/nginx-1.15.0/auto/lib/make) vendor/nginx-1.15.1/auto/lib/openssl/conf (from vendor/nginx-1.15.0/auto/lib/openssl/conf) vendor/nginx-1.15.1/auto/lib/openssl/make (from vendor/nginx-1.15.0/auto/lib/openssl/make) vendor/nginx-1.15.1/auto/lib/openssl/makefile.bcc (from vendor/nginx-1.15.0/auto/lib/openssl/makefile.bcc) vendor/nginx-1.15.1/auto/lib/openssl/makefile.msvc (from vendor/nginx-1.15.0/auto/lib/openssl/makefile.msvc) vendor/nginx-1.15.1/auto/lib/pcre/conf (from vendor/nginx-1.15.0/auto/lib/pcre/conf) vendor/nginx-1.15.1/auto/lib/pcre/make (from vendor/nginx-1.15.0/auto/lib/pcre/make) vendor/nginx-1.15.1/auto/lib/pcre/makefile.bcc (from vendor/nginx-1.15.0/auto/lib/pcre/makefile.bcc) vendor/nginx-1.15.1/auto/lib/pcre/makefile.msvc (from vendor/nginx-1.15.0/auto/lib/pcre/makefile.msvc) vendor/nginx-1.15.1/auto/lib/pcre/makefile.owc (from vendor/nginx-1.15.0/auto/lib/pcre/makefile.owc) vendor/nginx-1.15.1/auto/lib/perl/conf (from vendor/nginx-1.15.0/auto/lib/perl/conf) vendor/nginx-1.15.1/auto/lib/perl/make (from vendor/nginx-1.15.0/auto/lib/perl/make) vendor/nginx-1.15.1/auto/lib/zlib/conf (from vendor/nginx-1.15.0/auto/lib/zlib/conf) vendor/nginx-1.15.1/auto/lib/zlib/make (from vendor/nginx-1.15.0/auto/lib/zlib/make) vendor/nginx-1.15.1/auto/lib/zlib/makefile.bcc (from vendor/nginx-1.15.0/auto/lib/zlib/makefile.bcc) vendor/nginx-1.15.1/auto/lib/zlib/makefile.msvc (from vendor/nginx-1.15.0/auto/lib/zlib/makefile.msvc) vendor/nginx-1.15.1/auto/lib/zlib/makefile.owc (from vendor/nginx-1.15.0/auto/lib/zlib/makefile.owc) vendor/nginx-1.15.1/auto/make (from vendor/nginx-1.15.0/auto/make) vendor/nginx-1.15.1/auto/module (from vendor/nginx-1.15.0/auto/module) vendor/nginx-1.15.1/auto/modules (from vendor/nginx-1.15.0/auto/modules) vendor/nginx-1.15.1/auto/nohave (from vendor/nginx-1.15.0/auto/nohave) vendor/nginx-1.15.1/auto/options (from vendor/nginx-1.15.0/auto/options) vendor/nginx-1.15.1/auto/os/conf (from vendor/nginx-1.15.0/auto/os/conf) vendor/nginx-1.15.1/auto/os/darwin (from vendor/nginx-1.15.0/auto/os/darwin) vendor/nginx-1.15.1/auto/os/freebsd (from vendor/nginx-1.15.0/auto/os/freebsd) vendor/nginx-1.15.1/auto/os/linux (from vendor/nginx-1.15.0/auto/os/linux) vendor/nginx-1.15.1/auto/os/solaris (from vendor/nginx-1.15.0/auto/os/solaris) vendor/nginx-1.15.1/auto/os/win32 (from vendor/nginx-1.15.0/auto/os/win32) vendor/nginx-1.15.1/auto/sources (from vendor/nginx-1.15.0/auto/sources) vendor/nginx-1.15.1/auto/stubs (from vendor/nginx-1.15.0/auto/stubs) vendor/nginx-1.15.1/auto/summary (from vendor/nginx-1.15.0/auto/summary) vendor/nginx-1.15.1/auto/threads (from vendor/nginx-1.15.0/auto/threads) vendor/nginx-1.15.1/auto/types/sizeof (from vendor/nginx-1.15.0/auto/types/sizeof) vendor/nginx-1.15.1/auto/types/typedef (from vendor/nginx-1.15.0/auto/types/typedef) vendor/nginx-1.15.1/auto/types/uintptr_t (from vendor/nginx-1.15.0/auto/types/uintptr_t) vendor/nginx-1.15.1/auto/types/value (from vendor/nginx-1.15.0/auto/types/value) vendor/nginx-1.15.1/auto/unix (from vendor/nginx-1.15.0/auto/unix) vendor/nginx-1.15.1/conf/fastcgi.conf (from vendor/nginx-1.15.0/conf/fastcgi.conf) vendor/nginx-1.15.1/conf/fastcgi_params (from vendor/nginx-1.15.0/conf/fastcgi_params) vendor/nginx-1.15.1/conf/koi-utf (from vendor/nginx-1.15.0/conf/koi-utf) vendor/nginx-1.15.1/conf/koi-win (from vendor/nginx-1.15.0/conf/koi-win) vendor/nginx-1.15.1/conf/mime.types (from vendor/nginx-1.15.0/conf/mime.types) vendor/nginx-1.15.1/conf/nginx.conf (from vendor/nginx-1.15.0/conf/nginx.conf) vendor/nginx-1.15.1/conf/scgi_params (from vendor/nginx-1.15.0/conf/scgi_params) vendor/nginx-1.15.1/conf/uwsgi_params (from vendor/nginx-1.15.0/conf/uwsgi_params) vendor/nginx-1.15.1/conf/win-utf (from vendor/nginx-1.15.0/conf/win-utf) vendor/nginx-1.15.1/contrib/README (from vendor/nginx-1.15.0/contrib/README) vendor/nginx-1.15.1/contrib/geo2nginx.pl (from vendor/nginx-1.15.0/contrib/geo2nginx.pl) vendor/nginx-1.15.1/contrib/unicode2nginx/koi-utf (from vendor/nginx-1.15.0/contrib/unicode2nginx/koi-utf) vendor/nginx-1.15.1/contrib/unicode2nginx/unicode-to-nginx.pl (from vendor/nginx-1.15.0/contrib/unicode2nginx/unicode-to-nginx.pl) vendor/nginx-1.15.1/contrib/unicode2nginx/win-utf (from vendor/nginx-1.15.0/contrib/unicode2nginx/win-utf) vendor/nginx-1.15.1/contrib/vim/ftdetect/nginx.vim (from vendor/nginx-1.15.0/contrib/vim/ftdetect/nginx.vim) vendor/nginx-1.15.1/contrib/vim/ftplugin/nginx.vim (from vendor/nginx-1.15.0/contrib/vim/ftplugin/nginx.vim) vendor/nginx-1.15.1/contrib/vim/indent/nginx.vim (from vendor/nginx-1.15.0/contrib/vim/indent/nginx.vim) vendor/nginx-1.15.1/contrib/vim/syntax/nginx.vim (from vendor/nginx-1.15.0/contrib/vim/syntax/nginx.vim) vendor/nginx-1.15.1/docs/GNUmakefile (from vendor/nginx-1.15.0/docs/GNUmakefile) vendor/nginx-1.15.1/docs/dtd/change_log_conf.dtd (from vendor/nginx-1.15.0/docs/dtd/change_log_conf.dtd) vendor/nginx-1.15.1/docs/dtd/changes.dtd (from vendor/nginx-1.15.0/docs/dtd/changes.dtd) vendor/nginx-1.15.1/docs/html/50x.html (from vendor/nginx-1.15.0/docs/html/50x.html) vendor/nginx-1.15.1/docs/html/index.html (from vendor/nginx-1.15.0/docs/html/index.html) vendor/nginx-1.15.1/docs/man/nginx.8 (from vendor/nginx-1.15.0/docs/man/nginx.8) vendor/nginx-1.15.1/docs/text/LICENSE (from vendor/nginx-1.15.0/docs/text/LICENSE) vendor/nginx-1.15.1/docs/text/README (from vendor/nginx-1.15.0/docs/text/README) vendor/nginx-1.15.1/docs/xml/change_log_conf.xml (from vendor/nginx-1.15.0/docs/xml/change_log_conf.xml) vendor/nginx-1.15.1/docs/xml/nginx/changes.xml (from vendor/nginx-1.15.0/docs/xml/nginx/changes.xml) vendor/nginx-1.15.1/docs/xsls/changes.xsls (from vendor/nginx-1.15.0/docs/xsls/changes.xsls) vendor/nginx-1.15.1/docs/xslt/changes.xslt (from vendor/nginx-1.15.0/docs/xslt/changes.xslt) vendor/nginx-1.15.1/misc/GNUmakefile (from vendor/nginx-1.15.0/misc/GNUmakefile) vendor/nginx-1.15.1/misc/README (from vendor/nginx-1.15.0/misc/README) vendor/nginx-1.15.1/src/core/nginx.c (from vendor/nginx-1.15.0/src/core/nginx.c) vendor/nginx-1.15.1/src/core/nginx.h (from vendor/nginx-1.15.0/src/core/nginx.h) vendor/nginx-1.15.1/src/core/ngx_array.c (from vendor/nginx-1.15.0/src/core/ngx_array.c) vendor/nginx-1.15.1/src/core/ngx_array.h (from vendor/nginx-1.15.0/src/core/ngx_array.h) vendor/nginx-1.15.1/src/core/ngx_buf.c (from vendor/nginx-1.15.0/src/core/ngx_buf.c) vendor/nginx-1.15.1/src/core/ngx_buf.h (from vendor/nginx-1.15.0/src/core/ngx_buf.h) vendor/nginx-1.15.1/src/core/ngx_conf_file.c (from vendor/nginx-1.15.0/src/core/ngx_conf_file.c) vendor/nginx-1.15.1/src/core/ngx_conf_file.h (from vendor/nginx-1.15.0/src/core/ngx_conf_file.h) vendor/nginx-1.15.1/src/core/ngx_config.h (from vendor/nginx-1.15.0/src/core/ngx_config.h) vendor/nginx-1.15.1/src/core/ngx_connection.c (from vendor/nginx-1.15.0/src/core/ngx_connection.c) vendor/nginx-1.15.1/src/core/ngx_connection.h (from vendor/nginx-1.15.0/src/core/ngx_connection.h) vendor/nginx-1.15.1/src/core/ngx_core.h (from vendor/nginx-1.15.0/src/core/ngx_core.h) vendor/nginx-1.15.1/src/core/ngx_cpuinfo.c (from vendor/nginx-1.15.0/src/core/ngx_cpuinfo.c) vendor/nginx-1.15.1/src/core/ngx_crc.h (from vendor/nginx-1.15.0/src/core/ngx_crc.h) vendor/nginx-1.15.1/src/core/ngx_crc32.c (from vendor/nginx-1.15.0/src/core/ngx_crc32.c) vendor/nginx-1.15.1/src/core/ngx_crc32.h (from vendor/nginx-1.15.0/src/core/ngx_crc32.h) vendor/nginx-1.15.1/src/core/ngx_crypt.c (from vendor/nginx-1.15.0/src/core/ngx_crypt.c) vendor/nginx-1.15.1/src/core/ngx_crypt.h (from vendor/nginx-1.15.0/src/core/ngx_crypt.h) vendor/nginx-1.15.1/src/core/ngx_cycle.c (from vendor/nginx-1.15.0/src/core/ngx_cycle.c) vendor/nginx-1.15.1/src/core/ngx_cycle.h (from vendor/nginx-1.15.0/src/core/ngx_cycle.h) vendor/nginx-1.15.1/src/core/ngx_file.c (from vendor/nginx-1.15.0/src/core/ngx_file.c) vendor/nginx-1.15.1/src/core/ngx_file.h (from vendor/nginx-1.15.0/src/core/ngx_file.h) vendor/nginx-1.15.1/src/core/ngx_hash.c (from vendor/nginx-1.15.0/src/core/ngx_hash.c) vendor/nginx-1.15.1/src/core/ngx_hash.h (from vendor/nginx-1.15.0/src/core/ngx_hash.h) vendor/nginx-1.15.1/src/core/ngx_inet.c (from vendor/nginx-1.15.0/src/core/ngx_inet.c) vendor/nginx-1.15.1/src/core/ngx_inet.h (from vendor/nginx-1.15.0/src/core/ngx_inet.h) vendor/nginx-1.15.1/src/core/ngx_list.c (from vendor/nginx-1.15.0/src/core/ngx_list.c) vendor/nginx-1.15.1/src/core/ngx_list.h (from vendor/nginx-1.15.0/src/core/ngx_list.h) vendor/nginx-1.15.1/src/core/ngx_log.c (from vendor/nginx-1.15.0/src/core/ngx_log.c) vendor/nginx-1.15.1/src/core/ngx_log.h (from vendor/nginx-1.15.0/src/core/ngx_log.h) vendor/nginx-1.15.1/src/core/ngx_md5.c (from vendor/nginx-1.15.0/src/core/ngx_md5.c) vendor/nginx-1.15.1/src/core/ngx_md5.h (from vendor/nginx-1.15.0/src/core/ngx_md5.h) vendor/nginx-1.15.1/src/core/ngx_module.c (from vendor/nginx-1.15.0/src/core/ngx_module.c) vendor/nginx-1.15.1/src/core/ngx_module.h (from vendor/nginx-1.15.0/src/core/ngx_module.h) vendor/nginx-1.15.1/src/core/ngx_murmurhash.c (from vendor/nginx-1.15.0/src/core/ngx_murmurhash.c) vendor/nginx-1.15.1/src/core/ngx_murmurhash.h (from vendor/nginx-1.15.0/src/core/ngx_murmurhash.h) vendor/nginx-1.15.1/src/core/ngx_open_file_cache.c (from vendor/nginx-1.15.0/src/core/ngx_open_file_cache.c) vendor/nginx-1.15.1/src/core/ngx_open_file_cache.h (from vendor/nginx-1.15.0/src/core/ngx_open_file_cache.h) vendor/nginx-1.15.1/src/core/ngx_output_chain.c (from vendor/nginx-1.15.0/src/core/ngx_output_chain.c) vendor/nginx-1.15.1/src/core/ngx_palloc.c (from vendor/nginx-1.15.0/src/core/ngx_palloc.c) vendor/nginx-1.15.1/src/core/ngx_palloc.h (from vendor/nginx-1.15.0/src/core/ngx_palloc.h) vendor/nginx-1.15.1/src/core/ngx_parse.c (from vendor/nginx-1.15.0/src/core/ngx_parse.c) vendor/nginx-1.15.1/src/core/ngx_parse.h (from vendor/nginx-1.15.0/src/core/ngx_parse.h) vendor/nginx-1.15.1/src/core/ngx_parse_time.c (from vendor/nginx-1.15.0/src/core/ngx_parse_time.c) vendor/nginx-1.15.1/src/core/ngx_parse_time.h (from vendor/nginx-1.15.0/src/core/ngx_parse_time.h) vendor/nginx-1.15.1/src/core/ngx_proxy_protocol.c (from vendor/nginx-1.15.0/src/core/ngx_proxy_protocol.c) vendor/nginx-1.15.1/src/core/ngx_proxy_protocol.h (from vendor/nginx-1.15.0/src/core/ngx_proxy_protocol.h) vendor/nginx-1.15.1/src/core/ngx_queue.c (from vendor/nginx-1.15.0/src/core/ngx_queue.c) vendor/nginx-1.15.1/src/core/ngx_queue.h (from vendor/nginx-1.15.0/src/core/ngx_queue.h) vendor/nginx-1.15.1/src/core/ngx_radix_tree.c (from vendor/nginx-1.15.0/src/core/ngx_radix_tree.c) vendor/nginx-1.15.1/src/core/ngx_radix_tree.h (from vendor/nginx-1.15.0/src/core/ngx_radix_tree.h) vendor/nginx-1.15.1/src/core/ngx_rbtree.c (from vendor/nginx-1.15.0/src/core/ngx_rbtree.c) vendor/nginx-1.15.1/src/core/ngx_rbtree.h (from vendor/nginx-1.15.0/src/core/ngx_rbtree.h) vendor/nginx-1.15.1/src/core/ngx_regex.c (from vendor/nginx-1.15.0/src/core/ngx_regex.c) vendor/nginx-1.15.1/src/core/ngx_regex.h (from vendor/nginx-1.15.0/src/core/ngx_regex.h) vendor/nginx-1.15.1/src/core/ngx_resolver.c (from vendor/nginx-1.15.0/src/core/ngx_resolver.c) vendor/nginx-1.15.1/src/core/ngx_resolver.h (from vendor/nginx-1.15.0/src/core/ngx_resolver.h) vendor/nginx-1.15.1/src/core/ngx_rwlock.c (from vendor/nginx-1.15.0/src/core/ngx_rwlock.c) vendor/nginx-1.15.1/src/core/ngx_rwlock.h (from vendor/nginx-1.15.0/src/core/ngx_rwlock.h) vendor/nginx-1.15.1/src/core/ngx_sha1.c (from vendor/nginx-1.15.0/src/core/ngx_sha1.c) vendor/nginx-1.15.1/src/core/ngx_sha1.h (from vendor/nginx-1.15.0/src/core/ngx_sha1.h) vendor/nginx-1.15.1/src/core/ngx_shmtx.c (from vendor/nginx-1.15.0/src/core/ngx_shmtx.c) vendor/nginx-1.15.1/src/core/ngx_shmtx.h (from vendor/nginx-1.15.0/src/core/ngx_shmtx.h) vendor/nginx-1.15.1/src/core/ngx_slab.c (from vendor/nginx-1.15.0/src/core/ngx_slab.c) vendor/nginx-1.15.1/src/core/ngx_slab.h (from vendor/nginx-1.15.0/src/core/ngx_slab.h) vendor/nginx-1.15.1/src/core/ngx_spinlock.c (from vendor/nginx-1.15.0/src/core/ngx_spinlock.c) vendor/nginx-1.15.1/src/core/ngx_string.c (from vendor/nginx-1.15.0/src/core/ngx_string.c) vendor/nginx-1.15.1/src/core/ngx_string.h (from vendor/nginx-1.15.0/src/core/ngx_string.h) vendor/nginx-1.15.1/src/core/ngx_syslog.c (from vendor/nginx-1.15.0/src/core/ngx_syslog.c) vendor/nginx-1.15.1/src/core/ngx_syslog.h (from vendor/nginx-1.15.0/src/core/ngx_syslog.h) vendor/nginx-1.15.1/src/core/ngx_thread_pool.c (from vendor/nginx-1.15.0/src/core/ngx_thread_pool.c) vendor/nginx-1.15.1/src/core/ngx_thread_pool.h (from vendor/nginx-1.15.0/src/core/ngx_thread_pool.h) vendor/nginx-1.15.1/src/core/ngx_times.c (from vendor/nginx-1.15.0/src/core/ngx_times.c) vendor/nginx-1.15.1/src/core/ngx_times.h (from vendor/nginx-1.15.0/src/core/ngx_times.h) vendor/nginx-1.15.1/src/event/modules/ngx_devpoll_module.c (from vendor/nginx-1.15.0/src/event/modules/ngx_devpoll_module.c) vendor/nginx-1.15.1/src/event/modules/ngx_epoll_module.c (from vendor/nginx-1.15.0/src/event/modules/ngx_epoll_module.c) vendor/nginx-1.15.1/src/event/modules/ngx_eventport_module.c (from vendor/nginx-1.15.0/src/event/modules/ngx_eventport_module.c) vendor/nginx-1.15.1/src/event/modules/ngx_iocp_module.c (from vendor/nginx-1.15.0/src/event/modules/ngx_iocp_module.c) vendor/nginx-1.15.1/src/event/modules/ngx_iocp_module.h (from vendor/nginx-1.15.0/src/event/modules/ngx_iocp_module.h) vendor/nginx-1.15.1/src/event/modules/ngx_kqueue_module.c (from vendor/nginx-1.15.0/src/event/modules/ngx_kqueue_module.c) vendor/nginx-1.15.1/src/event/modules/ngx_poll_module.c (from vendor/nginx-1.15.0/src/event/modules/ngx_poll_module.c) vendor/nginx-1.15.1/src/event/modules/ngx_select_module.c (from vendor/nginx-1.15.0/src/event/modules/ngx_select_module.c) vendor/nginx-1.15.1/src/event/modules/ngx_win32_select_module.c (from vendor/nginx-1.15.0/src/event/modules/ngx_win32_select_module.c) vendor/nginx-1.15.1/src/event/ngx_event.c (from vendor/nginx-1.15.0/src/event/ngx_event.c) vendor/nginx-1.15.1/src/event/ngx_event.h (from vendor/nginx-1.15.0/src/event/ngx_event.h) vendor/nginx-1.15.1/src/event/ngx_event_accept.c (from vendor/nginx-1.15.0/src/event/ngx_event_accept.c) vendor/nginx-1.15.1/src/event/ngx_event_acceptex.c (from vendor/nginx-1.15.0/src/event/ngx_event_acceptex.c) vendor/nginx-1.15.1/src/event/ngx_event_connect.c (from vendor/nginx-1.15.0/src/event/ngx_event_connect.c) vendor/nginx-1.15.1/src/event/ngx_event_connect.h (from vendor/nginx-1.15.0/src/event/ngx_event_connect.h) vendor/nginx-1.15.1/src/event/ngx_event_connectex.c (from vendor/nginx-1.15.0/src/event/ngx_event_connectex.c) vendor/nginx-1.15.1/src/event/ngx_event_openssl.c (from vendor/nginx-1.15.0/src/event/ngx_event_openssl.c) vendor/nginx-1.15.1/src/event/ngx_event_openssl.h (from vendor/nginx-1.15.0/src/event/ngx_event_openssl.h) vendor/nginx-1.15.1/src/event/ngx_event_openssl_stapling.c (from vendor/nginx-1.15.0/src/event/ngx_event_openssl_stapling.c) vendor/nginx-1.15.1/src/event/ngx_event_pipe.c (from vendor/nginx-1.15.0/src/event/ngx_event_pipe.c) vendor/nginx-1.15.1/src/event/ngx_event_pipe.h (from vendor/nginx-1.15.0/src/event/ngx_event_pipe.h) vendor/nginx-1.15.1/src/event/ngx_event_posted.c (from vendor/nginx-1.15.0/src/event/ngx_event_posted.c) vendor/nginx-1.15.1/src/event/ngx_event_posted.h (from vendor/nginx-1.15.0/src/event/ngx_event_posted.h) vendor/nginx-1.15.1/src/event/ngx_event_timer.c (from vendor/nginx-1.15.0/src/event/ngx_event_timer.c) vendor/nginx-1.15.1/src/event/ngx_event_timer.h (from vendor/nginx-1.15.0/src/event/ngx_event_timer.h) vendor/nginx-1.15.1/src/event/ngx_event_udp.c (from vendor/nginx-1.15.0/src/event/ngx_event_udp.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_access_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_access_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_addition_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_addition_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_auth_basic_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_auth_basic_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_auth_request_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_auth_request_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_autoindex_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_autoindex_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_browser_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_browser_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_charset_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_charset_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_chunked_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_chunked_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_dav_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_dav_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_degradation_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_degradation_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_empty_gif_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_empty_gif_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_fastcgi_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_fastcgi_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_flv_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_flv_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_geo_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_geo_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_geoip_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_geoip_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_grpc_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_grpc_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_gunzip_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_gunzip_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_gzip_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_gzip_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_gzip_static_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_gzip_static_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_headers_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_headers_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_image_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_image_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_index_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_index_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_limit_conn_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_limit_conn_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_limit_req_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_limit_req_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_log_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_log_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_map_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_map_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_memcached_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_memcached_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_mirror_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_mirror_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_mp4_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_mp4_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_not_modified_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_not_modified_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_proxy_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_proxy_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_random_index_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_random_index_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_range_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_range_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_realip_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_realip_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_referer_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_referer_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_rewrite_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_rewrite_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_scgi_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_scgi_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_secure_link_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_secure_link_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_slice_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_slice_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_split_clients_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_split_clients_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_ssi_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_ssi_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_ssi_filter_module.h (from vendor/nginx-1.15.0/src/http/modules/ngx_http_ssi_filter_module.h) vendor/nginx-1.15.1/src/http/modules/ngx_http_ssl_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_ssl_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_ssl_module.h (from vendor/nginx-1.15.0/src/http/modules/ngx_http_ssl_module.h) vendor/nginx-1.15.1/src/http/modules/ngx_http_static_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_static_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_stub_status_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_stub_status_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_sub_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_sub_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_try_files_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_try_files_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_hash_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_upstream_hash_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_ip_hash_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_upstream_ip_hash_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_keepalive_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_upstream_keepalive_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_least_conn_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_upstream_least_conn_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_zone_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_upstream_zone_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_userid_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_userid_filter_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_uwsgi_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_uwsgi_module.c) vendor/nginx-1.15.1/src/http/modules/ngx_http_xslt_filter_module.c (from vendor/nginx-1.15.0/src/http/modules/ngx_http_xslt_filter_module.c) vendor/nginx-1.15.1/src/http/modules/perl/Makefile.PL (from vendor/nginx-1.15.0/src/http/modules/perl/Makefile.PL) vendor/nginx-1.15.1/src/http/modules/perl/nginx.pm (from vendor/nginx-1.15.0/src/http/modules/perl/nginx.pm) vendor/nginx-1.15.1/src/http/modules/perl/nginx.xs (from vendor/nginx-1.15.0/src/http/modules/perl/nginx.xs) vendor/nginx-1.15.1/src/http/modules/perl/ngx_http_perl_module.c (from vendor/nginx-1.15.0/src/http/modules/perl/ngx_http_perl_module.c) vendor/nginx-1.15.1/src/http/modules/perl/ngx_http_perl_module.h (from vendor/nginx-1.15.0/src/http/modules/perl/ngx_http_perl_module.h) vendor/nginx-1.15.1/src/http/modules/perl/typemap (from vendor/nginx-1.15.0/src/http/modules/perl/typemap) vendor/nginx-1.15.1/src/http/ngx_http.c (from vendor/nginx-1.15.0/src/http/ngx_http.c) vendor/nginx-1.15.1/src/http/ngx_http.h (from vendor/nginx-1.15.0/src/http/ngx_http.h) vendor/nginx-1.15.1/src/http/ngx_http_cache.h (from vendor/nginx-1.15.0/src/http/ngx_http_cache.h) vendor/nginx-1.15.1/src/http/ngx_http_config.h (from vendor/nginx-1.15.0/src/http/ngx_http_config.h) vendor/nginx-1.15.1/src/http/ngx_http_copy_filter_module.c (from vendor/nginx-1.15.0/src/http/ngx_http_copy_filter_module.c) vendor/nginx-1.15.1/src/http/ngx_http_core_module.c (from vendor/nginx-1.15.0/src/http/ngx_http_core_module.c) vendor/nginx-1.15.1/src/http/ngx_http_core_module.h (from vendor/nginx-1.15.0/src/http/ngx_http_core_module.h) vendor/nginx-1.15.1/src/http/ngx_http_file_cache.c (from vendor/nginx-1.15.0/src/http/ngx_http_file_cache.c) vendor/nginx-1.15.1/src/http/ngx_http_header_filter_module.c (from vendor/nginx-1.15.0/src/http/ngx_http_header_filter_module.c) vendor/nginx-1.15.1/src/http/ngx_http_parse.c (from vendor/nginx-1.15.0/src/http/ngx_http_parse.c) vendor/nginx-1.15.1/src/http/ngx_http_postpone_filter_module.c (from vendor/nginx-1.15.0/src/http/ngx_http_postpone_filter_module.c) vendor/nginx-1.15.1/src/http/ngx_http_request.c (from vendor/nginx-1.15.0/src/http/ngx_http_request.c) vendor/nginx-1.15.1/src/http/ngx_http_request.h (from vendor/nginx-1.15.0/src/http/ngx_http_request.h) vendor/nginx-1.15.1/src/http/ngx_http_request_body.c (from vendor/nginx-1.15.0/src/http/ngx_http_request_body.c) vendor/nginx-1.15.1/src/http/ngx_http_script.c (from vendor/nginx-1.15.0/src/http/ngx_http_script.c) vendor/nginx-1.15.1/src/http/ngx_http_script.h (from vendor/nginx-1.15.0/src/http/ngx_http_script.h) vendor/nginx-1.15.1/src/http/ngx_http_special_response.c (from vendor/nginx-1.15.0/src/http/ngx_http_special_response.c) vendor/nginx-1.15.1/src/http/ngx_http_upstream.c (from vendor/nginx-1.15.0/src/http/ngx_http_upstream.c) vendor/nginx-1.15.1/src/http/ngx_http_upstream.h (from vendor/nginx-1.15.0/src/http/ngx_http_upstream.h) vendor/nginx-1.15.1/src/http/ngx_http_upstream_round_robin.c (from vendor/nginx-1.15.0/src/http/ngx_http_upstream_round_robin.c) vendor/nginx-1.15.1/src/http/ngx_http_upstream_round_robin.h (from vendor/nginx-1.15.0/src/http/ngx_http_upstream_round_robin.h) vendor/nginx-1.15.1/src/http/ngx_http_variables.c (from vendor/nginx-1.15.0/src/http/ngx_http_variables.c) vendor/nginx-1.15.1/src/http/ngx_http_variables.h (from vendor/nginx-1.15.0/src/http/ngx_http_variables.h) vendor/nginx-1.15.1/src/http/ngx_http_write_filter_module.c (from vendor/nginx-1.15.0/src/http/ngx_http_write_filter_module.c) vendor/nginx-1.15.1/src/http/v2/ngx_http_v2.c (from vendor/nginx-1.15.0/src/http/v2/ngx_http_v2.c) vendor/nginx-1.15.1/src/http/v2/ngx_http_v2.h (from vendor/nginx-1.15.0/src/http/v2/ngx_http_v2.h) vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_encode.c (from vendor/nginx-1.15.0/src/http/v2/ngx_http_v2_encode.c) vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_filter_module.c (from vendor/nginx-1.15.0/src/http/v2/ngx_http_v2_filter_module.c) vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_huff_decode.c (from vendor/nginx-1.15.0/src/http/v2/ngx_http_v2_huff_decode.c) vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_huff_encode.c (from vendor/nginx-1.15.0/src/http/v2/ngx_http_v2_huff_encode.c) vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_module.c (from vendor/nginx-1.15.0/src/http/v2/ngx_http_v2_module.c) vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_module.h (from vendor/nginx-1.15.0/src/http/v2/ngx_http_v2_module.h) vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_table.c (from vendor/nginx-1.15.0/src/http/v2/ngx_http_v2_table.c) vendor/nginx-1.15.1/src/mail/ngx_mail.c (from vendor/nginx-1.15.0/src/mail/ngx_mail.c) vendor/nginx-1.15.1/src/mail/ngx_mail.h (from vendor/nginx-1.15.0/src/mail/ngx_mail.h) vendor/nginx-1.15.1/src/mail/ngx_mail_auth_http_module.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_auth_http_module.c) vendor/nginx-1.15.1/src/mail/ngx_mail_core_module.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_core_module.c) vendor/nginx-1.15.1/src/mail/ngx_mail_handler.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_handler.c) vendor/nginx-1.15.1/src/mail/ngx_mail_imap_handler.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_imap_handler.c) vendor/nginx-1.15.1/src/mail/ngx_mail_imap_module.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_imap_module.c) vendor/nginx-1.15.1/src/mail/ngx_mail_imap_module.h (from vendor/nginx-1.15.0/src/mail/ngx_mail_imap_module.h) vendor/nginx-1.15.1/src/mail/ngx_mail_parse.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_parse.c) vendor/nginx-1.15.1/src/mail/ngx_mail_pop3_handler.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_pop3_handler.c) vendor/nginx-1.15.1/src/mail/ngx_mail_pop3_module.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_pop3_module.c) vendor/nginx-1.15.1/src/mail/ngx_mail_pop3_module.h (from vendor/nginx-1.15.0/src/mail/ngx_mail_pop3_module.h) vendor/nginx-1.15.1/src/mail/ngx_mail_proxy_module.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_proxy_module.c) vendor/nginx-1.15.1/src/mail/ngx_mail_smtp_handler.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_smtp_handler.c) vendor/nginx-1.15.1/src/mail/ngx_mail_smtp_module.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_smtp_module.c) vendor/nginx-1.15.1/src/mail/ngx_mail_smtp_module.h (from vendor/nginx-1.15.0/src/mail/ngx_mail_smtp_module.h) vendor/nginx-1.15.1/src/mail/ngx_mail_ssl_module.c (from vendor/nginx-1.15.0/src/mail/ngx_mail_ssl_module.c) vendor/nginx-1.15.1/src/mail/ngx_mail_ssl_module.h (from vendor/nginx-1.15.0/src/mail/ngx_mail_ssl_module.h) vendor/nginx-1.15.1/src/misc/ngx_cpp_test_module.cpp (from vendor/nginx-1.15.0/src/misc/ngx_cpp_test_module.cpp) vendor/nginx-1.15.1/src/misc/ngx_google_perftools_module.c (from vendor/nginx-1.15.0/src/misc/ngx_google_perftools_module.c) vendor/nginx-1.15.1/src/os/unix/ngx_alloc.c (from vendor/nginx-1.15.0/src/os/unix/ngx_alloc.c) vendor/nginx-1.15.1/src/os/unix/ngx_alloc.h (from vendor/nginx-1.15.0/src/os/unix/ngx_alloc.h) vendor/nginx-1.15.1/src/os/unix/ngx_atomic.h (from vendor/nginx-1.15.0/src/os/unix/ngx_atomic.h) vendor/nginx-1.15.1/src/os/unix/ngx_channel.c (from vendor/nginx-1.15.0/src/os/unix/ngx_channel.c) vendor/nginx-1.15.1/src/os/unix/ngx_channel.h (from vendor/nginx-1.15.0/src/os/unix/ngx_channel.h) vendor/nginx-1.15.1/src/os/unix/ngx_daemon.c (from vendor/nginx-1.15.0/src/os/unix/ngx_daemon.c) vendor/nginx-1.15.1/src/os/unix/ngx_darwin.h (from vendor/nginx-1.15.0/src/os/unix/ngx_darwin.h) vendor/nginx-1.15.1/src/os/unix/ngx_darwin_config.h (from vendor/nginx-1.15.0/src/os/unix/ngx_darwin_config.h) vendor/nginx-1.15.1/src/os/unix/ngx_darwin_init.c (from vendor/nginx-1.15.0/src/os/unix/ngx_darwin_init.c) vendor/nginx-1.15.1/src/os/unix/ngx_darwin_sendfile_chain.c (from vendor/nginx-1.15.0/src/os/unix/ngx_darwin_sendfile_chain.c) vendor/nginx-1.15.1/src/os/unix/ngx_dlopen.c (from vendor/nginx-1.15.0/src/os/unix/ngx_dlopen.c) vendor/nginx-1.15.1/src/os/unix/ngx_dlopen.h (from vendor/nginx-1.15.0/src/os/unix/ngx_dlopen.h) vendor/nginx-1.15.1/src/os/unix/ngx_errno.c (from vendor/nginx-1.15.0/src/os/unix/ngx_errno.c) vendor/nginx-1.15.1/src/os/unix/ngx_errno.h (from vendor/nginx-1.15.0/src/os/unix/ngx_errno.h) vendor/nginx-1.15.1/src/os/unix/ngx_file_aio_read.c (from vendor/nginx-1.15.0/src/os/unix/ngx_file_aio_read.c) vendor/nginx-1.15.1/src/os/unix/ngx_files.c (from vendor/nginx-1.15.0/src/os/unix/ngx_files.c) vendor/nginx-1.15.1/src/os/unix/ngx_files.h (from vendor/nginx-1.15.0/src/os/unix/ngx_files.h) vendor/nginx-1.15.1/src/os/unix/ngx_freebsd.h (from vendor/nginx-1.15.0/src/os/unix/ngx_freebsd.h) vendor/nginx-1.15.1/src/os/unix/ngx_freebsd_config.h (from vendor/nginx-1.15.0/src/os/unix/ngx_freebsd_config.h) vendor/nginx-1.15.1/src/os/unix/ngx_freebsd_init.c (from vendor/nginx-1.15.0/src/os/unix/ngx_freebsd_init.c) vendor/nginx-1.15.1/src/os/unix/ngx_freebsd_sendfile_chain.c (from vendor/nginx-1.15.0/src/os/unix/ngx_freebsd_sendfile_chain.c) vendor/nginx-1.15.1/src/os/unix/ngx_gcc_atomic_amd64.h (from vendor/nginx-1.15.0/src/os/unix/ngx_gcc_atomic_amd64.h) vendor/nginx-1.15.1/src/os/unix/ngx_gcc_atomic_ppc.h (from vendor/nginx-1.15.0/src/os/unix/ngx_gcc_atomic_ppc.h) vendor/nginx-1.15.1/src/os/unix/ngx_gcc_atomic_sparc64.h (from vendor/nginx-1.15.0/src/os/unix/ngx_gcc_atomic_sparc64.h) vendor/nginx-1.15.1/src/os/unix/ngx_gcc_atomic_x86.h (from vendor/nginx-1.15.0/src/os/unix/ngx_gcc_atomic_x86.h) vendor/nginx-1.15.1/src/os/unix/ngx_linux.h (from vendor/nginx-1.15.0/src/os/unix/ngx_linux.h) vendor/nginx-1.15.1/src/os/unix/ngx_linux_aio_read.c (from vendor/nginx-1.15.0/src/os/unix/ngx_linux_aio_read.c) vendor/nginx-1.15.1/src/os/unix/ngx_linux_config.h (from vendor/nginx-1.15.0/src/os/unix/ngx_linux_config.h) vendor/nginx-1.15.1/src/os/unix/ngx_linux_init.c (from vendor/nginx-1.15.0/src/os/unix/ngx_linux_init.c) vendor/nginx-1.15.1/src/os/unix/ngx_linux_sendfile_chain.c (from vendor/nginx-1.15.0/src/os/unix/ngx_linux_sendfile_chain.c) vendor/nginx-1.15.1/src/os/unix/ngx_os.h (from vendor/nginx-1.15.0/src/os/unix/ngx_os.h) vendor/nginx-1.15.1/src/os/unix/ngx_posix_config.h (from vendor/nginx-1.15.0/src/os/unix/ngx_posix_config.h) vendor/nginx-1.15.1/src/os/unix/ngx_posix_init.c (from vendor/nginx-1.15.0/src/os/unix/ngx_posix_init.c) vendor/nginx-1.15.1/src/os/unix/ngx_process.c (from vendor/nginx-1.15.0/src/os/unix/ngx_process.c) vendor/nginx-1.15.1/src/os/unix/ngx_process.h (from vendor/nginx-1.15.0/src/os/unix/ngx_process.h) vendor/nginx-1.15.1/src/os/unix/ngx_process_cycle.c (from vendor/nginx-1.15.0/src/os/unix/ngx_process_cycle.c) vendor/nginx-1.15.1/src/os/unix/ngx_process_cycle.h (from vendor/nginx-1.15.0/src/os/unix/ngx_process_cycle.h) vendor/nginx-1.15.1/src/os/unix/ngx_readv_chain.c (from vendor/nginx-1.15.0/src/os/unix/ngx_readv_chain.c) vendor/nginx-1.15.1/src/os/unix/ngx_recv.c (from vendor/nginx-1.15.0/src/os/unix/ngx_recv.c) vendor/nginx-1.15.1/src/os/unix/ngx_send.c (from vendor/nginx-1.15.0/src/os/unix/ngx_send.c) vendor/nginx-1.15.1/src/os/unix/ngx_setaffinity.c (from vendor/nginx-1.15.0/src/os/unix/ngx_setaffinity.c) vendor/nginx-1.15.1/src/os/unix/ngx_setaffinity.h (from vendor/nginx-1.15.0/src/os/unix/ngx_setaffinity.h) vendor/nginx-1.15.1/src/os/unix/ngx_setproctitle.c (from vendor/nginx-1.15.0/src/os/unix/ngx_setproctitle.c) vendor/nginx-1.15.1/src/os/unix/ngx_setproctitle.h (from vendor/nginx-1.15.0/src/os/unix/ngx_setproctitle.h) vendor/nginx-1.15.1/src/os/unix/ngx_shmem.c (from vendor/nginx-1.15.0/src/os/unix/ngx_shmem.c) vendor/nginx-1.15.1/src/os/unix/ngx_shmem.h (from vendor/nginx-1.15.0/src/os/unix/ngx_shmem.h) vendor/nginx-1.15.1/src/os/unix/ngx_socket.c (from vendor/nginx-1.15.0/src/os/unix/ngx_socket.c) vendor/nginx-1.15.1/src/os/unix/ngx_socket.h (from vendor/nginx-1.15.0/src/os/unix/ngx_socket.h) vendor/nginx-1.15.1/src/os/unix/ngx_solaris.h (from vendor/nginx-1.15.0/src/os/unix/ngx_solaris.h) vendor/nginx-1.15.1/src/os/unix/ngx_solaris_config.h (from vendor/nginx-1.15.0/src/os/unix/ngx_solaris_config.h) vendor/nginx-1.15.1/src/os/unix/ngx_solaris_init.c (from vendor/nginx-1.15.0/src/os/unix/ngx_solaris_init.c) vendor/nginx-1.15.1/src/os/unix/ngx_solaris_sendfilev_chain.c (from vendor/nginx-1.15.0/src/os/unix/ngx_solaris_sendfilev_chain.c) vendor/nginx-1.15.1/src/os/unix/ngx_sunpro_amd64.il (from vendor/nginx-1.15.0/src/os/unix/ngx_sunpro_amd64.il) vendor/nginx-1.15.1/src/os/unix/ngx_sunpro_atomic_sparc64.h (from vendor/nginx-1.15.0/src/os/unix/ngx_sunpro_atomic_sparc64.h) vendor/nginx-1.15.1/src/os/unix/ngx_sunpro_sparc64.il (from vendor/nginx-1.15.0/src/os/unix/ngx_sunpro_sparc64.il) vendor/nginx-1.15.1/src/os/unix/ngx_sunpro_x86.il (from vendor/nginx-1.15.0/src/os/unix/ngx_sunpro_x86.il) vendor/nginx-1.15.1/src/os/unix/ngx_thread.h (from vendor/nginx-1.15.0/src/os/unix/ngx_thread.h) vendor/nginx-1.15.1/src/os/unix/ngx_thread_cond.c (from vendor/nginx-1.15.0/src/os/unix/ngx_thread_cond.c) vendor/nginx-1.15.1/src/os/unix/ngx_thread_id.c (from vendor/nginx-1.15.0/src/os/unix/ngx_thread_id.c) vendor/nginx-1.15.1/src/os/unix/ngx_thread_mutex.c (from vendor/nginx-1.15.0/src/os/unix/ngx_thread_mutex.c) vendor/nginx-1.15.1/src/os/unix/ngx_time.c (from vendor/nginx-1.15.0/src/os/unix/ngx_time.c) vendor/nginx-1.15.1/src/os/unix/ngx_time.h (from vendor/nginx-1.15.0/src/os/unix/ngx_time.h) vendor/nginx-1.15.1/src/os/unix/ngx_udp_recv.c (from vendor/nginx-1.15.0/src/os/unix/ngx_udp_recv.c) vendor/nginx-1.15.1/src/os/unix/ngx_udp_send.c (from vendor/nginx-1.15.0/src/os/unix/ngx_udp_send.c) vendor/nginx-1.15.1/src/os/unix/ngx_udp_sendmsg_chain.c (from vendor/nginx-1.15.0/src/os/unix/ngx_udp_sendmsg_chain.c) vendor/nginx-1.15.1/src/os/unix/ngx_user.c (from vendor/nginx-1.15.0/src/os/unix/ngx_user.c) vendor/nginx-1.15.1/src/os/unix/ngx_user.h (from vendor/nginx-1.15.0/src/os/unix/ngx_user.h) vendor/nginx-1.15.1/src/os/unix/ngx_writev_chain.c (from vendor/nginx-1.15.0/src/os/unix/ngx_writev_chain.c) vendor/nginx-1.15.1/src/os/win32/nginx.ico (from vendor/nginx-1.15.0/src/os/win32/nginx.ico) vendor/nginx-1.15.1/src/os/win32/nginx.rc (from vendor/nginx-1.15.0/src/os/win32/nginx.rc) vendor/nginx-1.15.1/src/os/win32/nginx_icon16.xpm (from vendor/nginx-1.15.0/src/os/win32/nginx_icon16.xpm) vendor/nginx-1.15.1/src/os/win32/nginx_icon32.xpm (from vendor/nginx-1.15.0/src/os/win32/nginx_icon32.xpm) vendor/nginx-1.15.1/src/os/win32/nginx_icon48.xpm (from vendor/nginx-1.15.0/src/os/win32/nginx_icon48.xpm) vendor/nginx-1.15.1/src/os/win32/ngx_alloc.c (from vendor/nginx-1.15.0/src/os/win32/ngx_alloc.c) vendor/nginx-1.15.1/src/os/win32/ngx_alloc.h (from vendor/nginx-1.15.0/src/os/win32/ngx_alloc.h) vendor/nginx-1.15.1/src/os/win32/ngx_atomic.h (from vendor/nginx-1.15.0/src/os/win32/ngx_atomic.h) vendor/nginx-1.15.1/src/os/win32/ngx_dlopen.c (from vendor/nginx-1.15.0/src/os/win32/ngx_dlopen.c) vendor/nginx-1.15.1/src/os/win32/ngx_dlopen.h (from vendor/nginx-1.15.0/src/os/win32/ngx_dlopen.h) vendor/nginx-1.15.1/src/os/win32/ngx_errno.c (from vendor/nginx-1.15.0/src/os/win32/ngx_errno.c) vendor/nginx-1.15.1/src/os/win32/ngx_errno.h (from vendor/nginx-1.15.0/src/os/win32/ngx_errno.h) vendor/nginx-1.15.1/src/os/win32/ngx_event_log.c (from vendor/nginx-1.15.0/src/os/win32/ngx_event_log.c) vendor/nginx-1.15.1/src/os/win32/ngx_files.c (from vendor/nginx-1.15.0/src/os/win32/ngx_files.c) vendor/nginx-1.15.1/src/os/win32/ngx_files.h (from vendor/nginx-1.15.0/src/os/win32/ngx_files.h) vendor/nginx-1.15.1/src/os/win32/ngx_os.h (from vendor/nginx-1.15.0/src/os/win32/ngx_os.h) vendor/nginx-1.15.1/src/os/win32/ngx_process.c (from vendor/nginx-1.15.0/src/os/win32/ngx_process.c) vendor/nginx-1.15.1/src/os/win32/ngx_process.h (from vendor/nginx-1.15.0/src/os/win32/ngx_process.h) vendor/nginx-1.15.1/src/os/win32/ngx_process_cycle.c (from vendor/nginx-1.15.0/src/os/win32/ngx_process_cycle.c) vendor/nginx-1.15.1/src/os/win32/ngx_process_cycle.h (from vendor/nginx-1.15.0/src/os/win32/ngx_process_cycle.h) vendor/nginx-1.15.1/src/os/win32/ngx_service.c (from vendor/nginx-1.15.0/src/os/win32/ngx_service.c) vendor/nginx-1.15.1/src/os/win32/ngx_shmem.c (from vendor/nginx-1.15.0/src/os/win32/ngx_shmem.c) vendor/nginx-1.15.1/src/os/win32/ngx_shmem.h (from vendor/nginx-1.15.0/src/os/win32/ngx_shmem.h) vendor/nginx-1.15.1/src/os/win32/ngx_socket.c (from vendor/nginx-1.15.0/src/os/win32/ngx_socket.c) vendor/nginx-1.15.1/src/os/win32/ngx_socket.h (from vendor/nginx-1.15.0/src/os/win32/ngx_socket.h) vendor/nginx-1.15.1/src/os/win32/ngx_stat.c (from vendor/nginx-1.15.0/src/os/win32/ngx_stat.c) vendor/nginx-1.15.1/src/os/win32/ngx_thread.c (from vendor/nginx-1.15.0/src/os/win32/ngx_thread.c) vendor/nginx-1.15.1/src/os/win32/ngx_thread.h (from vendor/nginx-1.15.0/src/os/win32/ngx_thread.h) vendor/nginx-1.15.1/src/os/win32/ngx_time.c (from vendor/nginx-1.15.0/src/os/win32/ngx_time.c) vendor/nginx-1.15.1/src/os/win32/ngx_time.h (from vendor/nginx-1.15.0/src/os/win32/ngx_time.h) vendor/nginx-1.15.1/src/os/win32/ngx_udp_wsarecv.c (from vendor/nginx-1.15.0/src/os/win32/ngx_udp_wsarecv.c) vendor/nginx-1.15.1/src/os/win32/ngx_user.c (from vendor/nginx-1.15.0/src/os/win32/ngx_user.c) vendor/nginx-1.15.1/src/os/win32/ngx_user.h (from vendor/nginx-1.15.0/src/os/win32/ngx_user.h) vendor/nginx-1.15.1/src/os/win32/ngx_win32_config.h (from vendor/nginx-1.15.0/src/os/win32/ngx_win32_config.h) vendor/nginx-1.15.1/src/os/win32/ngx_win32_init.c (from vendor/nginx-1.15.0/src/os/win32/ngx_win32_init.c) vendor/nginx-1.15.1/src/os/win32/ngx_wsarecv.c (from vendor/nginx-1.15.0/src/os/win32/ngx_wsarecv.c) vendor/nginx-1.15.1/src/os/win32/ngx_wsarecv_chain.c (from vendor/nginx-1.15.0/src/os/win32/ngx_wsarecv_chain.c) vendor/nginx-1.15.1/src/os/win32/ngx_wsasend.c (from vendor/nginx-1.15.0/src/os/win32/ngx_wsasend.c) vendor/nginx-1.15.1/src/os/win32/ngx_wsasend_chain.c (from vendor/nginx-1.15.0/src/os/win32/ngx_wsasend_chain.c) vendor/nginx-1.15.1/src/stream/ngx_stream.c (from vendor/nginx-1.15.0/src/stream/ngx_stream.c) vendor/nginx-1.15.1/src/stream/ngx_stream.h (from vendor/nginx-1.15.0/src/stream/ngx_stream.h) vendor/nginx-1.15.1/src/stream/ngx_stream_access_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_access_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_core_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_core_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_geo_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_geo_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_geoip_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_geoip_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_handler.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_handler.c) vendor/nginx-1.15.1/src/stream/ngx_stream_limit_conn_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_limit_conn_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_log_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_log_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_map_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_map_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_proxy_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_proxy_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_realip_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_realip_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_return_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_return_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_script.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_script.c) vendor/nginx-1.15.1/src/stream/ngx_stream_script.h (from vendor/nginx-1.15.0/src/stream/ngx_stream_script.h) vendor/nginx-1.15.1/src/stream/ngx_stream_split_clients_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_split_clients_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_ssl_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_ssl_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_ssl_module.h (from vendor/nginx-1.15.0/src/stream/ngx_stream_ssl_module.h) vendor/nginx-1.15.1/src/stream/ngx_stream_ssl_preread_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_ssl_preread_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_upstream.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_upstream.c) vendor/nginx-1.15.1/src/stream/ngx_stream_upstream.h (from vendor/nginx-1.15.0/src/stream/ngx_stream_upstream.h) vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_hash_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_upstream_hash_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_least_conn_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_upstream_least_conn_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_round_robin.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_upstream_round_robin.c) vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_round_robin.h (from vendor/nginx-1.15.0/src/stream/ngx_stream_upstream_round_robin.h) vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_zone_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_upstream_zone_module.c) vendor/nginx-1.15.1/src/stream/ngx_stream_variables.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_variables.c) vendor/nginx-1.15.1/src/stream/ngx_stream_variables.h (from vendor/nginx-1.15.0/src/stream/ngx_stream_variables.h) vendor/nginx-1.15.1/src/stream/ngx_stream_write_filter_module.c (from vendor/nginx-1.15.0/src/stream/ngx_stream_write_filter_module.c) Modified: nginx_version (+1 -1) =================================================================== --- nginx_version 2018-07-20 16:13:25 +0900 (141f2e805) +++ nginx_version 2018-07-24 00:28:29 +0900 (ace44233b) @@ -1 +1 @@ -1.15.0 +1.15.1 Renamed: vendor/nginx-1.15.1/auto/cc/acc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/ccc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/clang (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/gcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/icc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/name (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/cc/sunc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/configure (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/define (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/endianness (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/feature (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/have (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/have_headers (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/headers (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/include (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/init (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/install (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/geoip/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/google-perftools/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/libatomic/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/libatomic/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/libgd/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/libxslt/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/openssl/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/openssl/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/openssl/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/openssl/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/pcre/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/pcre/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/pcre/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/pcre/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/pcre/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/perl/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/perl/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/zlib/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/zlib/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/zlib/makefile.bcc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/zlib/makefile.msvc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/lib/zlib/makefile.owc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/make (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/module (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/modules (+21 -0) 98% =================================================================== --- vendor/nginx-1.15.0/auto/modules 2018-07-20 16:13:25 +0900 (73a9bae9b) +++ vendor/nginx-1.15.1/auto/modules 2018-07-24 00:28:29 +0900 (09bfcb08d) @@ -878,6 +878,17 @@ if [ $HTTP = YES ]; then . auto/module fi + if [ $HTTP_UPSTREAM_RANDOM = YES ]; then + ngx_module_name=ngx_http_upstream_random_module + ngx_module_incs= + ngx_module_deps= + ngx_module_srcs=src/http/modules/ngx_http_upstream_random_module.c + ngx_module_libs= + ngx_module_link=$HTTP_UPSTREAM_RANDOM + + . auto/module + fi + if [ $HTTP_UPSTREAM_KEEPALIVE = YES ]; then ngx_module_name=ngx_http_upstream_keepalive_module ngx_module_incs= @@ -1143,6 +1154,16 @@ if [ $STREAM != NO ]; then . auto/module fi + if [ $STREAM_UPSTREAM_RANDOM = YES ]; then + ngx_module_name=ngx_stream_upstream_random_module + ngx_module_deps= + ngx_module_srcs=src/stream/ngx_stream_upstream_random_module.c + ngx_module_libs= + ngx_module_link=$STREAM_UPSTREAM_RANDOM + + . auto/module + fi + if [ $STREAM_UPSTREAM_ZONE = YES ]; then have=NGX_STREAM_UPSTREAM_ZONE . auto/have Renamed: vendor/nginx-1.15.1/auto/nohave (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/options (+10 -0) 97% =================================================================== --- vendor/nginx-1.15.0/auto/options 2018-07-20 16:13:25 +0900 (59f0449d8) +++ vendor/nginx-1.15.1/auto/options 2018-07-24 00:28:29 +0900 (d8b421b0f) @@ -102,6 +102,7 @@ HTTP_GZIP_STATIC=NO HTTP_UPSTREAM_HASH=YES HTTP_UPSTREAM_IP_HASH=YES HTTP_UPSTREAM_LEAST_CONN=YES +HTTP_UPSTREAM_RANDOM=YES HTTP_UPSTREAM_KEEPALIVE=YES HTTP_UPSTREAM_ZONE=YES @@ -126,6 +127,7 @@ STREAM_SPLIT_CLIENTS=YES STREAM_RETURN=YES STREAM_UPSTREAM_HASH=YES STREAM_UPSTREAM_LEAST_CONN=YES +STREAM_UPSTREAM_RANDOM=YES STREAM_UPSTREAM_ZONE=YES STREAM_SSL_PREREAD=NO @@ -273,6 +275,8 @@ $0: warning: the \"--with-ipv6\" option is deprecated" --without-http_upstream_ip_hash_module) HTTP_UPSTREAM_IP_HASH=NO ;; --without-http_upstream_least_conn_module) HTTP_UPSTREAM_LEAST_CONN=NO ;; + --without-http_upstream_random_module) + HTTP_UPSTREAM_RANDOM=NO ;; --without-http_upstream_keepalive_module) HTTP_UPSTREAM_KEEPALIVE=NO ;; --without-http_upstream_zone_module) HTTP_UPSTREAM_ZONE=NO ;; @@ -325,6 +329,8 @@ use the \"--with-mail_ssl_module\" option instead" STREAM_UPSTREAM_HASH=NO ;; --without-stream_upstream_least_conn_module) STREAM_UPSTREAM_LEAST_CONN=NO ;; + --without-stream_upstream_random_module) + STREAM_UPSTREAM_RANDOM=NO ;; --without-stream_upstream_zone_module) STREAM_UPSTREAM_ZONE=NO ;; @@ -485,6 +491,8 @@ cat << END disable ngx_http_upstream_ip_hash_module --without-http_upstream_least_conn_module disable ngx_http_upstream_least_conn_module + --without-http_upstream_random_module + disable ngx_http_upstream_random_module --without-http_upstream_keepalive_module disable ngx_http_upstream_keepalive_module --without-http_upstream_zone_module @@ -535,6 +543,8 @@ cat << END disable ngx_stream_upstream_hash_module --without-stream_upstream_least_conn_module disable ngx_stream_upstream_least_conn_module + --without-stream_upstream_random_module + disable ngx_stream_upstream_random_module --without-stream_upstream_zone_module disable ngx_stream_upstream_zone_module Renamed: vendor/nginx-1.15.1/auto/os/conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/os/darwin (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/os/freebsd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/os/linux (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/os/solaris (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/os/win32 (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/sources (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/stubs (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/summary (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/threads (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/types/sizeof (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/types/typedef (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/types/uintptr_t (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/types/value (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/auto/unix (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/conf/fastcgi.conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/conf/fastcgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/conf/koi-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/conf/koi-win (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/conf/mime.types (+3 -1) 97% =================================================================== --- vendor/nginx-1.15.0/conf/mime.types 2018-07-20 16:13:25 +0900 (8a2348ab0) +++ vendor/nginx-1.15.1/conf/mime.types 2018-07-24 00:28:29 +0900 (296125695) @@ -24,7 +24,9 @@ types { image/x-jng jng; image/x-ms-bmp bmp; - application/font-woff woff; + font/woff woff; + font/woff2 woff2; + application/java-archive jar war ear; application/json json; application/mac-binhex40 hqx; Renamed: vendor/nginx-1.15.1/conf/nginx.conf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/conf/scgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/conf/uwsgi_params (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/conf/win-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/contrib/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/contrib/geo2nginx.pl (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/contrib/unicode2nginx/koi-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/contrib/unicode2nginx/unicode-to-nginx.pl (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/contrib/unicode2nginx/win-utf (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/contrib/vim/ftdetect/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/contrib/vim/ftplugin/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/contrib/vim/indent/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/contrib/vim/syntax/nginx.vim (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/GNUmakefile (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/dtd/change_log_conf.dtd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/dtd/changes.dtd (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/html/50x.html (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/html/index.html (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/man/nginx.8 (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/text/LICENSE (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/text/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/xml/change_log_conf.xml (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/xml/nginx/changes.xml (+67 -0) 99% =================================================================== --- vendor/nginx-1.15.0/docs/xml/nginx/changes.xml 2018-07-20 16:13:25 +0900 (6bbff2cfd) +++ vendor/nginx-1.15.1/docs/xml/nginx/changes.xml 2018-07-24 00:28:29 +0900 (6d4c5d939) @@ -5,6 +5,73 @@ <change_log title="nginx"> +<changes ver="1.15.1" date="2018-07-03"> + +<change type="feature"> +<para lang="ru"> +директива random в блоке upstream. +</para> +<para lang="en"> +the "random" directive inside the "upstream" block. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +улучшена производительность при использовании директив hash и ip_hash +совместно с директивой zone. +</para> +<para lang="en"> +improved performance when using the "hash" and "ip_hash" directives +with the "zone" directive. +</para> +</change> + +<change type="feature"> +<para lang="ru"> +параметр reuseport директивы listen +теперь использует SO_REUSEPORT_LB на FreeBSD 12. +</para> +<para lang="en"> +the "reuseport" parameter of the "listen" directive +now uses SO_REUSEPORT_LB on FreeBSD 12. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +HTTP/2 server push не работал, если SSL терминировался прокси-сервером +перед nginx'ом. +</para> +<para lang="en"> +HTTP/2 server push did not work if SSL was terminated by a proxy server +in front of nginx. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +директива tcp_nopush всегда использовалась для соединений к бэкендам. +</para> +<para lang="en"> +the "tcp_nopush" directive was always used on backend connections. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +при отправке сохранённого на диск тела запроса на gRPC-бэкенд +могли возникать ошибки. +</para> +<para lang="en"> +sending a disk-buffered request body to a gRPC backend +might fail. +</para> +</change> + +</changes> + + <changes ver="1.15.0" date="2018-06-05"> <change type="change"> Renamed: vendor/nginx-1.15.1/docs/xsls/changes.xsls (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/docs/xslt/changes.xslt (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/misc/GNUmakefile (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/misc/README (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/nginx.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/nginx.h (+2 -2) 85% =================================================================== --- vendor/nginx-1.15.0/src/core/nginx.h 2018-07-20 16:13:25 +0900 (cbe857173) +++ vendor/nginx-1.15.1/src/core/nginx.h 2018-07-24 00:28:29 +0900 (d96c1b436) @@ -9,8 +9,8 @@ #define _NGINX_H_INCLUDED_ -#define nginx_version 1015000 -#define NGINX_VERSION "1.15.0" +#define nginx_version 1015001 +#define NGINX_VERSION "1.15.1" #define NGINX_VER "nginx/" NGINX_VERSION #ifdef NGX_BUILD Renamed: vendor/nginx-1.15.1/src/core/ngx_array.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_array.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_buf.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_buf.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_conf_file.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_conf_file.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_connection.c (+54 -0) 95% =================================================================== --- vendor/nginx-1.15.0/src/core/ngx_connection.c 2018-07-20 16:13:25 +0900 (dc6067922) +++ vendor/nginx-1.15.1/src/core/ngx_connection.c 2018-07-24 00:28:29 +0900 (61ea4c2dd) @@ -281,6 +281,22 @@ ngx_set_inherited_sockets(ngx_cycle_t *cycle) reuseport = 0; olen = sizeof(int); +#ifdef SO_REUSEPORT_LB + + if (getsockopt(ls[i].fd, SOL_SOCKET, SO_REUSEPORT_LB, + (void *) &reuseport, &olen) + == -1) + { + ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_socket_errno, + "getsockopt(SO_REUSEPORT_LB) %V failed, ignored", + &ls[i].addr_text); + + } else { + ls[i].reuseport = reuseport ? 1 : 0; + } + +#else + if (getsockopt(ls[i].fd, SOL_SOCKET, SO_REUSEPORT, (void *) &reuseport, &olen) == -1) @@ -292,6 +308,7 @@ ngx_set_inherited_sockets(ngx_cycle_t *cycle) } else { ls[i].reuseport = reuseport ? 1 : 0; } +#endif #endif @@ -430,6 +447,20 @@ ngx_open_listening_sockets(ngx_cycle_t *cycle) int reuseport = 1; +#ifdef SO_REUSEPORT_LB + + if (setsockopt(ls[i].fd, SOL_SOCKET, SO_REUSEPORT_LB, + (const void *) &reuseport, sizeof(int)) + == -1) + { + ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_socket_errno, + "setsockopt(SO_REUSEPORT_LB) %V failed, " + "ignored", + &ls[i].addr_text); + } + +#else + if (setsockopt(ls[i].fd, SOL_SOCKET, SO_REUSEPORT, (const void *) &reuseport, sizeof(int)) == -1) @@ -438,6 +469,7 @@ ngx_open_listening_sockets(ngx_cycle_t *cycle) "setsockopt(SO_REUSEPORT) %V failed, ignored", &ls[i].addr_text); } +#endif ls[i].add_reuseport = 0; } @@ -488,6 +520,27 @@ ngx_open_listening_sockets(ngx_cycle_t *cycle) reuseport = 1; +#ifdef SO_REUSEPORT_LB + + if (setsockopt(s, SOL_SOCKET, SO_REUSEPORT_LB, + (const void *) &reuseport, sizeof(int)) + == -1) + { + ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, + "setsockopt(SO_REUSEPORT_LB) %V failed", + &ls[i].addr_text); + + if (ngx_close_socket(s) == -1) { + ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, + ngx_close_socket_n " %V failed", + &ls[i].addr_text); + } + + return NGX_ERROR; + } + +#else + if (setsockopt(s, SOL_SOCKET, SO_REUSEPORT, (const void *) &reuseport, sizeof(int)) == -1) @@ -504,6 +557,7 @@ ngx_open_listening_sockets(ngx_cycle_t *cycle) return NGX_ERROR; } +#endif } #endif Renamed: vendor/nginx-1.15.1/src/core/ngx_connection.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_core.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_cpuinfo.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_crc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_crc32.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_crc32.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_crypt.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_crypt.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_file.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_file.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_hash.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_hash.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_inet.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_inet.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_list.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_list.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_log.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_log.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_md5.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_md5.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_murmurhash.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_murmurhash.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_open_file_cache.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_open_file_cache.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_output_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_palloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_palloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_parse.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_parse_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_parse_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_proxy_protocol.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_proxy_protocol.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_queue.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_queue.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_radix_tree.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_radix_tree.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_rbtree.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_rbtree.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_regex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_regex.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_resolver.c (+39 -45) 98% =================================================================== --- vendor/nginx-1.15.0/src/core/ngx_resolver.c 2018-07-20 16:13:25 +0900 (f904091bf) +++ vendor/nginx-1.15.1/src/core/ngx_resolver.c 2018-07-24 00:28:29 +0900 (d96970434) @@ -141,25 +141,24 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n) ngx_pool_cleanup_t *cln; ngx_resolver_connection_t *rec; - cln = ngx_pool_cleanup_add(cf->pool, 0); - if (cln == NULL) { + r = ngx_pcalloc(cf->pool, sizeof(ngx_resolver_t)); + if (r == NULL) { return NULL; } - cln->handler = ngx_resolver_cleanup; - - r = ngx_calloc(sizeof(ngx_resolver_t), cf->log); - if (r == NULL) { + r->event = ngx_pcalloc(cf->pool, sizeof(ngx_event_t)); + if (r->event == NULL) { return NULL; } - cln->data = r; - - r->event = ngx_calloc(sizeof(ngx_event_t), cf->log); - if (r->event == NULL) { + cln = ngx_pool_cleanup_add(cf->pool, 0); + if (cln == NULL) { return NULL; } + cln->handler = ngx_resolver_cleanup; + cln->data = r; + ngx_rbtree_init(&r->name_rbtree, &r->name_sentinel, ngx_resolver_rbtree_insert_value); @@ -276,6 +275,11 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n) } } + if (n && r->connections.nelts == 0) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "no name servers defined"); + return NULL; + } + return r; } @@ -288,52 +292,42 @@ ngx_resolver_cleanup(void *data) ngx_uint_t i; ngx_resolver_connection_t *rec; - if (r) { - ngx_log_debug0(NGX_LOG_DEBUG_CORE, ngx_cycle->log, 0, - "cleanup resolver"); + ngx_log_debug0(NGX_LOG_DEBUG_CORE, ngx_cycle->log, 0, "cleanup resolver"); - ngx_resolver_cleanup_tree(r, &r->name_rbtree); + ngx_resolver_cleanup_tree(r, &r->name_rbtree); - ngx_resolver_cleanup_tree(r, &r->srv_rbtree); + ngx_resolver_cleanup_tree(r, &r->srv_rbtree); - ngx_resolver_cleanup_tree(r, &r->addr_rbtree); + ngx_resolver_cleanup_tree(r, &r->addr_rbtree); #if (NGX_HAVE_INET6) - ngx_resolver_cleanup_tree(r, &r->addr6_rbtree); + ngx_resolver_cleanup_tree(r, &r->addr6_rbtree); #endif - if (r->event) { - if (r->event->timer_set) { - ngx_del_timer(r->event); - } - - ngx_free(r->event); - } - - - rec = r->connections.elts; + if (r->event->timer_set) { + ngx_del_timer(r->event); + } - for (i = 0; i < r->connections.nelts; i++) { - if (rec[i].udp) { - ngx_close_connection(rec[i].udp); - } + rec = r->connections.elts; - if (rec[i].tcp) { - ngx_close_connection(rec[i].tcp); - } + for (i = 0; i < r->connections.nelts; i++) { + if (rec[i].udp) { + ngx_close_connection(rec[i].udp); + } - if (rec[i].read_buf) { - ngx_resolver_free(r, rec[i].read_buf->start); - ngx_resolver_free(r, rec[i].read_buf); - } + if (rec[i].tcp) { + ngx_close_connection(rec[i].tcp); + } - if (rec[i].write_buf) { - ngx_resolver_free(r, rec[i].write_buf->start); - ngx_resolver_free(r, rec[i].write_buf); - } + if (rec[i].read_buf) { + ngx_resolver_free(r, rec[i].read_buf->start); + ngx_resolver_free(r, rec[i].read_buf); } - ngx_free(r); + if (rec[i].write_buf) { + ngx_resolver_free(r, rec[i].write_buf->start); + ngx_resolver_free(r, rec[i].write_buf); + } } } @@ -4402,7 +4396,7 @@ ngx_udp_connect(ngx_resolver_connection_t *rec) if (c == NULL) { if (ngx_close_socket(s) == -1) { ngx_log_error(NGX_LOG_ALERT, &rec->log, ngx_socket_errno, - ngx_close_socket_n "failed"); + ngx_close_socket_n " failed"); } return NGX_ERROR; @@ -4488,7 +4482,7 @@ ngx_tcp_connect(ngx_resolver_connection_t *rec) if (c == NULL) { if (ngx_close_socket(s) == -1) { ngx_log_error(NGX_LOG_ALERT, &rec->log, ngx_socket_errno, - ngx_close_socket_n "failed"); + ngx_close_socket_n " failed"); } return NGX_ERROR; Renamed: vendor/nginx-1.15.1/src/core/ngx_resolver.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_rwlock.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_rwlock.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_sha1.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_sha1.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_shmtx.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_shmtx.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_slab.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_slab.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_spinlock.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_string.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_string.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_syslog.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_syslog.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_thread_pool.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_thread_pool.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_times.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/core/ngx_times.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/modules/ngx_devpoll_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/modules/ngx_epoll_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/modules/ngx_eventport_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/modules/ngx_iocp_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/modules/ngx_iocp_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/modules/ngx_kqueue_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/modules/ngx_poll_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/modules/ngx_select_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/modules/ngx_win32_select_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_accept.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_acceptex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_connect.c (+1 -1) 99% =================================================================== --- vendor/nginx-1.15.0/src/event/ngx_event_connect.c 2018-07-20 16:13:25 +0900 (e7f28c90e) +++ vendor/nginx-1.15.1/src/event/ngx_event_connect.c 2018-07-24 00:28:29 +0900 (714fc47de) @@ -55,7 +55,7 @@ ngx_event_connect_peer(ngx_peer_connection_t *pc) if (c == NULL) { if (ngx_close_socket(s) == -1) { ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno, - ngx_close_socket_n "failed"); + ngx_close_socket_n " failed"); } return NGX_ERROR; Renamed: vendor/nginx-1.15.1/src/event/ngx_event_connect.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_connectex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_openssl.c (+0 -1) 99% =================================================================== --- vendor/nginx-1.15.0/src/event/ngx_event_openssl.c 2018-07-20 16:13:25 +0900 (88a6dbed3) +++ vendor/nginx-1.15.1/src/event/ngx_event_openssl.c 2018-07-24 00:28:29 +0900 (fe14a291a) @@ -35,7 +35,6 @@ 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_int_t ngx_ssl_session_cache_init(ngx_shm_zone_t *shm_zone, void *data); 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, Renamed: vendor/nginx-1.15.1/src/event/ngx_event_openssl.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_openssl_stapling.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_pipe.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_pipe.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_posted.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_posted.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_timer.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_timer.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/event/ngx_event_udp.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_access_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_addition_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_auth_basic_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_auth_request_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_autoindex_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_browser_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_charset_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_chunked_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_dav_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_degradation_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_empty_gif_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_fastcgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_flv_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_geo_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_geoip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_grpc_module.c (+16 -11) 99% =================================================================== --- vendor/nginx-1.15.0/src/http/modules/ngx_http_grpc_module.c 2018-07-20 16:13:25 +0900 (300d92704) +++ vendor/nginx-1.15.1/src/http/modules/ngx_http_grpc_module.c 2018-07-24 00:28:29 +0900 (0baa85f28) @@ -3868,6 +3868,7 @@ ngx_http_grpc_send_window_update(ngx_http_request_t *r, static ngx_chain_t * ngx_http_grpc_get_buf(ngx_http_request_t *r, ngx_http_grpc_ctx_t *ctx) { + u_char *start; ngx_buf_t *b; ngx_chain_t *cl; @@ -3877,29 +3878,33 @@ ngx_http_grpc_get_buf(ngx_http_request_t *r, ngx_http_grpc_ctx_t *ctx) } b = cl->buf; + start = b->start; - b->tag = (ngx_buf_tag_t) &ngx_http_grpc_body_output_filter; - b->temporary = 1; - b->flush = 1; - - if (b->start == NULL) { + if (start == NULL) { /* * each buffer is large enough to hold two window update * frames in a row */ - b->start = ngx_palloc(r->pool, 2 * sizeof(ngx_http_grpc_frame_t) + 8); - if (b->start == NULL) { + start = ngx_palloc(r->pool, 2 * sizeof(ngx_http_grpc_frame_t) + 8); + if (start == NULL) { return NULL; } - b->pos = b->start; - b->last = b->start; - - b->end = b->start + 2 * sizeof(ngx_http_grpc_frame_t) + 8; } + ngx_memzero(b, sizeof(ngx_buf_t)); + + b->start = start; + b->pos = start; + b->last = start; + b->end = start + 2 * sizeof(ngx_http_grpc_frame_t) + 8; + + b->tag = (ngx_buf_tag_t) &ngx_http_grpc_body_output_filter; + b->temporary = 1; + b->flush = 1; + return cl; } Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_gunzip_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_gzip_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_gzip_static_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_headers_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_image_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_index_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_limit_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_limit_req_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_log_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_map_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_memcached_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_mirror_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_mp4_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_not_modified_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_proxy_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_random_index_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_range_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_realip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_referer_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_rewrite_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_scgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_secure_link_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_slice_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_split_clients_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_ssi_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_ssi_filter_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_ssl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_ssl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_static_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_stub_status_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_sub_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_try_files_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_hash_module.c (+7 -1) 97% =================================================================== --- vendor/nginx-1.15.0/src/http/modules/ngx_http_upstream_hash_module.c 2018-07-20 16:13:25 +0900 (d67f34d58) +++ vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_hash_module.c 2018-07-24 00:28:29 +0900 (6c247b560) @@ -176,7 +176,7 @@ ngx_http_upstream_get_hash_peer(ngx_peer_connection_t *pc, void *data) ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0, "get hash peer, try: %ui", pc->tries); - ngx_http_upstream_rr_peers_wlock(hp->rrp.peers); + ngx_http_upstream_rr_peers_rlock(hp->rrp.peers); if (hp->tries > 20 || hp->rrp.peers->single) { ngx_http_upstream_rr_peers_unlock(hp->rrp.peers); @@ -228,10 +228,13 @@ ngx_http_upstream_get_hash_peer(ngx_peer_connection_t *pc, void *data) goto next; } + ngx_http_upstream_rr_peer_lock(hp->rrp.peers, peer); + ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, "get hash peer, value:%uD, peer:%ui", hp->hash, p); if (peer->down) { + ngx_http_upstream_rr_peer_unlock(hp->rrp.peers, peer); goto next; } @@ -239,10 +242,12 @@ ngx_http_upstream_get_hash_peer(ngx_peer_connection_t *pc, void *data) && peer->fails >= peer->max_fails && now - peer->checked <= peer->fail_timeout) { + ngx_http_upstream_rr_peer_unlock(hp->rrp.peers, peer); goto next; } if (peer->max_conns && peer->conns >= peer->max_conns) { + ngx_http_upstream_rr_peer_unlock(hp->rrp.peers, peer); goto next; } @@ -268,6 +273,7 @@ ngx_http_upstream_get_hash_peer(ngx_peer_connection_t *pc, void *data) peer->checked = now; } + ngx_http_upstream_rr_peer_unlock(hp->rrp.peers, peer); ngx_http_upstream_rr_peers_unlock(hp->rrp.peers); hp->rrp.tried[n] |= m; Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_ip_hash_module.c (+7 -1) 94% =================================================================== --- vendor/nginx-1.15.0/src/http/modules/ngx_http_upstream_ip_hash_module.c 2018-07-20 16:13:25 +0900 (296108fdb) +++ vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_ip_hash_module.c 2018-07-24 00:28:29 +0900 (1fa01d95a) @@ -161,7 +161,7 @@ ngx_http_upstream_get_ip_hash_peer(ngx_peer_connection_t *pc, void *data) /* TODO: cached */ - ngx_http_upstream_rr_peers_wlock(iphp->rrp.peers); + ngx_http_upstream_rr_peers_rlock(iphp->rrp.peers); if (iphp->tries > 20 || iphp->rrp.peers->single) { ngx_http_upstream_rr_peers_unlock(iphp->rrp.peers); @@ -201,7 +201,10 @@ ngx_http_upstream_get_ip_hash_peer(ngx_peer_connection_t *pc, void *data) ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, "get ip hash peer, hash: %ui %04XL", p, (uint64_t) m); + ngx_http_upstream_rr_peer_lock(iphp->rrp.peers, peer); + if (peer->down) { + ngx_http_upstream_rr_peer_unlock(iphp->rrp.peers, peer); goto next; } @@ -209,10 +212,12 @@ ngx_http_upstream_get_ip_hash_peer(ngx_peer_connection_t *pc, void *data) && peer->fails >= peer->max_fails && now - peer->checked <= peer->fail_timeout) { + ngx_http_upstream_rr_peer_unlock(iphp->rrp.peers, peer); goto next; } if (peer->max_conns && peer->conns >= peer->max_conns) { + ngx_http_upstream_rr_peer_unlock(iphp->rrp.peers, peer); goto next; } @@ -238,6 +243,7 @@ ngx_http_upstream_get_ip_hash_peer(ngx_peer_connection_t *pc, void *data) peer->checked = now; } + ngx_http_upstream_rr_peer_unlock(iphp->rrp.peers, peer); ngx_http_upstream_rr_peers_unlock(iphp->rrp.peers); iphp->rrp.tried[n] |= m; Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_keepalive_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_least_conn_module.c (+0 -0) 100% =================================================================== Added: vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_random_module.c (+502 -0) 100644 =================================================================== --- /dev/null +++ vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_random_module.c 2018-07-24 00:28:29 +0900 (6f169c8f6) @@ -0,0 +1,502 @@ + +/* + * Copyright (C) Nginx, Inc. + */ + + +#include <ngx_config.h> +#include <ngx_core.h> +#include <ngx_http.h> + + +typedef struct { + ngx_http_upstream_rr_peer_t *peer; + ngx_uint_t range; +} ngx_http_upstream_random_range_t; + + +typedef struct { + ngx_uint_t two; + ngx_http_upstream_random_range_t *ranges; +} ngx_http_upstream_random_srv_conf_t; + + +typedef struct { + /* the round robin data must be first */ + ngx_http_upstream_rr_peer_data_t rrp; + + ngx_http_upstream_random_srv_conf_t *conf; + u_char tries; +} ngx_http_upstream_random_peer_data_t; + + +static ngx_int_t ngx_http_upstream_init_random(ngx_conf_t *cf, + ngx_http_upstream_srv_conf_t *us); +static ngx_int_t ngx_http_upstream_update_random(ngx_pool_t *pool, + ngx_http_upstream_srv_conf_t *us); + +static ngx_int_t ngx_http_upstream_init_random_peer(ngx_http_request_t *r, + ngx_http_upstream_srv_conf_t *us); +static ngx_int_t ngx_http_upstream_get_random_peer(ngx_peer_connection_t *pc, + void *data); +static ngx_int_t ngx_http_upstream_get_random2_peer(ngx_peer_connection_t *pc, + void *data); +static ngx_uint_t ngx_http_upstream_peek_random_peer( + ngx_http_upstream_rr_peers_t *peers, + ngx_http_upstream_random_peer_data_t *rp); +static void *ngx_http_upstream_random_create_conf(ngx_conf_t *cf); +static char *ngx_http_upstream_random(ngx_conf_t *cf, ngx_command_t *cmd, + void *conf); + + +static ngx_command_t ngx_http_upstream_random_commands[] = { + + { ngx_string("random"), + NGX_HTTP_UPS_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE12, + ngx_http_upstream_random, + NGX_HTTP_SRV_CONF_OFFSET, + 0, + NULL }, + + ngx_null_command +}; + + +static ngx_http_module_t ngx_http_upstream_random_module_ctx = { + NULL, /* preconfiguration */ + NULL, /* postconfiguration */ + + NULL, /* create main configuration */ + NULL, /* init main configuration */ + + ngx_http_upstream_random_create_conf, /* create server configuration */ + NULL, /* merge server configuration */ + + NULL, /* create location configuration */ + NULL /* merge location configuration */ +}; + + +ngx_module_t ngx_http_upstream_random_module = { + NGX_MODULE_V1, + &ngx_http_upstream_random_module_ctx, /* module context */ + ngx_http_upstream_random_commands, /* module directives */ + NGX_HTTP_MODULE, /* module type */ + NULL, /* init master */ + NULL, /* init module */ + NULL, /* init process */ + NULL, /* init thread */ + NULL, /* exit thread */ + NULL, /* exit process */ + NULL, /* exit master */ + NGX_MODULE_V1_PADDING +}; + + +static ngx_int_t +ngx_http_upstream_init_random(ngx_conf_t *cf, ngx_http_upstream_srv_conf_t *us) +{ + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, cf->log, 0, "init random"); + + if (ngx_http_upstream_init_round_robin(cf, us) != NGX_OK) { + return NGX_ERROR; + } + + us->peer.init = ngx_http_upstream_init_random_peer; + +#if (NGX_HTTP_UPSTREAM_ZONE) + if (us->shm_zone) { + return NGX_OK; + } +#endif + + return ngx_http_upstream_update_random(cf->pool, us); +} + + +static ngx_int_t +ngx_http_upstream_update_random(ngx_pool_t *pool, + ngx_http_upstream_srv_conf_t *us) +{ + size_t size; + ngx_uint_t i, total_weight; + ngx_http_upstream_rr_peer_t *peer; + ngx_http_upstream_rr_peers_t *peers; + ngx_http_upstream_random_range_t *ranges; + ngx_http_upstream_random_srv_conf_t *rcf; + + rcf = ngx_http_conf_upstream_srv_conf(us, ngx_http_upstream_random_module); + + peers = us->peer.data; + + size = peers->number * sizeof(ngx_http_upstream_random_range_t); + + ranges = pool ? ngx_palloc(pool, size) : ngx_alloc(size, ngx_cycle->log); + if (ranges == NULL) { + return NGX_ERROR; + } + + total_weight = 0; + + for (peer = peers->peer, i = 0; peer; peer = peer->next, i++) { + ranges[i].peer = peer; + ranges[i].range = total_weight; + total_weight += peer->weight; + } + + rcf->ranges = ranges; + + return NGX_OK; +} + + +static ngx_int_t +ngx_http_upstream_init_random_peer(ngx_http_request_t *r, + ngx_http_upstream_srv_conf_t *us) +{ + ngx_http_upstream_random_srv_conf_t *rcf; + ngx_http_upstream_random_peer_data_t *rp; + + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, + "init random peer"); + + rcf = ngx_http_conf_upstream_srv_conf(us, ngx_http_upstream_random_module); + + rp = ngx_palloc(r->pool, sizeof(ngx_http_upstream_random_peer_data_t)); + if (rp == NULL) { + return NGX_ERROR; + } + + r->upstream->peer.data = &rp->rrp; + + if (ngx_http_upstream_init_round_robin_peer(r, us) != NGX_OK) { + return NGX_ERROR; + } + + if (rcf->two) { + r->upstream->peer.get = ngx_http_upstream_get_random2_peer; + + } else { + r->upstream->peer.get = ngx_http_upstream_get_random_peer; + } + + rp->conf = rcf; + rp->tries = 0; + + ngx_http_upstream_rr_peers_rlock(rp->rrp.peers); + +#if (NGX_HTTP_UPSTREAM_ZONE) + if (rp->rrp.peers->shpool && rcf->ranges == NULL) { + if (ngx_http_upstream_update_random(NULL, us) != NGX_OK) { + ngx_http_upstream_rr_peers_unlock(rp->rrp.peers); + return NGX_ERROR; + } + } +#endif + + ngx_http_upstream_rr_peers_unlock(rp->rrp.peers); + + return NGX_OK; +} + + +static ngx_int_t +ngx_http_upstream_get_random_peer(ngx_peer_connection_t *pc, void *data) +{ + ngx_http_upstream_random_peer_data_t *rp = data; + + time_t now; + uintptr_t m; + ngx_uint_t i, n; + ngx_http_upstream_rr_peer_t *peer; + ngx_http_upstream_rr_peers_t *peers; + ngx_http_upstream_rr_peer_data_t *rrp; + + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0, + "get random peer, try: %ui", pc->tries); + + rrp = &rp->rrp; + peers = rrp->peers; + + ngx_http_upstream_rr_peers_rlock(peers); + + if (rp->tries > 20 || peers->single) { + ngx_http_upstream_rr_peers_unlock(peers); + return ngx_http_upstream_get_round_robin_peer(pc, rrp); + } + + pc->cached = 0; + pc->connection = NULL; + + now = ngx_time(); + + for ( ;; ) { + + i = ngx_http_upstream_peek_random_peer(peers, rp); + + peer = rp->conf->ranges[i].peer; + + n = i / (8 * sizeof(uintptr_t)); + m = (uintptr_t) 1 << i % (8 * sizeof(uintptr_t)); + + if (rrp->tried[n] & m) { + goto next; + } + + ngx_http_upstream_rr_peer_lock(peers, peer); + + if (peer->down) { + ngx_http_upstream_rr_peer_unlock(peers, peer); + goto next; + } + + if (peer->max_fails + && peer->fails >= peer->max_fails + && now - peer->checked <= peer->fail_timeout) + { + ngx_http_upstream_rr_peer_unlock(peers, peer); + goto next; + } + + if (peer->max_conns && peer->conns >= peer->max_conns) { + ngx_http_upstream_rr_peer_unlock(peers, peer); + goto next; + } + + break; + + next: + + if (++rp->tries > 20) { + ngx_http_upstream_rr_peers_unlock(peers); + return ngx_http_upstream_get_round_robin_peer(pc, rrp); + } + } + + rrp->current = peer; + + if (now - peer->checked > peer->fail_timeout) { + peer->checked = now; + } + + pc->sockaddr = peer->sockaddr; + pc->socklen = peer->socklen; + pc->name = &peer->name; + + peer->conns++; + + ngx_http_upstream_rr_peer_unlock(peers, peer); + ngx_http_upstream_rr_peers_unlock(peers); + + rrp->tried[n] |= m; + + return NGX_OK; +} + + +static ngx_int_t +ngx_http_upstream_get_random2_peer(ngx_peer_connection_t *pc, void *data) +{ + ngx_http_upstream_random_peer_data_t *rp = data; + + time_t now; + uintptr_t m; + ngx_uint_t i, n, p; + ngx_http_upstream_rr_peer_t *peer, *prev; + ngx_http_upstream_rr_peers_t *peers; + ngx_http_upstream_rr_peer_data_t *rrp; + + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0, + "get random2 peer, try: %ui", pc->tries); + + rrp = &rp->rrp; + peers = rrp->peers; + + ngx_http_upstream_rr_peers_wlock(peers); + + if (rp->tries > 20 || peers->single) { + ngx_http_upstream_rr_peers_unlock(peers); + return ngx_http_upstream_get_round_robin_peer(pc, rrp); + } + + pc->cached = 0; + pc->connection = NULL; + + now = ngx_time(); + + prev = NULL; + +#if (NGX_SUPPRESS_WARN) + p = 0; +#endif + + for ( ;; ) { + + i = ngx_http_upstream_peek_random_peer(peers, rp); + + peer = rp->conf->ranges[i].peer; + + if (peer == prev) { + goto next; + } + + n = i / (8 * sizeof(uintptr_t)); + m = (uintptr_t) 1 << i % (8 * sizeof(uintptr_t)); + + if (rrp->tried[n] & m) { + goto next; + } + + if (peer->down) { + goto next; + } + + if (peer->max_fails + && peer->fails >= peer->max_fails + && now - peer->checked <= peer->fail_timeout) + { + goto next; + } + + if (peer->max_conns && peer->conns >= peer->max_conns) { + goto next; + } + + if (prev) { + if (peer->conns * prev->weight > prev->conns * peer->weight) { + peer = prev; + n = p / (8 * sizeof(uintptr_t)); + m = (uintptr_t) 1 << p % (8 * sizeof(uintptr_t)); + } + + break; + } + + prev = peer; + p = i; + + next: + + if (++rp->tries > 20) { + ngx_http_upstream_rr_peers_unlock(peers); + return ngx_http_upstream_get_round_robin_peer(pc, rrp); + } + } + + rrp->current = peer; + + if (now - peer->checked > peer->fail_timeout) { + peer->checked = now; + } + + pc->sockaddr = peer->sockaddr; + pc->socklen = peer->socklen; + pc->name = &peer->name; + + peer->conns++; + + ngx_http_upstream_rr_peers_unlock(peers); + + rrp->tried[n] |= m; + + return NGX_OK; +} + + +static ngx_uint_t +ngx_http_upstream_peek_random_peer(ngx_http_upstream_rr_peers_t *peers, + ngx_http_upstream_random_peer_data_t *rp) +{ + ngx_uint_t i, j, k, x; + + x = ngx_random() % peers->total_weight; + + i = 0; + j = peers->number; + + while (j - i > 1) { + k = (i + j) / 2; + + if (x < rp->conf->ranges[k].range) { + j = k; + + } else { + i = k; + } + } + + return i; +} + + +static void * +ngx_http_upstream_random_create_conf(ngx_conf_t *cf) +{ + ngx_http_upstream_random_srv_conf_t *conf; + + conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_upstream_random_srv_conf_t)); + if (conf == NULL) { + return NULL; + } + + /* + * set by ngx_pcalloc(): + * + * conf->two = 0; + */ + + return conf; +} + + +static char * +ngx_http_upstream_random(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) +{ + ngx_http_upstream_random_srv_conf_t *rcf = conf; + + ngx_str_t *value; + ngx_http_upstream_srv_conf_t *uscf; + + uscf = ngx_http_conf_get_module_srv_conf(cf, ngx_http_upstream_module); + + if (uscf->peer.init_upstream) { + ngx_conf_log_error(NGX_LOG_WARN, cf, 0, + "load balancing method redefined"); + } + + uscf->peer.init_upstream = ngx_http_upstream_init_random; + + uscf->flags = NGX_HTTP_UPSTREAM_CREATE + |NGX_HTTP_UPSTREAM_WEIGHT + |NGX_HTTP_UPSTREAM_MAX_CONNS + |NGX_HTTP_UPSTREAM_MAX_FAILS + |NGX_HTTP_UPSTREAM_FAIL_TIMEOUT + |NGX_HTTP_UPSTREAM_DOWN; + + if (cf->args->nelts == 1) { + return NGX_CONF_OK; + } + + value = cf->args->elts; + + if (ngx_strcmp(value[1].data, "two") == 0) { + rcf->two = 1; + + } else { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "invalid parameter \"%V\"", &value[1]); + return NGX_CONF_ERROR; + } + + if (cf->args->nelts == 2) { + return NGX_CONF_OK; + } + + if (ngx_strcmp(value[2].data, "least_conn") != 0) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "invalid parameter \"%V\"", &value[2]); + return NGX_CONF_ERROR; + } + + return NGX_CONF_OK; +} Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_upstream_zone_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_userid_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_uwsgi_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/ngx_http_xslt_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/perl/Makefile.PL (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/perl/nginx.pm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/perl/nginx.xs (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/perl/ngx_http_perl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/perl/ngx_http_perl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/modules/perl/typemap (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_cache.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_copy_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_core_module.c (+1 -0) 99% =================================================================== --- vendor/nginx-1.15.0/src/http/ngx_http_core_module.c 2018-07-20 16:13:25 +0900 (2d8fdb88e) +++ vendor/nginx-1.15.1/src/http/ngx_http_core_module.c 2018-07-24 00:28:29 +0900 (c57ec00ce) @@ -2318,6 +2318,7 @@ ngx_http_subrequest(ngx_http_request_t *r, sr->unparsed_uri = r->unparsed_uri; sr->method_name = ngx_http_core_get_method; sr->http_protocol = r->http_protocol; + sr->schema = r->schema; ngx_http_set_exten(sr); Renamed: vendor/nginx-1.15.1/src/http/ngx_http_core_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_file_cache.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_header_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_parse.c (+5 -0) 99% =================================================================== --- vendor/nginx-1.15.0/src/http/ngx_http_parse.c 2018-07-20 16:13:25 +0900 (844054c9d) +++ vendor/nginx-1.15.1/src/http/ngx_http_parse.c 2018-07-24 00:28:29 +0900 (d9a1dbedb) @@ -307,6 +307,11 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b) break; } + if ((ch >= '0' && ch <= '9') || ch == '+' || ch == '-' || ch == '.') + { + break; + } + switch (ch) { case ':': r->schema_end = p; Renamed: vendor/nginx-1.15.1/src/http/ngx_http_postpone_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_request.c (+6 -1) 99% =================================================================== --- vendor/nginx-1.15.0/src/http/ngx_http_request.c 2018-07-20 16:13:25 +0900 (47c62d9fd) +++ vendor/nginx-1.15.1/src/http/ngx_http_request.c 2018-07-24 00:28:29 +0900 (0432c91b2) @@ -987,7 +987,12 @@ ngx_http_process_request_line(ngx_event_t *rev) return; } - if (r->host_start && r->host_end) { + if (r->schema_end) { + r->schema.len = r->schema_end - r->schema_start; + r->schema.data = r->schema_start; + } + + if (r->host_end) { host.len = r->host_end - r->host_start; host.data = r->host_start; Renamed: vendor/nginx-1.15.1/src/http/ngx_http_request.h (+1 -0) 99% =================================================================== --- vendor/nginx-1.15.0/src/http/ngx_http_request.h 2018-07-20 16:13:25 +0900 (39baa0f0c) +++ vendor/nginx-1.15.1/src/http/ngx_http_request.h 2018-07-24 00:28:29 +0900 (6bfff96ef) @@ -412,6 +412,7 @@ struct ngx_http_request_s { ngx_str_t method_name; ngx_str_t http_protocol; + ngx_str_t schema; ngx_chain_t *out; ngx_http_request_t *main; Renamed: vendor/nginx-1.15.1/src/http/ngx_http_request_body.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_script.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_script.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_special_response.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_upstream.c (+18 -1) 99% =================================================================== --- vendor/nginx-1.15.0/src/http/ngx_http_upstream.c 2018-07-20 16:13:25 +0900 (8fc3042e7) +++ vendor/nginx-1.15.1/src/http/ngx_http_upstream.c 2018-07-24 00:28:29 +0900 (aba1fbb07) @@ -1556,6 +1556,10 @@ ngx_http_upstream_connect(ngx_http_request_t *r, ngx_http_upstream_t *u) c->sendfile &= r->connection->sendfile; u->output.sendfile = c->sendfile; + if (r->connection->tcp_nopush == NGX_TCP_NOPUSH_DISABLED) { + c->tcp_nopush = NGX_TCP_NOPUSH_DISABLED; + } + if (c->pool == NULL) { /* we need separate pool here to be able to cache SSL connections */ @@ -2008,6 +2012,18 @@ ngx_http_upstream_send_request(ngx_http_request_t *r, ngx_http_upstream_t *u, return; } + if (c->write->ready && c->tcp_nopush == NGX_TCP_NOPUSH_SET) { + if (ngx_tcp_push(c->fd) == -1) { + ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno, + ngx_tcp_push_n " failed"); + ngx_http_upstream_finalize_request(r, u, + NGX_HTTP_INTERNAL_SERVER_ERROR); + return; + } + + c->tcp_nopush = NGX_TCP_NOPUSH_UNSET; + } + return; } @@ -2901,7 +2917,8 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u) } if (r->request_body && r->request_body->temp_file - && r == r->main && !r->preserve_body) + && r == r->main && !r->preserve_body + && !u->conf->preserve_output) { ngx_pool_run_cleanup_file(r->pool, r->request_body->temp_file->file.fd); r->request_body->temp_file->file.fd = NGX_INVALID_FILE; Renamed: vendor/nginx-1.15.1/src/http/ngx_http_upstream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_upstream_round_robin.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_upstream_round_robin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_variables.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_variables.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/ngx_http_write_filter_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/v2/ngx_http_v2.c (+32 -15) 99% =================================================================== --- vendor/nginx-1.15.0/src/http/v2/ngx_http_v2.c 2018-07-20 16:13:25 +0900 (77ebb8474) +++ vendor/nginx-1.15.1/src/http/v2/ngx_http_v2.c 2018-07-24 00:28:29 +0900 (09737700a) @@ -2616,18 +2616,13 @@ ngx_http_v2_push_stream(ngx_http_v2_stream_t *parent, ngx_str_t *path) r->method_name = ngx_http_core_get_method; r->method = NGX_HTTP_GET; - r->schema_start = (u_char *) "https"; - -#if (NGX_HTTP_SSL) - if (fc->ssl) { - r->schema_end = r->schema_start + 5; - - } else -#endif - { - r->schema_end = r->schema_start + 4; + r->schema.data = ngx_pstrdup(pool, &parent->request->schema); + if (r->schema.data == NULL) { + goto close; } + r->schema.len = parent->request->schema.len; + value.data = ngx_pstrdup(pool, path); if (value.data == NULL) { goto close; @@ -3474,7 +3469,10 @@ ngx_http_v2_parse_method(ngx_http_request_t *r, ngx_str_t *value) static ngx_int_t ngx_http_v2_parse_scheme(ngx_http_request_t *r, ngx_str_t *value) { - if (r->schema_start) { + u_char c, ch; + ngx_uint_t i; + + if (r->schema.len) { ngx_log_error(NGX_LOG_INFO, r->connection->log, 0, "client sent duplicate :scheme header"); @@ -3488,8 +3486,27 @@ ngx_http_v2_parse_scheme(ngx_http_request_t *r, ngx_str_t *value) return NGX_DECLINED; } - r->schema_start = value->data; - r->schema_end = value->data + value->len; + for (i = 0; i < value->len; i++) { + ch = value->data[i]; + + c = (u_char) (ch | 0x20); + if (c >= 'a' && c <= 'z') { + continue; + } + + if (((ch >= '0' && ch <= '9') || ch == '+' || ch == '-' || ch == '.') + && i > 0) + { + continue; + } + + ngx_log_error(NGX_LOG_INFO, r->connection->log, 0, + "client sent invalid :scheme header: \"%V\"", value); + + return NGX_DECLINED; + } + + r->schema = *value; return NGX_OK; } @@ -3552,14 +3569,14 @@ ngx_http_v2_construct_request_line(ngx_http_request_t *r) static const u_char ending[] = " HTTP/2.0"; if (r->method_name.len == 0 - || r->schema_start == NULL + || r->schema.len == 0 || r->unparsed_uri.len == 0) { if (r->method_name.len == 0) { ngx_log_error(NGX_LOG_INFO, r->connection->log, 0, "client sent no :method header"); - } else if (r->schema_start == NULL) { + } else if (r->schema.len == 0) { ngx_log_error(NGX_LOG_INFO, r->connection->log, 0, "client sent no :scheme header"); Renamed: vendor/nginx-1.15.1/src/http/v2/ngx_http_v2.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_encode.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_filter_module.c (+14 -12) 98% =================================================================== --- vendor/nginx-1.15.0/src/http/v2/ngx_http_v2_filter_module.c 2018-07-20 16:13:25 +0900 (029e8ece2) +++ vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_filter_module.c 2018-07-24 00:28:29 +0900 (853faefd3) @@ -944,15 +944,15 @@ ngx_http_v2_push_resource(ngx_http_request_t *r, ngx_str_t *path, ph = ngx_http_v2_push_headers; + len = ngx_max(r->schema.len, path->len); + if (binary[0].len) { - tmp = ngx_palloc(r->pool, path->len); + tmp = ngx_palloc(r->pool, len); if (tmp == NULL) { return NGX_ERROR; } } else { - len = path->len; - for (i = 0; i < NGX_HTTP_V2_PUSH_HEADERS; i++) { h = (ngx_table_elt_t **) ((char *) &r->headers_in + ph[i].offset); @@ -994,7 +994,7 @@ ngx_http_v2_push_resource(ngx_http_request_t *r, ngx_str_t *path, len = (h2c->table_update ? 1 : 0) + 1 + 1 + NGX_HTTP_V2_INT_OCTETS + path->len - + 1; + + 1 + NGX_HTTP_V2_INT_OCTETS + r->schema.len; for (i = 0; i < NGX_HTTP_V2_PUSH_HEADERS; i++) { len += binary[i].len; @@ -1025,18 +1025,20 @@ ngx_http_v2_push_resource(ngx_http_request_t *r, ngx_str_t *path, *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_PATH_INDEX); pos = ngx_http_v2_write_value(pos, path->data, path->len, tmp); -#if (NGX_HTTP_SSL) - if (fc->ssl) { - ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, - "http2 push header: \":scheme: https\""); + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 push header: \":scheme: %V\"", &r->schema); + + if (r->schema.len == 5 && ngx_strncmp(r->schema.data, "https", 5) == 0) { *pos++ = ngx_http_v2_indexed(NGX_HTTP_V2_SCHEME_HTTPS_INDEX); - } else -#endif + } else if (r->schema.len == 4 + && ngx_strncmp(r->schema.data, "http", 4) == 0) { - ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, - "http2 push header: \":scheme: http\""); *pos++ = ngx_http_v2_indexed(NGX_HTTP_V2_SCHEME_HTTP_INDEX); + + } else { + *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_SCHEME_HTTP_INDEX); + pos = ngx_http_v2_write_value(pos, r->schema.data, r->schema.len, tmp); } for (i = 0; i < NGX_HTTP_V2_PUSH_HEADERS; i++) { Renamed: vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_huff_decode.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_huff_encode.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/http/v2/ngx_http_v2_table.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_auth_http_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_core_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_imap_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_imap_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_imap_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_parse.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_pop3_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_pop3_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_pop3_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_proxy_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_smtp_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_smtp_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_smtp_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_ssl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/mail/ngx_mail_ssl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/misc/ngx_cpp_test_module.cpp (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/misc/ngx_google_perftools_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_alloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_alloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_atomic.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_channel.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_channel.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_daemon.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_darwin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_darwin_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_darwin_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_darwin_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_dlopen.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_dlopen.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_errno.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_errno.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_file_aio_read.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_files.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_files.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_freebsd.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_freebsd_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_freebsd_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_freebsd_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_gcc_atomic_amd64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_gcc_atomic_ppc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_gcc_atomic_sparc64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_gcc_atomic_x86.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_linux.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_linux_aio_read.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_linux_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_linux_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_linux_sendfile_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_os.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_posix_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_posix_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_process.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_process.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_process_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_process_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_readv_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_recv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_send.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_setaffinity.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_setaffinity.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_setproctitle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_setproctitle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_shmem.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_shmem.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_socket.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_socket.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_solaris.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_solaris_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_solaris_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_solaris_sendfilev_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_sunpro_amd64.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_sunpro_atomic_sparc64.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_sunpro_sparc64.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_sunpro_x86.il (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_thread.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_thread_cond.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_thread_id.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_thread_mutex.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_udp_recv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_udp_send.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_udp_sendmsg_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_user.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_user.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/unix/ngx_writev_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/nginx.ico (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/nginx.rc (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/nginx_icon16.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/nginx_icon32.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/nginx_icon48.xpm (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_alloc.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_alloc.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_atomic.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_dlopen.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_dlopen.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_errno.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_errno.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_event_log.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_files.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_files.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_os.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_process.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_process.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_process_cycle.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_process_cycle.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_service.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_shmem.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_shmem.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_socket.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_socket.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_stat.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_thread.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_thread.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_time.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_time.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_udp_wsarecv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_user.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_user.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_win32_config.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_win32_init.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_wsarecv.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_wsarecv_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_wsasend.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/os/win32/ngx_wsasend_chain.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_access_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_core_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_geo_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_geoip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_handler.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_limit_conn_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_log_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_map_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_proxy_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_realip_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_return_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_script.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_script.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_split_clients_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_ssl_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_ssl_module.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_ssl_preread_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_upstream.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_upstream.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_hash_module.c (+7 -1) 97% =================================================================== --- vendor/nginx-1.15.0/src/stream/ngx_stream_upstream_hash_module.c 2018-07-20 16:13:25 +0900 (79ad742cf) +++ vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_hash_module.c 2018-07-24 00:28:29 +0900 (4fa9a2dce) @@ -176,7 +176,7 @@ ngx_stream_upstream_get_hash_peer(ngx_peer_connection_t *pc, void *data) ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pc->log, 0, "get hash peer, try: %ui", pc->tries); - ngx_stream_upstream_rr_peers_wlock(hp->rrp.peers); + ngx_stream_upstream_rr_peers_rlock(hp->rrp.peers); if (hp->tries > 20 || hp->rrp.peers->single) { ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers); @@ -227,10 +227,13 @@ ngx_stream_upstream_get_hash_peer(ngx_peer_connection_t *pc, void *data) goto next; } + ngx_stream_upstream_rr_peer_lock(hp->rrp.peers, peer); + ngx_log_debug2(NGX_LOG_DEBUG_STREAM, pc->log, 0, "get hash peer, value:%uD, peer:%ui", hp->hash, p); if (peer->down) { + ngx_stream_upstream_rr_peer_unlock(hp->rrp.peers, peer); goto next; } @@ -238,10 +241,12 @@ ngx_stream_upstream_get_hash_peer(ngx_peer_connection_t *pc, void *data) && peer->fails >= peer->max_fails && now - peer->checked <= peer->fail_timeout) { + ngx_stream_upstream_rr_peer_unlock(hp->rrp.peers, peer); goto next; } if (peer->max_conns && peer->conns >= peer->max_conns) { + ngx_stream_upstream_rr_peer_unlock(hp->rrp.peers, peer); goto next; } @@ -267,6 +272,7 @@ ngx_stream_upstream_get_hash_peer(ngx_peer_connection_t *pc, void *data) peer->checked = now; } + ngx_stream_upstream_rr_peer_unlock(hp->rrp.peers, peer); ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers); hp->rrp.tried[n] |= m; Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_least_conn_module.c (+0 -0) 100% =================================================================== Added: vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_random_module.c (+502 -0) 100644 =================================================================== --- /dev/null +++ vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_random_module.c 2018-07-24 00:28:29 +0900 (402c1b298) @@ -0,0 +1,502 @@ + +/* + * Copyright (C) Nginx, Inc. + */ + + +#include <ngx_config.h> +#include <ngx_core.h> +#include <ngx_stream.h> + + +typedef struct { + ngx_stream_upstream_rr_peer_t *peer; + ngx_uint_t range; +} ngx_stream_upstream_random_range_t; + + +typedef struct { + ngx_uint_t two; + ngx_stream_upstream_random_range_t *ranges; +} ngx_stream_upstream_random_srv_conf_t; + + +typedef struct { + /* the round robin data must be first */ + ngx_stream_upstream_rr_peer_data_t rrp; + + ngx_stream_upstream_random_srv_conf_t *conf; + u_char tries; +} ngx_stream_upstream_random_peer_data_t; + + +static ngx_int_t ngx_stream_upstream_init_random(ngx_conf_t *cf, + ngx_stream_upstream_srv_conf_t *us); +static ngx_int_t ngx_stream_upstream_update_random(ngx_pool_t *pool, + ngx_stream_upstream_srv_conf_t *us); + +static ngx_int_t ngx_stream_upstream_init_random_peer(ngx_stream_session_t *s, + ngx_stream_upstream_srv_conf_t *us); +static ngx_int_t ngx_stream_upstream_get_random_peer(ngx_peer_connection_t *pc, + void *data); +static ngx_int_t ngx_stream_upstream_get_random2_peer(ngx_peer_connection_t *pc, + void *data); +static ngx_uint_t ngx_stream_upstream_peek_random_peer( + ngx_stream_upstream_rr_peers_t *peers, + ngx_stream_upstream_random_peer_data_t *rp); +static void *ngx_stream_upstream_random_create_conf(ngx_conf_t *cf); +static char *ngx_stream_upstream_random(ngx_conf_t *cf, ngx_command_t *cmd, + void *conf); + + +static ngx_command_t ngx_stream_upstream_random_commands[] = { + + { ngx_string("random"), + NGX_STREAM_UPS_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE12, + ngx_stream_upstream_random, + NGX_STREAM_SRV_CONF_OFFSET, + 0, + NULL }, + + ngx_null_command +}; + + +static ngx_stream_module_t ngx_stream_upstream_random_module_ctx = { + NULL, /* preconfiguration */ + NULL, /* postconfiguration */ + + NULL, /* create main configuration */ + NULL, /* init main configuration */ + + ngx_stream_upstream_random_create_conf, /* create server configuration */ + NULL /* merge server configuration */ +}; + + +ngx_module_t ngx_stream_upstream_random_module = { + NGX_MODULE_V1, + &ngx_stream_upstream_random_module_ctx, /* module context */ + ngx_stream_upstream_random_commands, /* module directives */ + NGX_STREAM_MODULE, /* module type */ + NULL, /* init master */ + NULL, /* init module */ + NULL, /* init process */ + NULL, /* init thread */ + NULL, /* exit thread */ + NULL, /* exit process */ + NULL, /* exit master */ + NGX_MODULE_V1_PADDING +}; + + +static ngx_int_t +ngx_stream_upstream_init_random(ngx_conf_t *cf, + ngx_stream_upstream_srv_conf_t *us) +{ + ngx_log_debug0(NGX_LOG_DEBUG_STREAM, cf->log, 0, "init random"); + + if (ngx_stream_upstream_init_round_robin(cf, us) != NGX_OK) { + return NGX_ERROR; + } + + us->peer.init = ngx_stream_upstream_init_random_peer; + +#if (NGX_STREAM_UPSTREAM_ZONE) + if (us->shm_zone) { + return NGX_OK; + } +#endif + + return ngx_stream_upstream_update_random(cf->pool, us); +} + + +static ngx_int_t +ngx_stream_upstream_update_random(ngx_pool_t *pool, + ngx_stream_upstream_srv_conf_t *us) +{ + size_t size; + ngx_uint_t i, total_weight; + ngx_stream_upstream_rr_peer_t *peer; + ngx_stream_upstream_rr_peers_t *peers; + ngx_stream_upstream_random_range_t *ranges; + ngx_stream_upstream_random_srv_conf_t *rcf; + + rcf = ngx_stream_conf_upstream_srv_conf(us, + ngx_stream_upstream_random_module); + peers = us->peer.data; + + size = peers->number * sizeof(ngx_stream_upstream_random_range_t); + + ranges = pool ? ngx_palloc(pool, size) : ngx_alloc(size, ngx_cycle->log); + if (ranges == NULL) { + return NGX_ERROR; + } + + total_weight = 0; + + for (peer = peers->peer, i = 0; peer; peer = peer->next, i++) { + ranges[i].peer = peer; + ranges[i].range = total_weight; + total_weight += peer->weight; + } + + rcf->ranges = ranges; + + return NGX_OK; +} + + +static ngx_int_t +ngx_stream_upstream_init_random_peer(ngx_stream_session_t *s, + ngx_stream_upstream_srv_conf_t *us) +{ + ngx_stream_upstream_random_srv_conf_t *rcf; + ngx_stream_upstream_random_peer_data_t *rp; + + ngx_log_debug0(NGX_LOG_DEBUG_STREAM, s->connection->log, 0, + "init random peer"); + + rcf = ngx_stream_conf_upstream_srv_conf(us, + ngx_stream_upstream_random_module); + + rp = ngx_palloc(s->connection->pool, + sizeof(ngx_stream_upstream_random_peer_data_t)); + if (rp == NULL) { + return NGX_ERROR; + } + + s->upstream->peer.data = &rp->rrp; + + if (ngx_stream_upstream_init_round_robin_peer(s, us) != NGX_OK) { + return NGX_ERROR; + } + + if (rcf->two) { + s->upstream->peer.get = ngx_stream_upstream_get_random2_peer; + + } else { + s->upstream->peer.get = ngx_stream_upstream_get_random_peer; + } + + rp->conf = rcf; + rp->tries = 0; + + ngx_stream_upstream_rr_peers_rlock(rp->rrp.peers); + +#if (NGX_STREAM_UPSTREAM_ZONE) + if (rp->rrp.peers->shpool && rcf->ranges == NULL) { + if (ngx_stream_upstream_update_random(NULL, us) != NGX_OK) { + ngx_stream_upstream_rr_peers_unlock(rp->rrp.peers); + return NGX_ERROR; + } + } +#endif + + ngx_stream_upstream_rr_peers_unlock(rp->rrp.peers); + + return NGX_OK; +} + + +static ngx_int_t +ngx_stream_upstream_get_random_peer(ngx_peer_connection_t *pc, void *data) +{ + ngx_stream_upstream_random_peer_data_t *rp = data; + + time_t now; + uintptr_t m; + ngx_uint_t i, n; + ngx_stream_upstream_rr_peer_t *peer; + ngx_stream_upstream_rr_peers_t *peers; + ngx_stream_upstream_rr_peer_data_t *rrp; + + ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pc->log, 0, + "get random peer, try: %ui", pc->tries); + + rrp = &rp->rrp; + peers = rrp->peers; + + ngx_stream_upstream_rr_peers_rlock(peers); + + if (rp->tries > 20 || peers->single) { + ngx_stream_upstream_rr_peers_unlock(peers); + return ngx_stream_upstream_get_round_robin_peer(pc, rrp); + } + + pc->cached = 0; + pc->connection = NULL; + + now = ngx_time(); + + for ( ;; ) { + + i = ngx_stream_upstream_peek_random_peer(peers, rp); + + peer = rp->conf->ranges[i].peer; + + n = i / (8 * sizeof(uintptr_t)); + m = (uintptr_t) 1 << i % (8 * sizeof(uintptr_t)); + + if (rrp->tried[n] & m) { + goto next; + } + + ngx_stream_upstream_rr_peer_lock(peers, peer); + + if (peer->down) { + ngx_stream_upstream_rr_peer_unlock(peers, peer); + goto next; + } + + if (peer->max_fails + && peer->fails >= peer->max_fails + && now - peer->checked <= peer->fail_timeout) + { + ngx_stream_upstream_rr_peer_unlock(peers, peer); + goto next; + } + + if (peer->max_conns && peer->conns >= peer->max_conns) { + ngx_stream_upstream_rr_peer_unlock(peers, peer); + goto next; + } + + break; + + next: + + if (++rp->tries > 20) { + ngx_stream_upstream_rr_peers_unlock(peers); + return ngx_stream_upstream_get_round_robin_peer(pc, rrp); + } + } + + rrp->current = peer; + + if (now - peer->checked > peer->fail_timeout) { + peer->checked = now; + } + + pc->sockaddr = peer->sockaddr; + pc->socklen = peer->socklen; + pc->name = &peer->name; + + peer->conns++; + + ngx_stream_upstream_rr_peer_unlock(peers, peer); + ngx_stream_upstream_rr_peers_unlock(peers); + + rrp->tried[n] |= m; + + return NGX_OK; +} + + +static ngx_int_t +ngx_stream_upstream_get_random2_peer(ngx_peer_connection_t *pc, void *data) +{ + ngx_stream_upstream_random_peer_data_t *rp = data; + + time_t now; + uintptr_t m; + ngx_uint_t i, n, p; + ngx_stream_upstream_rr_peer_t *peer, *prev; + ngx_stream_upstream_rr_peers_t *peers; + ngx_stream_upstream_rr_peer_data_t *rrp; + + ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pc->log, 0, + "get random2 peer, try: %ui", pc->tries); + + rrp = &rp->rrp; + peers = rrp->peers; + + ngx_stream_upstream_rr_peers_wlock(peers); + + if (rp->tries > 20 || peers->single) { + ngx_stream_upstream_rr_peers_unlock(peers); + return ngx_stream_upstream_get_round_robin_peer(pc, rrp); + } + + pc->cached = 0; + pc->connection = NULL; + + now = ngx_time(); + + prev = NULL; + +#if (NGX_SUPPRESS_WARN) + p = 0; +#endif + + for ( ;; ) { + + i = ngx_stream_upstream_peek_random_peer(peers, rp); + + peer = rp->conf->ranges[i].peer; + + if (peer == prev) { + goto next; + } + + n = i / (8 * sizeof(uintptr_t)); + m = (uintptr_t) 1 << i % (8 * sizeof(uintptr_t)); + + if (rrp->tried[n] & m) { + goto next; + } + + if (peer->down) { + goto next; + } + + if (peer->max_fails + && peer->fails >= peer->max_fails + && now - peer->checked <= peer->fail_timeout) + { + goto next; + } + + if (peer->max_conns && peer->conns >= peer->max_conns) { + goto next; + } + + if (prev) { + if (peer->conns * prev->weight > prev->conns * peer->weight) { + peer = prev; + n = p / (8 * sizeof(uintptr_t)); + m = (uintptr_t) 1 << p % (8 * sizeof(uintptr_t)); + } + + break; + } + + prev = peer; + p = i; + + next: + + if (++rp->tries > 20) { + ngx_stream_upstream_rr_peers_unlock(peers); + return ngx_stream_upstream_get_round_robin_peer(pc, rrp); + } + } + + rrp->current = peer; + + if (now - peer->checked > peer->fail_timeout) { + peer->checked = now; + } + + pc->sockaddr = peer->sockaddr; + pc->socklen = peer->socklen; + pc->name = &peer->name; + + peer->conns++; + + ngx_stream_upstream_rr_peers_unlock(peers); + + rrp->tried[n] |= m; + + return NGX_OK; +} + + +static ngx_uint_t +ngx_stream_upstream_peek_random_peer(ngx_stream_upstream_rr_peers_t *peers, + ngx_stream_upstream_random_peer_data_t *rp) +{ + ngx_uint_t i, j, k, x; + + x = ngx_random() % peers->total_weight; + + i = 0; + j = peers->number; + + while (j - i > 1) { + k = (i + j) / 2; + + if (x < rp->conf->ranges[k].range) { + j = k; + + } else { + i = k; + } + } + + return i; +} + + +static void * +ngx_stream_upstream_random_create_conf(ngx_conf_t *cf) +{ + ngx_stream_upstream_random_srv_conf_t *conf; + + conf = ngx_pcalloc(cf->pool, sizeof(ngx_stream_upstream_random_srv_conf_t)); + if (conf == NULL) { + return NULL; + } + + /* + * set by ngx_pcalloc(): + * + * conf->two = 0; + */ + + return conf; +} + + +static char * +ngx_stream_upstream_random(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) +{ + ngx_stream_upstream_random_srv_conf_t *rcf = conf; + + ngx_str_t *value; + ngx_stream_upstream_srv_conf_t *uscf; + + uscf = ngx_stream_conf_get_module_srv_conf(cf, ngx_stream_upstream_module); + + if (uscf->peer.init_upstream) { + ngx_conf_log_error(NGX_LOG_WARN, cf, 0, + "load balancing method redefined"); + } + + uscf->peer.init_upstream = ngx_stream_upstream_init_random; + + uscf->flags = NGX_STREAM_UPSTREAM_CREATE + |NGX_STREAM_UPSTREAM_WEIGHT + |NGX_STREAM_UPSTREAM_MAX_CONNS + |NGX_STREAM_UPSTREAM_MAX_FAILS + |NGX_STREAM_UPSTREAM_FAIL_TIMEOUT + |NGX_STREAM_UPSTREAM_DOWN; + + if (cf->args->nelts == 1) { + return NGX_CONF_OK; + } + + value = cf->args->elts; + + if (ngx_strcmp(value[1].data, "two") == 0) { + rcf->two = 1; + + } else { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "invalid parameter \"%V\"", &value[1]); + return NGX_CONF_ERROR; + } + + if (cf->args->nelts == 2) { + return NGX_CONF_OK; + } + + if (ngx_strcmp(value[2].data, "least_conn") != 0) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "invalid parameter \"%V\"", &value[2]); + return NGX_CONF_ERROR; + } + + return NGX_CONF_OK; +} Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_round_robin.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_round_robin.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_upstream_zone_module.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_variables.c (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_variables.h (+0 -0) 100% =================================================================== Renamed: vendor/nginx-1.15.1/src/stream/ngx_stream_write_filter_module.c (+0 -0) 100% ===================================================================