[Groonga-commit] groonga/groonga at 2bf7d9b [master] nginx: bundle latest release

Back to archive index

Kentaro Hayashi null+****@clear*****
Tue Dec 27 23:47:36 JST 2016


Kentaro Hayashi	2016-12-27 23:47:36 +0900 (Tue, 27 Dec 2016)

  New Revision: 2bf7d9b3c774d5082f52fa26c53aacd4cde77781
  https://github.com/groonga/groonga/commit/2bf7d9b3c774d5082f52fa26c53aacd4cde77781

  Message:
    nginx: bundle latest release
    
      $ ./update_nginx.sh 1.11.8

  Added files:
    vendor/nginx-1.11.8/auto/lib/openssl/makefile.msvc
    vendor/nginx-1.11.8/contrib/vim/ftplugin/nginx.vim
  Removed files:
    vendor/nginx-1.11.6/auto/lib/openssl/makefile.msvc
  Modified files:
    nginx_version
  Renamed files:
    vendor/nginx-1.11.8/auto/cc/acc
      (from vendor/nginx-1.11.6/auto/cc/acc)
    vendor/nginx-1.11.8/auto/cc/bcc
      (from vendor/nginx-1.11.6/auto/cc/bcc)
    vendor/nginx-1.11.8/auto/cc/ccc
      (from vendor/nginx-1.11.6/auto/cc/ccc)
    vendor/nginx-1.11.8/auto/cc/clang
      (from vendor/nginx-1.11.6/auto/cc/clang)
    vendor/nginx-1.11.8/auto/cc/conf
      (from vendor/nginx-1.11.6/auto/cc/conf)
    vendor/nginx-1.11.8/auto/cc/gcc
      (from vendor/nginx-1.11.6/auto/cc/gcc)
    vendor/nginx-1.11.8/auto/cc/icc
      (from vendor/nginx-1.11.6/auto/cc/icc)
    vendor/nginx-1.11.8/auto/cc/msvc
      (from vendor/nginx-1.11.6/auto/cc/msvc)
    vendor/nginx-1.11.8/auto/cc/name
      (from vendor/nginx-1.11.6/auto/cc/name)
    vendor/nginx-1.11.8/auto/cc/owc
      (from vendor/nginx-1.11.6/auto/cc/owc)
    vendor/nginx-1.11.8/auto/cc/sunc
      (from vendor/nginx-1.11.6/auto/cc/sunc)
    vendor/nginx-1.11.8/auto/configure
      (from vendor/nginx-1.11.6/auto/configure)
    vendor/nginx-1.11.8/auto/define
      (from vendor/nginx-1.11.6/auto/define)
    vendor/nginx-1.11.8/auto/endianness
      (from vendor/nginx-1.11.6/auto/endianness)
    vendor/nginx-1.11.8/auto/feature
      (from vendor/nginx-1.11.6/auto/feature)
    vendor/nginx-1.11.8/auto/have
      (from vendor/nginx-1.11.6/auto/have)
    vendor/nginx-1.11.8/auto/have_headers
      (from vendor/nginx-1.11.6/auto/have_headers)
    vendor/nginx-1.11.8/auto/headers
      (from vendor/nginx-1.11.6/auto/headers)
    vendor/nginx-1.11.8/auto/include
      (from vendor/nginx-1.11.6/auto/include)
    vendor/nginx-1.11.8/auto/init
      (from vendor/nginx-1.11.6/auto/init)
    vendor/nginx-1.11.8/auto/install
      (from vendor/nginx-1.11.6/auto/install)
    vendor/nginx-1.11.8/auto/lib/conf
      (from vendor/nginx-1.11.6/auto/lib/conf)
    vendor/nginx-1.11.8/auto/lib/geoip/conf
      (from vendor/nginx-1.11.6/auto/lib/geoip/conf)
    vendor/nginx-1.11.8/auto/lib/google-perftools/conf
      (from vendor/nginx-1.11.6/auto/lib/google-perftools/conf)
    vendor/nginx-1.11.8/auto/lib/libatomic/conf
      (from vendor/nginx-1.11.6/auto/lib/libatomic/conf)
    vendor/nginx-1.11.8/auto/lib/libatomic/make
      (from vendor/nginx-1.11.6/auto/lib/libatomic/make)
    vendor/nginx-1.11.8/auto/lib/libgd/conf
      (from vendor/nginx-1.11.6/auto/lib/libgd/conf)
    vendor/nginx-1.11.8/auto/lib/libxslt/conf
      (from vendor/nginx-1.11.6/auto/lib/libxslt/conf)
    vendor/nginx-1.11.8/auto/lib/make
      (from vendor/nginx-1.11.6/auto/lib/make)
    vendor/nginx-1.11.8/auto/lib/openssl/conf
      (from vendor/nginx-1.11.6/auto/lib/openssl/conf)
    vendor/nginx-1.11.8/auto/lib/openssl/make
      (from vendor/nginx-1.11.6/auto/lib/openssl/make)
    vendor/nginx-1.11.8/auto/lib/openssl/makefile.bcc
      (from vendor/nginx-1.11.6/auto/lib/openssl/makefile.bcc)
    vendor/nginx-1.11.8/auto/lib/pcre/conf
      (from vendor/nginx-1.11.6/auto/lib/pcre/conf)
    vendor/nginx-1.11.8/auto/lib/pcre/make
      (from vendor/nginx-1.11.6/auto/lib/pcre/make)
    vendor/nginx-1.11.8/auto/lib/pcre/makefile.bcc
      (from vendor/nginx-1.11.6/auto/lib/pcre/makefile.bcc)
    vendor/nginx-1.11.8/auto/lib/pcre/makefile.msvc
      (from vendor/nginx-1.11.6/auto/lib/pcre/makefile.msvc)
    vendor/nginx-1.11.8/auto/lib/pcre/makefile.owc
      (from vendor/nginx-1.11.6/auto/lib/pcre/makefile.owc)
    vendor/nginx-1.11.8/auto/lib/perl/conf
      (from vendor/nginx-1.11.6/auto/lib/perl/conf)
    vendor/nginx-1.11.8/auto/lib/perl/make
      (from vendor/nginx-1.11.6/auto/lib/perl/make)
    vendor/nginx-1.11.8/auto/lib/zlib/conf
      (from vendor/nginx-1.11.6/auto/lib/zlib/conf)
    vendor/nginx-1.11.8/auto/lib/zlib/make
      (from vendor/nginx-1.11.6/auto/lib/zlib/make)
    vendor/nginx-1.11.8/auto/lib/zlib/makefile.bcc
      (from vendor/nginx-1.11.6/auto/lib/zlib/makefile.bcc)
    vendor/nginx-1.11.8/auto/lib/zlib/makefile.msvc
      (from vendor/nginx-1.11.6/auto/lib/zlib/makefile.msvc)
    vendor/nginx-1.11.8/auto/lib/zlib/makefile.owc
      (from vendor/nginx-1.11.6/auto/lib/zlib/makefile.owc)
    vendor/nginx-1.11.8/auto/make
      (from vendor/nginx-1.11.6/auto/make)
    vendor/nginx-1.11.8/auto/module
      (from vendor/nginx-1.11.6/auto/module)
    vendor/nginx-1.11.8/auto/modules
      (from vendor/nginx-1.11.6/auto/modules)
    vendor/nginx-1.11.8/auto/nohave
      (from vendor/nginx-1.11.6/auto/nohave)
    vendor/nginx-1.11.8/auto/options
      (from vendor/nginx-1.11.6/auto/options)
    vendor/nginx-1.11.8/auto/os/conf
      (from vendor/nginx-1.11.6/auto/os/conf)
    vendor/nginx-1.11.8/auto/os/darwin
      (from vendor/nginx-1.11.6/auto/os/darwin)
    vendor/nginx-1.11.8/auto/os/freebsd
      (from vendor/nginx-1.11.6/auto/os/freebsd)
    vendor/nginx-1.11.8/auto/os/linux
      (from vendor/nginx-1.11.6/auto/os/linux)
    vendor/nginx-1.11.8/auto/os/solaris
      (from vendor/nginx-1.11.6/auto/os/solaris)
    vendor/nginx-1.11.8/auto/os/win32
      (from vendor/nginx-1.11.6/auto/os/win32)
    vendor/nginx-1.11.8/auto/sources
      (from vendor/nginx-1.11.6/auto/sources)
    vendor/nginx-1.11.8/auto/stubs
      (from vendor/nginx-1.11.6/auto/stubs)
    vendor/nginx-1.11.8/auto/summary
      (from vendor/nginx-1.11.6/auto/summary)
    vendor/nginx-1.11.8/auto/threads
      (from vendor/nginx-1.11.6/auto/threads)
    vendor/nginx-1.11.8/auto/types/sizeof
      (from vendor/nginx-1.11.6/auto/types/sizeof)
    vendor/nginx-1.11.8/auto/types/typedef
      (from vendor/nginx-1.11.6/auto/types/typedef)
    vendor/nginx-1.11.8/auto/types/uintptr_t
      (from vendor/nginx-1.11.6/auto/types/uintptr_t)
    vendor/nginx-1.11.8/auto/types/value
      (from vendor/nginx-1.11.6/auto/types/value)
    vendor/nginx-1.11.8/auto/unix
      (from vendor/nginx-1.11.6/auto/unix)
    vendor/nginx-1.11.8/conf/fastcgi.conf
      (from vendor/nginx-1.11.6/conf/fastcgi.conf)
    vendor/nginx-1.11.8/conf/fastcgi_params
      (from vendor/nginx-1.11.6/conf/fastcgi_params)
    vendor/nginx-1.11.8/conf/koi-utf
      (from vendor/nginx-1.11.6/conf/koi-utf)
    vendor/nginx-1.11.8/conf/koi-win
      (from vendor/nginx-1.11.6/conf/koi-win)
    vendor/nginx-1.11.8/conf/mime.types
      (from vendor/nginx-1.11.6/conf/mime.types)
    vendor/nginx-1.11.8/conf/nginx.conf
      (from vendor/nginx-1.11.6/conf/nginx.conf)
    vendor/nginx-1.11.8/conf/scgi_params
      (from vendor/nginx-1.11.6/conf/scgi_params)
    vendor/nginx-1.11.8/conf/uwsgi_params
      (from vendor/nginx-1.11.6/conf/uwsgi_params)
    vendor/nginx-1.11.8/conf/win-utf
      (from vendor/nginx-1.11.6/conf/win-utf)
    vendor/nginx-1.11.8/contrib/README
      (from vendor/nginx-1.11.6/contrib/README)
    vendor/nginx-1.11.8/contrib/geo2nginx.pl
      (from vendor/nginx-1.11.6/contrib/geo2nginx.pl)
    vendor/nginx-1.11.8/contrib/unicode2nginx/koi-utf
      (from vendor/nginx-1.11.6/contrib/unicode2nginx/koi-utf)
    vendor/nginx-1.11.8/contrib/unicode2nginx/unicode-to-nginx.pl
      (from vendor/nginx-1.11.6/contrib/unicode2nginx/unicode-to-nginx.pl)
    vendor/nginx-1.11.8/contrib/unicode2nginx/win-utf
      (from vendor/nginx-1.11.6/contrib/unicode2nginx/win-utf)
    vendor/nginx-1.11.8/contrib/vim/ftdetect/nginx.vim
      (from vendor/nginx-1.11.6/contrib/vim/ftdetect/nginx.vim)
    vendor/nginx-1.11.8/contrib/vim/indent/nginx.vim
      (from vendor/nginx-1.11.6/contrib/vim/indent/nginx.vim)
    vendor/nginx-1.11.8/contrib/vim/syntax/nginx.vim
      (from vendor/nginx-1.11.6/contrib/vim/syntax/nginx.vim)
    vendor/nginx-1.11.8/docs/GNUmakefile
      (from vendor/nginx-1.11.6/docs/GNUmakefile)
    vendor/nginx-1.11.8/docs/dtd/change_log_conf.dtd
      (from vendor/nginx-1.11.6/docs/dtd/change_log_conf.dtd)
    vendor/nginx-1.11.8/docs/dtd/changes.dtd
      (from vendor/nginx-1.11.6/docs/dtd/changes.dtd)
    vendor/nginx-1.11.8/docs/html/50x.html
      (from vendor/nginx-1.11.6/docs/html/50x.html)
    vendor/nginx-1.11.8/docs/html/index.html
      (from vendor/nginx-1.11.6/docs/html/index.html)
    vendor/nginx-1.11.8/docs/man/nginx.8
      (from vendor/nginx-1.11.6/docs/man/nginx.8)
    vendor/nginx-1.11.8/docs/text/LICENSE
      (from vendor/nginx-1.11.6/docs/text/LICENSE)
    vendor/nginx-1.11.8/docs/text/README
      (from vendor/nginx-1.11.6/docs/text/README)
    vendor/nginx-1.11.8/docs/xml/change_log_conf.xml
      (from vendor/nginx-1.11.6/docs/xml/change_log_conf.xml)
    vendor/nginx-1.11.8/docs/xml/nginx/changes.xml
      (from vendor/nginx-1.11.6/docs/xml/nginx/changes.xml)
    vendor/nginx-1.11.8/docs/xsls/changes.xsls
      (from vendor/nginx-1.11.6/docs/xsls/changes.xsls)
    vendor/nginx-1.11.8/docs/xslt/changes.xslt
      (from vendor/nginx-1.11.6/docs/xslt/changes.xslt)
    vendor/nginx-1.11.8/misc/GNUmakefile
      (from vendor/nginx-1.11.6/misc/GNUmakefile)
    vendor/nginx-1.11.8/misc/README
      (from vendor/nginx-1.11.6/misc/README)
    vendor/nginx-1.11.8/src/core/nginx.c
      (from vendor/nginx-1.11.6/src/core/nginx.c)
    vendor/nginx-1.11.8/src/core/nginx.h
      (from vendor/nginx-1.11.6/src/core/nginx.h)
    vendor/nginx-1.11.8/src/core/ngx_array.c
      (from vendor/nginx-1.11.6/src/core/ngx_array.c)
    vendor/nginx-1.11.8/src/core/ngx_array.h
      (from vendor/nginx-1.11.6/src/core/ngx_array.h)
    vendor/nginx-1.11.8/src/core/ngx_buf.c
      (from vendor/nginx-1.11.6/src/core/ngx_buf.c)
    vendor/nginx-1.11.8/src/core/ngx_buf.h
      (from vendor/nginx-1.11.6/src/core/ngx_buf.h)
    vendor/nginx-1.11.8/src/core/ngx_conf_file.c
      (from vendor/nginx-1.11.6/src/core/ngx_conf_file.c)
    vendor/nginx-1.11.8/src/core/ngx_conf_file.h
      (from vendor/nginx-1.11.6/src/core/ngx_conf_file.h)
    vendor/nginx-1.11.8/src/core/ngx_config.h
      (from vendor/nginx-1.11.6/src/core/ngx_config.h)
    vendor/nginx-1.11.8/src/core/ngx_connection.c
      (from vendor/nginx-1.11.6/src/core/ngx_connection.c)
    vendor/nginx-1.11.8/src/core/ngx_connection.h
      (from vendor/nginx-1.11.6/src/core/ngx_connection.h)
    vendor/nginx-1.11.8/src/core/ngx_core.h
      (from vendor/nginx-1.11.6/src/core/ngx_core.h)
    vendor/nginx-1.11.8/src/core/ngx_cpuinfo.c
      (from vendor/nginx-1.11.6/src/core/ngx_cpuinfo.c)
    vendor/nginx-1.11.8/src/core/ngx_crc.h
      (from vendor/nginx-1.11.6/src/core/ngx_crc.h)
    vendor/nginx-1.11.8/src/core/ngx_crc32.c
      (from vendor/nginx-1.11.6/src/core/ngx_crc32.c)
    vendor/nginx-1.11.8/src/core/ngx_crc32.h
      (from vendor/nginx-1.11.6/src/core/ngx_crc32.h)
    vendor/nginx-1.11.8/src/core/ngx_crypt.c
      (from vendor/nginx-1.11.6/src/core/ngx_crypt.c)
    vendor/nginx-1.11.8/src/core/ngx_crypt.h
      (from vendor/nginx-1.11.6/src/core/ngx_crypt.h)
    vendor/nginx-1.11.8/src/core/ngx_cycle.c
      (from vendor/nginx-1.11.6/src/core/ngx_cycle.c)
    vendor/nginx-1.11.8/src/core/ngx_cycle.h
      (from vendor/nginx-1.11.6/src/core/ngx_cycle.h)
    vendor/nginx-1.11.8/src/core/ngx_file.c
      (from vendor/nginx-1.11.6/src/core/ngx_file.c)
    vendor/nginx-1.11.8/src/core/ngx_file.h
      (from vendor/nginx-1.11.6/src/core/ngx_file.h)
    vendor/nginx-1.11.8/src/core/ngx_hash.c
      (from vendor/nginx-1.11.6/src/core/ngx_hash.c)
    vendor/nginx-1.11.8/src/core/ngx_hash.h
      (from vendor/nginx-1.11.6/src/core/ngx_hash.h)
    vendor/nginx-1.11.8/src/core/ngx_inet.c
      (from vendor/nginx-1.11.6/src/core/ngx_inet.c)
    vendor/nginx-1.11.8/src/core/ngx_inet.h
      (from vendor/nginx-1.11.6/src/core/ngx_inet.h)
    vendor/nginx-1.11.8/src/core/ngx_list.c
      (from vendor/nginx-1.11.6/src/core/ngx_list.c)
    vendor/nginx-1.11.8/src/core/ngx_list.h
      (from vendor/nginx-1.11.6/src/core/ngx_list.h)
    vendor/nginx-1.11.8/src/core/ngx_log.c
      (from vendor/nginx-1.11.6/src/core/ngx_log.c)
    vendor/nginx-1.11.8/src/core/ngx_log.h
      (from vendor/nginx-1.11.6/src/core/ngx_log.h)
    vendor/nginx-1.11.8/src/core/ngx_md5.c
      (from vendor/nginx-1.11.6/src/core/ngx_md5.c)
    vendor/nginx-1.11.8/src/core/ngx_md5.h
      (from vendor/nginx-1.11.6/src/core/ngx_md5.h)
    vendor/nginx-1.11.8/src/core/ngx_module.c
      (from vendor/nginx-1.11.6/src/core/ngx_module.c)
    vendor/nginx-1.11.8/src/core/ngx_module.h
      (from vendor/nginx-1.11.6/src/core/ngx_module.h)
    vendor/nginx-1.11.8/src/core/ngx_murmurhash.c
      (from vendor/nginx-1.11.6/src/core/ngx_murmurhash.c)
    vendor/nginx-1.11.8/src/core/ngx_murmurhash.h
      (from vendor/nginx-1.11.6/src/core/ngx_murmurhash.h)
    vendor/nginx-1.11.8/src/core/ngx_open_file_cache.c
      (from vendor/nginx-1.11.6/src/core/ngx_open_file_cache.c)
    vendor/nginx-1.11.8/src/core/ngx_open_file_cache.h
      (from vendor/nginx-1.11.6/src/core/ngx_open_file_cache.h)
    vendor/nginx-1.11.8/src/core/ngx_output_chain.c
      (from vendor/nginx-1.11.6/src/core/ngx_output_chain.c)
    vendor/nginx-1.11.8/src/core/ngx_palloc.c
      (from vendor/nginx-1.11.6/src/core/ngx_palloc.c)
    vendor/nginx-1.11.8/src/core/ngx_palloc.h
      (from vendor/nginx-1.11.6/src/core/ngx_palloc.h)
    vendor/nginx-1.11.8/src/core/ngx_parse.c
      (from vendor/nginx-1.11.6/src/core/ngx_parse.c)
    vendor/nginx-1.11.8/src/core/ngx_parse.h
      (from vendor/nginx-1.11.6/src/core/ngx_parse.h)
    vendor/nginx-1.11.8/src/core/ngx_parse_time.c
      (from vendor/nginx-1.11.6/src/core/ngx_parse_time.c)
    vendor/nginx-1.11.8/src/core/ngx_parse_time.h
      (from vendor/nginx-1.11.6/src/core/ngx_parse_time.h)
    vendor/nginx-1.11.8/src/core/ngx_proxy_protocol.c
      (from vendor/nginx-1.11.6/src/core/ngx_proxy_protocol.c)
    vendor/nginx-1.11.8/src/core/ngx_proxy_protocol.h
      (from vendor/nginx-1.11.6/src/core/ngx_proxy_protocol.h)
    vendor/nginx-1.11.8/src/core/ngx_queue.c
      (from vendor/nginx-1.11.6/src/core/ngx_queue.c)
    vendor/nginx-1.11.8/src/core/ngx_queue.h
      (from vendor/nginx-1.11.6/src/core/ngx_queue.h)
    vendor/nginx-1.11.8/src/core/ngx_radix_tree.c
      (from vendor/nginx-1.11.6/src/core/ngx_radix_tree.c)
    vendor/nginx-1.11.8/src/core/ngx_radix_tree.h
      (from vendor/nginx-1.11.6/src/core/ngx_radix_tree.h)
    vendor/nginx-1.11.8/src/core/ngx_rbtree.c
      (from vendor/nginx-1.11.6/src/core/ngx_rbtree.c)
    vendor/nginx-1.11.8/src/core/ngx_rbtree.h
      (from vendor/nginx-1.11.6/src/core/ngx_rbtree.h)
    vendor/nginx-1.11.8/src/core/ngx_regex.c
      (from vendor/nginx-1.11.6/src/core/ngx_regex.c)
    vendor/nginx-1.11.8/src/core/ngx_regex.h
      (from vendor/nginx-1.11.6/src/core/ngx_regex.h)
    vendor/nginx-1.11.8/src/core/ngx_resolver.c
      (from vendor/nginx-1.11.6/src/core/ngx_resolver.c)
    vendor/nginx-1.11.8/src/core/ngx_resolver.h
      (from vendor/nginx-1.11.6/src/core/ngx_resolver.h)
    vendor/nginx-1.11.8/src/core/ngx_rwlock.c
      (from vendor/nginx-1.11.6/src/core/ngx_rwlock.c)
    vendor/nginx-1.11.8/src/core/ngx_rwlock.h
      (from vendor/nginx-1.11.6/src/core/ngx_rwlock.h)
    vendor/nginx-1.11.8/src/core/ngx_sha1.c
      (from vendor/nginx-1.11.6/src/core/ngx_sha1.c)
    vendor/nginx-1.11.8/src/core/ngx_sha1.h
      (from vendor/nginx-1.11.6/src/core/ngx_sha1.h)
    vendor/nginx-1.11.8/src/core/ngx_shmtx.c
      (from vendor/nginx-1.11.6/src/core/ngx_shmtx.c)
    vendor/nginx-1.11.8/src/core/ngx_shmtx.h
      (from vendor/nginx-1.11.6/src/core/ngx_shmtx.h)
    vendor/nginx-1.11.8/src/core/ngx_slab.c
      (from vendor/nginx-1.11.6/src/core/ngx_slab.c)
    vendor/nginx-1.11.8/src/core/ngx_slab.h
      (from vendor/nginx-1.11.6/src/core/ngx_slab.h)
    vendor/nginx-1.11.8/src/core/ngx_spinlock.c
      (from vendor/nginx-1.11.6/src/core/ngx_spinlock.c)
    vendor/nginx-1.11.8/src/core/ngx_string.c
      (from vendor/nginx-1.11.6/src/core/ngx_string.c)
    vendor/nginx-1.11.8/src/core/ngx_string.h
      (from vendor/nginx-1.11.6/src/core/ngx_string.h)
    vendor/nginx-1.11.8/src/core/ngx_syslog.c
      (from vendor/nginx-1.11.6/src/core/ngx_syslog.c)
    vendor/nginx-1.11.8/src/core/ngx_syslog.h
      (from vendor/nginx-1.11.6/src/core/ngx_syslog.h)
    vendor/nginx-1.11.8/src/core/ngx_thread_pool.c
      (from vendor/nginx-1.11.6/src/core/ngx_thread_pool.c)
    vendor/nginx-1.11.8/src/core/ngx_thread_pool.h
      (from vendor/nginx-1.11.6/src/core/ngx_thread_pool.h)
    vendor/nginx-1.11.8/src/core/ngx_times.c
      (from vendor/nginx-1.11.6/src/core/ngx_times.c)
    vendor/nginx-1.11.8/src/core/ngx_times.h
      (from vendor/nginx-1.11.6/src/core/ngx_times.h)
    vendor/nginx-1.11.8/src/event/modules/ngx_devpoll_module.c
      (from vendor/nginx-1.11.6/src/event/modules/ngx_devpoll_module.c)
    vendor/nginx-1.11.8/src/event/modules/ngx_epoll_module.c
      (from vendor/nginx-1.11.6/src/event/modules/ngx_epoll_module.c)
    vendor/nginx-1.11.8/src/event/modules/ngx_eventport_module.c
      (from vendor/nginx-1.11.6/src/event/modules/ngx_eventport_module.c)
    vendor/nginx-1.11.8/src/event/modules/ngx_iocp_module.c
      (from vendor/nginx-1.11.6/src/event/modules/ngx_iocp_module.c)
    vendor/nginx-1.11.8/src/event/modules/ngx_iocp_module.h
      (from vendor/nginx-1.11.6/src/event/modules/ngx_iocp_module.h)
    vendor/nginx-1.11.8/src/event/modules/ngx_kqueue_module.c
      (from vendor/nginx-1.11.6/src/event/modules/ngx_kqueue_module.c)
    vendor/nginx-1.11.8/src/event/modules/ngx_poll_module.c
      (from vendor/nginx-1.11.6/src/event/modules/ngx_poll_module.c)
    vendor/nginx-1.11.8/src/event/modules/ngx_select_module.c
      (from vendor/nginx-1.11.6/src/event/modules/ngx_select_module.c)
    vendor/nginx-1.11.8/src/event/modules/ngx_win32_select_module.c
      (from vendor/nginx-1.11.6/src/event/modules/ngx_win32_select_module.c)
    vendor/nginx-1.11.8/src/event/ngx_event.c
      (from vendor/nginx-1.11.6/src/event/ngx_event.c)
    vendor/nginx-1.11.8/src/event/ngx_event.h
      (from vendor/nginx-1.11.6/src/event/ngx_event.h)
    vendor/nginx-1.11.8/src/event/ngx_event_accept.c
      (from vendor/nginx-1.11.6/src/event/ngx_event_accept.c)
    vendor/nginx-1.11.8/src/event/ngx_event_acceptex.c
      (from vendor/nginx-1.11.6/src/event/ngx_event_acceptex.c)
    vendor/nginx-1.11.8/src/event/ngx_event_connect.c
      (from vendor/nginx-1.11.6/src/event/ngx_event_connect.c)
    vendor/nginx-1.11.8/src/event/ngx_event_connect.h
      (from vendor/nginx-1.11.6/src/event/ngx_event_connect.h)
    vendor/nginx-1.11.8/src/event/ngx_event_connectex.c
      (from vendor/nginx-1.11.6/src/event/ngx_event_connectex.c)
    vendor/nginx-1.11.8/src/event/ngx_event_openssl.c
      (from vendor/nginx-1.11.6/src/event/ngx_event_openssl.c)
    vendor/nginx-1.11.8/src/event/ngx_event_openssl.h
      (from vendor/nginx-1.11.6/src/event/ngx_event_openssl.h)
    vendor/nginx-1.11.8/src/event/ngx_event_openssl_stapling.c
      (from vendor/nginx-1.11.6/src/event/ngx_event_openssl_stapling.c)
    vendor/nginx-1.11.8/src/event/ngx_event_pipe.c
      (from vendor/nginx-1.11.6/src/event/ngx_event_pipe.c)
    vendor/nginx-1.11.8/src/event/ngx_event_pipe.h
      (from vendor/nginx-1.11.6/src/event/ngx_event_pipe.h)
    vendor/nginx-1.11.8/src/event/ngx_event_posted.c
      (from vendor/nginx-1.11.6/src/event/ngx_event_posted.c)
    vendor/nginx-1.11.8/src/event/ngx_event_posted.h
      (from vendor/nginx-1.11.6/src/event/ngx_event_posted.h)
    vendor/nginx-1.11.8/src/event/ngx_event_timer.c
      (from vendor/nginx-1.11.6/src/event/ngx_event_timer.c)
    vendor/nginx-1.11.8/src/event/ngx_event_timer.h
      (from vendor/nginx-1.11.6/src/event/ngx_event_timer.h)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_access_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_access_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_addition_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_addition_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_auth_basic_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_auth_basic_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_auth_request_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_auth_request_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_autoindex_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_autoindex_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_browser_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_browser_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_charset_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_charset_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_chunked_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_chunked_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_dav_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_dav_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_degradation_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_degradation_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_empty_gif_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_empty_gif_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_fastcgi_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_fastcgi_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_flv_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_flv_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_geo_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_geo_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_geoip_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_geoip_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_gunzip_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_gunzip_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_gzip_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_gzip_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_gzip_static_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_gzip_static_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_headers_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_headers_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_image_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_image_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_index_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_index_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_limit_conn_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_limit_conn_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_limit_req_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_limit_req_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_log_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_log_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_map_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_map_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_memcached_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_memcached_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_mp4_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_mp4_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_not_modified_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_not_modified_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_proxy_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_proxy_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_random_index_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_random_index_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_range_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_range_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_realip_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_realip_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_referer_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_referer_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_rewrite_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_rewrite_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_scgi_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_scgi_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_secure_link_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_secure_link_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_slice_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_slice_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_split_clients_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_split_clients_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_ssi_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_ssi_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_ssi_filter_module.h
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_ssi_filter_module.h)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_ssl_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.h
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_ssl_module.h)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_static_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_static_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_stub_status_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_stub_status_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_sub_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_sub_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_hash_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_hash_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_ip_hash_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_ip_hash_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_keepalive_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_keepalive_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_least_conn_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_least_conn_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_zone_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_upstream_zone_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_userid_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_userid_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_uwsgi_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_uwsgi_module.c)
    vendor/nginx-1.11.8/src/http/modules/ngx_http_xslt_filter_module.c
      (from vendor/nginx-1.11.6/src/http/modules/ngx_http_xslt_filter_module.c)
    vendor/nginx-1.11.8/src/http/modules/perl/Makefile.PL
      (from vendor/nginx-1.11.6/src/http/modules/perl/Makefile.PL)
    vendor/nginx-1.11.8/src/http/modules/perl/nginx.pm
      (from vendor/nginx-1.11.6/src/http/modules/perl/nginx.pm)
    vendor/nginx-1.11.8/src/http/modules/perl/nginx.xs
      (from vendor/nginx-1.11.6/src/http/modules/perl/nginx.xs)
    vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.c
      (from vendor/nginx-1.11.6/src/http/modules/perl/ngx_http_perl_module.c)
    vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.h
      (from vendor/nginx-1.11.6/src/http/modules/perl/ngx_http_perl_module.h)
    vendor/nginx-1.11.8/src/http/modules/perl/typemap
      (from vendor/nginx-1.11.6/src/http/modules/perl/typemap)
    vendor/nginx-1.11.8/src/http/ngx_http.c
      (from vendor/nginx-1.11.6/src/http/ngx_http.c)
    vendor/nginx-1.11.8/src/http/ngx_http.h
      (from vendor/nginx-1.11.6/src/http/ngx_http.h)
    vendor/nginx-1.11.8/src/http/ngx_http_cache.h
      (from vendor/nginx-1.11.6/src/http/ngx_http_cache.h)
    vendor/nginx-1.11.8/src/http/ngx_http_config.h
      (from vendor/nginx-1.11.6/src/http/ngx_http_config.h)
    vendor/nginx-1.11.8/src/http/ngx_http_copy_filter_module.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_copy_filter_module.c)
    vendor/nginx-1.11.8/src/http/ngx_http_core_module.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_core_module.c)
    vendor/nginx-1.11.8/src/http/ngx_http_core_module.h
      (from vendor/nginx-1.11.6/src/http/ngx_http_core_module.h)
    vendor/nginx-1.11.8/src/http/ngx_http_file_cache.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_file_cache.c)
    vendor/nginx-1.11.8/src/http/ngx_http_header_filter_module.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_header_filter_module.c)
    vendor/nginx-1.11.8/src/http/ngx_http_parse.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_parse.c)
    vendor/nginx-1.11.8/src/http/ngx_http_postpone_filter_module.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_postpone_filter_module.c)
    vendor/nginx-1.11.8/src/http/ngx_http_request.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_request.c)
    vendor/nginx-1.11.8/src/http/ngx_http_request.h
      (from vendor/nginx-1.11.6/src/http/ngx_http_request.h)
    vendor/nginx-1.11.8/src/http/ngx_http_request_body.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_request_body.c)
    vendor/nginx-1.11.8/src/http/ngx_http_script.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_script.c)
    vendor/nginx-1.11.8/src/http/ngx_http_script.h
      (from vendor/nginx-1.11.6/src/http/ngx_http_script.h)
    vendor/nginx-1.11.8/src/http/ngx_http_special_response.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_special_response.c)
    vendor/nginx-1.11.8/src/http/ngx_http_upstream.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_upstream.c)
    vendor/nginx-1.11.8/src/http/ngx_http_upstream.h
      (from vendor/nginx-1.11.6/src/http/ngx_http_upstream.h)
    vendor/nginx-1.11.8/src/http/ngx_http_upstream_round_robin.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_upstream_round_robin.c)
    vendor/nginx-1.11.8/src/http/ngx_http_upstream_round_robin.h
      (from vendor/nginx-1.11.6/src/http/ngx_http_upstream_round_robin.h)
    vendor/nginx-1.11.8/src/http/ngx_http_variables.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_variables.c)
    vendor/nginx-1.11.8/src/http/ngx_http_variables.h
      (from vendor/nginx-1.11.6/src/http/ngx_http_variables.h)
    vendor/nginx-1.11.8/src/http/ngx_http_write_filter_module.c
      (from vendor/nginx-1.11.6/src/http/ngx_http_write_filter_module.c)
    vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.c
      (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2.c)
    vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.h
      (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2.h)
    vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_filter_module.c
      (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_filter_module.c)
    vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_huff_decode.c
      (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_huff_decode.c)
    vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_huff_encode.c
      (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_huff_encode.c)
    vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_module.c
      (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_module.c)
    vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_module.h
      (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_module.h)
    vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_table.c
      (from vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_table.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail.h
      (from vendor/nginx-1.11.6/src/mail/ngx_mail.h)
    vendor/nginx-1.11.8/src/mail/ngx_mail_auth_http_module.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_auth_http_module.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_core_module.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_core_module.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_handler.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_handler.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_imap_handler.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_imap_handler.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_imap_module.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_imap_module.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_imap_module.h
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_imap_module.h)
    vendor/nginx-1.11.8/src/mail/ngx_mail_parse.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_parse.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_handler.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_pop3_handler.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_module.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_pop3_module.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_module.h
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_pop3_module.h)
    vendor/nginx-1.11.8/src/mail/ngx_mail_proxy_module.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_proxy_module.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_handler.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_smtp_handler.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_smtp_module.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.h
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_smtp_module.h)
    vendor/nginx-1.11.8/src/mail/ngx_mail_ssl_module.c
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_ssl_module.c)
    vendor/nginx-1.11.8/src/mail/ngx_mail_ssl_module.h
      (from vendor/nginx-1.11.6/src/mail/ngx_mail_ssl_module.h)
    vendor/nginx-1.11.8/src/misc/ngx_cpp_test_module.cpp
      (from vendor/nginx-1.11.6/src/misc/ngx_cpp_test_module.cpp)
    vendor/nginx-1.11.8/src/misc/ngx_google_perftools_module.c
      (from vendor/nginx-1.11.6/src/misc/ngx_google_perftools_module.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_alloc.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_alloc.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_alloc.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_alloc.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_atomic.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_atomic.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_channel.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_channel.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_channel.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_channel.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_daemon.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_daemon.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_darwin.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_darwin.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_darwin_config.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_darwin_config.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_darwin_init.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_darwin_init.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_darwin_sendfile_chain.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_darwin_sendfile_chain.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_dlopen.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_dlopen.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_dlopen.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_dlopen.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_errno.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_errno.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_errno.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_errno.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_file_aio_read.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_file_aio_read.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_files.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_files.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_files.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_files.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_freebsd.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_freebsd.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_config.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_freebsd_config.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_init.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_freebsd_init.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_sendfile_chain.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_freebsd_sendfile_chain.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_amd64.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_gcc_atomic_amd64.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_ppc.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_gcc_atomic_ppc.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_sparc64.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_gcc_atomic_sparc64.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_x86.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_gcc_atomic_x86.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_linux.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_linux.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_linux_aio_read.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_linux_aio_read.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_linux_config.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_linux_config.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_linux_init.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_linux_init.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_linux_sendfile_chain.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_linux_sendfile_chain.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_os.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_os.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_posix_config.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_posix_config.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_posix_init.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_posix_init.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_process.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_process.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_process.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_process.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_process_cycle.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_process_cycle.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_process_cycle.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_process_cycle.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_readv_chain.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_readv_chain.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_recv.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_recv.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_send.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_send.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_setaffinity.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_setaffinity.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_setaffinity.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_setaffinity.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_setproctitle.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_setproctitle.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_setproctitle.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_setproctitle.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_shmem.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_shmem.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_shmem.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_shmem.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_socket.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_socket.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_socket.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_socket.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_solaris.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_solaris.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_solaris_config.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_solaris_config.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_solaris_init.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_solaris_init.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_solaris_sendfilev_chain.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_solaris_sendfilev_chain.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_amd64.il
      (from vendor/nginx-1.11.6/src/os/unix/ngx_sunpro_amd64.il)
    vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_atomic_sparc64.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_sunpro_atomic_sparc64.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_sparc64.il
      (from vendor/nginx-1.11.6/src/os/unix/ngx_sunpro_sparc64.il)
    vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_x86.il
      (from vendor/nginx-1.11.6/src/os/unix/ngx_sunpro_x86.il)
    vendor/nginx-1.11.8/src/os/unix/ngx_thread.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_thread.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_thread_cond.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_thread_cond.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_thread_id.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_thread_id.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_thread_mutex.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_thread_mutex.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_time.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_time.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_time.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_time.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_udp_recv.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_udp_recv.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_udp_send.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_udp_send.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_udp_sendmsg_chain.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_udp_sendmsg_chain.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_user.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_user.c)
    vendor/nginx-1.11.8/src/os/unix/ngx_user.h
      (from vendor/nginx-1.11.6/src/os/unix/ngx_user.h)
    vendor/nginx-1.11.8/src/os/unix/ngx_writev_chain.c
      (from vendor/nginx-1.11.6/src/os/unix/ngx_writev_chain.c)
    vendor/nginx-1.11.8/src/os/win32/nginx.ico
      (from vendor/nginx-1.11.6/src/os/win32/nginx.ico)
    vendor/nginx-1.11.8/src/os/win32/nginx.rc
      (from vendor/nginx-1.11.6/src/os/win32/nginx.rc)
    vendor/nginx-1.11.8/src/os/win32/nginx_icon16.xpm
      (from vendor/nginx-1.11.6/src/os/win32/nginx_icon16.xpm)
    vendor/nginx-1.11.8/src/os/win32/nginx_icon32.xpm
      (from vendor/nginx-1.11.6/src/os/win32/nginx_icon32.xpm)
    vendor/nginx-1.11.8/src/os/win32/nginx_icon48.xpm
      (from vendor/nginx-1.11.6/src/os/win32/nginx_icon48.xpm)
    vendor/nginx-1.11.8/src/os/win32/ngx_alloc.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_alloc.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_alloc.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_alloc.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_atomic.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_atomic.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_dlopen.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_dlopen.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_dlopen.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_dlopen.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_errno.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_errno.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_errno.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_errno.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_event_log.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_event_log.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_files.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_files.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_files.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_files.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_os.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_os.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_process.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_process.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_process.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_process.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_process_cycle.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_process_cycle.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_process_cycle.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_process_cycle.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_service.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_service.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_shmem.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_shmem.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_shmem.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_shmem.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_socket.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_socket.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_socket.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_socket.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_stat.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_stat.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_thread.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_thread.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_thread.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_thread.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_time.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_time.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_time.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_time.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_udp_wsarecv.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_udp_wsarecv.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_user.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_user.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_user.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_user.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_win32_config.h
      (from vendor/nginx-1.11.6/src/os/win32/ngx_win32_config.h)
    vendor/nginx-1.11.8/src/os/win32/ngx_win32_init.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_win32_init.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_wsarecv.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_wsarecv.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_wsarecv_chain.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_wsarecv_chain.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_wsasend.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_wsasend.c)
    vendor/nginx-1.11.8/src/os/win32/ngx_wsasend_chain.c
      (from vendor/nginx-1.11.6/src/os/win32/ngx_wsasend_chain.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream.h
      (from vendor/nginx-1.11.6/src/stream/ngx_stream.h)
    vendor/nginx-1.11.8/src/stream/ngx_stream_access_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_access_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_core_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_core_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_geo_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_geo_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_geoip_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_geoip_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_handler.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_handler.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_limit_conn_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_limit_conn_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_log_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_log_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_map_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_map_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_proxy_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_proxy_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_realip_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_realip_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_return_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_return_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_script.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_script.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_script.h
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_script.h)
    vendor/nginx-1.11.8/src/stream/ngx_stream_split_clients_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_split_clients_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.h
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_module.h)
    vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_preread_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_preread_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.h
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream.h)
    vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_hash_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_hash_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_least_conn_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_least_conn_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_round_robin.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.h
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_round_robin.h)
    vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_zone_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_zone_module.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_variables.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_variables.c)
    vendor/nginx-1.11.8/src/stream/ngx_stream_variables.h
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_variables.h)
    vendor/nginx-1.11.8/src/stream/ngx_stream_write_filter_module.c
      (from vendor/nginx-1.11.6/src/stream/ngx_stream_write_filter_module.c)

  Modified: nginx_version (+1 -1)
===================================================================
--- nginx_version    2016-12-27 22:25:26 +0900 (6b37cb7)
+++ nginx_version    2016-12-27 23:47:36 +0900 (40faed9)
@@ -1 +1 @@
-1.11.6
+1.11.8

  Deleted: vendor/nginx-1.11.6/auto/lib/openssl/makefile.msvc (+0 -14) 100644
===================================================================
--- vendor/nginx-1.11.6/auto/lib/openssl/makefile.msvc    2016-12-27 22:25:26 +0900 (fc9e578)
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-all:
-	cd $(OPENSSL)
-
-	perl Configure VC-WIN32 no-shared --prefix=openssl $(OPENSSL_OPT)
-
-	ms\do_ms
-
-	$(MAKE) -f ms\nt.mak
-	$(MAKE) -f ms\nt.mak install

  Renamed: vendor/nginx-1.11.8/auto/cc/acc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/bcc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/ccc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/clang (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/gcc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/icc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/msvc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/name (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/owc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/cc/sunc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/configure (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/define (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/endianness (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/feature (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/have (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/have_headers (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/headers (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/include (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/init (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/install (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/geoip/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/google-perftools/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/libatomic/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/libatomic/make (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/libgd/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/libxslt/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/make (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/openssl/conf (+10 -2) 88%
===================================================================
--- vendor/nginx-1.11.6/auto/lib/openssl/conf    2016-12-27 22:25:26 +0900 (39d9602)
+++ vendor/nginx-1.11.8/auto/lib/openssl/conf    2016-12-27 23:47:36 +0900 (e7d3795)
@@ -15,8 +15,16 @@ if [ $OPENSSL != NONE ]; then
 
             CORE_INCS="$CORE_INCS $OPENSSL/openssl/include"
             CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h"
-            CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
-            CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
+
+            if [ -f $OPENSSL/ms/do_ms.bat ]; then
+                # before OpenSSL 1.1.0
+                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
+                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
+            else
+                # OpenSSL 1.1.0+
+                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib"
+                CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib"
+            fi
 
             # libeay32.lib requires gdi32.lib
             CORE_LIBS="$CORE_LIBS gdi32.lib"

  Renamed: vendor/nginx-1.11.8/auto/lib/openssl/make (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/openssl/makefile.bcc (+0 -0) 100%
===================================================================

  Added: vendor/nginx-1.11.8/auto/lib/openssl/makefile.msvc (+21 -0) 100644
===================================================================
--- /dev/null
+++ vendor/nginx-1.11.8/auto/lib/openssl/makefile.msvc    2016-12-27 23:47:36 +0900 (5b90dcb)
@@ -0,0 +1,21 @@
+
+# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
+
+
+all:
+	cd $(OPENSSL)
+
+	perl Configure VC-WIN32 no-shared				\
+		--prefix="%cd%/openssl" 				\
+		--openssldir="%cd%/openssl/ssl" 			\
+		$(OPENSSL_OPT)
+
+	if exist ms\do_ms.bat (						\
+		ms\do_ms						\
+		&& $(MAKE) -f ms\nt.mak					\
+		&& $(MAKE) -f ms\nt.mak install				\
+	) else (							\
+		$(MAKE)							\
+		&& $(MAKE) install_sw					\
+	)

  Renamed: vendor/nginx-1.11.8/auto/lib/pcre/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/pcre/make (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/pcre/makefile.bcc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/pcre/makefile.msvc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/pcre/makefile.owc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/perl/conf (+3 -3) 92%
===================================================================
--- vendor/nginx-1.11.6/auto/lib/perl/conf    2016-12-27 22:25:26 +0900 (d891d82)
+++ vendor/nginx-1.11.8/auto/lib/perl/conf    2016-12-27 23:47:36 +0900 (e16a1bc)
@@ -12,9 +12,9 @@ NGX_PERL_VER=`$NGX_PERL -v 2>&1 | grep '^This is perl' 2>&1 \
 if test -n "$NGX_PERL_VER"; then
     echo " + perl version: $NGX_PERL_VER"
 
-    if [ "`$NGX_PERL -e 'use 5.006001; print "OK"'`" != "OK" ]; then
+    if [ "`$NGX_PERL -e 'use 5.008006; print "OK"'`" != "OK" ]; then
         echo
-        echo "$0: error: perl 5.6.1 or higher is required"
+        echo "$0: error: perl 5.8.6 or higher is required"
         echo
 
         exit 1;
@@ -76,7 +76,7 @@ if test -n "$NGX_PERL_VER"; then
 
 else
     echo
-    echo "$0: error: perl 5.6.1 or higher is required"
+    echo "$0: error: perl 5.8.6 or higher is required"
     echo
 
     exit 1;

  Renamed: vendor/nginx-1.11.8/auto/lib/perl/make (+5 -4) 84%
===================================================================
--- vendor/nginx-1.11.6/auto/lib/perl/make    2016-12-27 22:25:26 +0900 (350090c)
+++ vendor/nginx-1.11.8/auto/lib/perl/make    2016-12-27 23:47:36 +0900 (74e0f3a)
@@ -3,9 +3,6 @@
 # Copyright (C) Nginx, Inc.
 
 
-v=`grep 'define NGINX_VERSION' src/core/nginx.h | sed -e 's/^.*"\(.*\)".*/\1/'`
-
-
 cat << END                                                    >> $NGX_MAKEFILE
 
 $NGX_OBJS/src/http/modules/perl/ngx_http_perl_module.o: \\
@@ -27,7 +24,11 @@ $NGX_OBJS/src/http/modules/perl/Makefile: \\
 		src/http/modules/perl/nginx.pm \\
 		src/http/modules/perl/nginx.xs \\
 		src/http/modules/perl/typemap
-	sed "s/%%VERSION%%/$v/" src/http/modules/perl/nginx.pm > \\
+	grep 'define NGINX_VERSION' src/core/nginx.h \\
+		| sed -e 's/^.*"\(.*\)".*/\1/' > \\
+		$NGX_OBJS/src/http/modules/perl/version
+	sed "s/%%VERSION%%/\`cat $NGX_OBJS/src/http/modules/perl/version\`/" \\
+		src/http/modules/perl/nginx.pm > \\
 		$NGX_OBJS/src/http/modules/perl/nginx.pm
 	cp -p src/http/modules/perl/nginx.xs $NGX_OBJS/src/http/modules/perl/
 	cp -p src/http/modules/perl/typemap $NGX_OBJS/src/http/modules/perl/

  Renamed: vendor/nginx-1.11.8/auto/lib/zlib/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/zlib/make (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/zlib/makefile.bcc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/zlib/makefile.msvc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/lib/zlib/makefile.owc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/make (+3 -14) 97%
===================================================================
--- vendor/nginx-1.11.6/auto/make    2016-12-27 22:25:26 +0900 (84d2668)
+++ vendor/nginx-1.11.8/auto/make    2016-12-27 23:47:36 +0900 (7ddd100)
@@ -156,7 +156,7 @@ fi
 ngx_all_srcs="$ngx_all_srcs $MISC_SRCS"
 
 
-if test -n "$NGX_ADDON_SRCS"; then
+if test -n "$NGX_ADDON_SRCS$DYNAMIC_MODULES"; then
 
 cat << END                                                >> $NGX_MAKEFILE
 
@@ -499,17 +499,6 @@ else
     ngx_perl_cc="$ngx_perl_cc \$(ALL_INCS)"
 fi
 
-ngx_obj_deps="\$(CORE_DEPS)"
-if [ $HTTP != NO ]; then
-    ngx_obj_deps="$ngx_obj_deps \$(HTTP_DEPS)"
-fi
-if [ $MAIL != NO ]; then
-    ngx_obj_deps="$ngx_obj_deps \$(MAIL_DEPS)"
-fi
-if [ $STREAM != NO ]; then
-    ngx_obj_deps="$ngx_obj_deps \$(STREAM_DEPS)"
-fi
-
 for ngx_module in $DYNAMIC_MODULES
 do
     eval ngx_module_srcs="\$${ngx_module}_SRCS"
@@ -665,7 +654,7 @@ END
 
             cat << END                                        >> $NGX_MAKEFILE
 
-$ngx_obj:	$ngx_obj_deps$ngx_cont$ngx_src
+$ngx_obj:	\$(ADDON_DEPS)$ngx_cont$ngx_src
 	$ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
 
 END
@@ -673,7 +662,7 @@ END
 
             cat << END                                        >> $NGX_MAKEFILE
 
-$ngx_obj:	$ngx_obj_deps$ngx_cont$ngx_src
+$ngx_obj:	\$(ADDON_DEPS)$ngx_cont$ngx_src
 	$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
 
 END

  Renamed: vendor/nginx-1.11.8/auto/module (+4 -0) 96%
===================================================================
--- vendor/nginx-1.11.6/auto/module    2016-12-27 22:25:26 +0900 (3b00a07)
+++ vendor/nginx-1.11.8/auto/module    2016-12-27 23:47:36 +0900 (a2b578d)
@@ -35,6 +35,10 @@ if [ "$ngx_module_link" = DYNAMIC ]; then
         CORE_INCS="$CORE_INCS $ngx_module_incs"
     fi
 
+    if test -n "$ngx_module_deps"; then
+        NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps"
+    fi
+
     libs=
     for lib in $ngx_module_libs
     do

  Renamed: vendor/nginx-1.11.8/auto/modules (+2 -2) 99%
===================================================================
--- vendor/nginx-1.11.6/auto/modules    2016-12-27 22:25:26 +0900 (89377bf)
+++ vendor/nginx-1.11.8/auto/modules    2016-12-27 23:47:36 +0900 (c664fe3)
@@ -1252,7 +1252,7 @@ if [ $MAIL != NO ]; then
     elif [ $MAIL = DYNAMIC ]; then
         ngx_module_name=$MAIL_MODULES
         ngx_module_incs=
-        ngx_module_deps=$MAIL_DEPS
+        ngx_module_deps=
         ngx_module_srcs=$MAIL_SRCS
         ngx_module_libs=
         ngx_module_link=DYNAMIC
@@ -1272,7 +1272,7 @@ if [ $STREAM != NO ]; then
     elif [ $STREAM = DYNAMIC ]; then
         ngx_module_name=$STREAM_MODULES
         ngx_module_incs=
-        ngx_module_deps=$STREAM_DEPS
+        ngx_module_deps=
         ngx_module_srcs=$STREAM_SRCS
         ngx_module_libs=
         ngx_module_link=DYNAMIC

  Renamed: vendor/nginx-1.11.8/auto/nohave (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/options (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/os/conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/os/darwin (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/os/freebsd (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/os/linux (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/os/solaris (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/os/win32 (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/sources (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/stubs (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/summary (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/threads (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/types/sizeof (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/types/typedef (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/types/uintptr_t (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/types/value (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/auto/unix (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/conf/fastcgi.conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/conf/fastcgi_params (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/conf/koi-utf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/conf/koi-win (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/conf/mime.types (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/conf/nginx.conf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/conf/scgi_params (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/conf/uwsgi_params (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/conf/win-utf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/contrib/README (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/contrib/geo2nginx.pl (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/contrib/unicode2nginx/koi-utf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/contrib/unicode2nginx/unicode-to-nginx.pl (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/contrib/unicode2nginx/win-utf (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/contrib/vim/ftdetect/nginx.vim (+0 -0) 100%
===================================================================

  Added: vendor/nginx-1.11.8/contrib/vim/ftplugin/nginx.vim (+1 -0) 100644
===================================================================
--- /dev/null
+++ vendor/nginx-1.11.8/contrib/vim/ftplugin/nginx.vim    2016-12-27 23:47:36 +0900 (463eea9)
@@ -0,0 +1 @@
+setlocal commentstring=#\ %s

  Renamed: vendor/nginx-1.11.8/contrib/vim/indent/nginx.vim (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/contrib/vim/syntax/nginx.vim (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/GNUmakefile (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/dtd/change_log_conf.dtd (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/dtd/changes.dtd (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/html/50x.html (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/html/index.html (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/man/nginx.8 (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/text/LICENSE (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/text/README (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/xml/change_log_conf.xml (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/xml/nginx/changes.xml (+201 -0) 99%
===================================================================
--- vendor/nginx-1.11.6/docs/xml/nginx/changes.xml    2016-12-27 22:25:26 +0900 (1376338)
+++ vendor/nginx-1.11.8/docs/xml/nginx/changes.xml    2016-12-27 23:47:36 +0900 (1f0e2c6)
@@ -5,6 +5,207 @@
 <change_log title="nginx">
 
 
+<changes ver="1.11.8" date="27.12.2016">
+
+<change type="feature">
+<para lang="ru">
+директива absolute_redirect.
+</para>
+<para lang="en">
+the "absolute_redirect" directive.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+параметр escape директивы log_format.
+</para>
+<para lang="en">
+the "escape" parameter of the "log_format" directive.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+проверка клиентских SSL-сертификатов в модуле stream.
+</para>
+<para lang="en">
+client SSL certificates verification in the stream module.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+директива ssl_session_ticket_key поддерживает
+шифрование TLS session tickets с помощью AES256
+при использовании с 80-байтными ключами.
+</para>
+<para lang="en">
+the "ssl_session_ticket_key" directive supports
+AES256 encryption of TLS session tickets
+when used with 80-byte keys.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+поддержка vim-commentary в скриптах для vim.<br/>
+Спасибо Armin Grodon.
+</para>
+<para lang="en">
+vim-commentary support in vim scripts.<br/>
+Thanks to Armin Grodon.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+рекурсия при получении значений переменных не ограничивалась.
+</para>
+<para lang="en">
+recursion when evaluating variables was not limited.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+в модуле ngx_stream_ssl_preread_module.
+</para>
+<para lang="en">
+in the ngx_stream_ssl_preread_module.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+если сервер, описанный в блоке upstream в модуле stream,
+был признан неработающим, то после истечения fail_timeout он
+признавался работающим только после завершения тестового соединения;
+теперь достаточно, чтобы соединение было успешно установлено.
+</para>
+<para lang="en">
+if a server in an upstream in the stream module failed,
+it was considered alive only when a test connection sent
+to it after fail_timeout was closed;
+now a successfully established connection is enough.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+nginx/Windows не собирался с 64-битным Visual Studio.
+</para>
+<para lang="en">
+nginx/Windows could not be built with 64-bit Visual Studio.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+nginx/Windows не собирался с OpenSSL 1.1.0.
+</para>
+<para lang="en">
+nginx/Windows could not be built with OpenSSL 1.1.0.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.11.7" date="13.12.2016">
+
+<change type="change">
+<para lang="ru">
+переменная $ssl_client_verify теперь
+в случае ошибки проверки клиентского сертификата
+содержит строку с описанием ошибки,
+например, "FAILED:certificate has expired".
+</para>
+<para lang="en">
+now in case of a client certificate verification error
+the $ssl_client_verify variable contains a string with the failure reason,
+for example, "FAILED:certificate has expired".
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+переменные $ssl_ciphers, $ssl_curves,
+$ssl_client_v_start, $ssl_client_v_end и $ssl_client_v_remain.
+</para>
+<para lang="en">
+the $ssl_ciphers, $ssl_curves,
+$ssl_client_v_start, $ssl_client_v_end, and $ssl_client_v_remain variables.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+параметр volatile директивы map.
+</para>
+<para lang="en">
+the "volatile" parameter of the "map" directive.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+при сборке динамических модулей
+не учитывались заданные для модуля зависимости.
+</para>
+<para lang="en">
+dependencies specified for a module
+were ignored while building dynamic modules.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+при использовании HTTP/2 и директив limit_req или auth_request
+тело запроса могло быть повреждено;
+ошибка появилась в 1.11.0.
+</para>
+<para lang="en">
+when using HTTP/2 and the "limit_req" or "auth_request" directives
+client request body might be corrupted;
+the bug had appeared in 1.11.0.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+при использовании HTTP/2 в рабочем процессе мог произойти segmentation fault;
+ошибка появилась в 1.11.3.
+</para>
+<para lang="en">
+a segmentation fault might occur in a worker process when using HTTP/2;
+the bug had appeared in 1.11.3.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+в модуле ngx_http_mp4_module.<br/>
+Спасибо Congcong Hu.
+</para>
+<para lang="en">
+in the ngx_http_mp4_module.<br/>
+Thanks to Congcong Hu.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+в модуле ngx_http_perl_module.
+</para>
+<para lang="en">
+in the ngx_http_perl_module.
+</para>
+</change>
+
+</changes>
+
+
 <changes ver="1.11.6" date="15.11.2016">
 
 <change type="change">

  Renamed: vendor/nginx-1.11.8/docs/xsls/changes.xsls (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/docs/xslt/changes.xslt (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/misc/GNUmakefile (+2 -1) 99%
===================================================================
--- vendor/nginx-1.11.6/misc/GNUmakefile    2016-12-27 22:25:26 +0900 (9ab4193)
+++ vendor/nginx-1.11.8/misc/GNUmakefile    2016-12-27 23:47:36 +0900 (064fac1)
@@ -4,6 +4,7 @@ VER =		$(shell grep 'define NGINX_VERSION' src/core/nginx.h	\
 NGINX =		nginx-$(VER)
 TEMP =		tmp
 
+CC =		cl
 OBJS =		objs.msvc8
 OPENSSL =	openssl-1.0.2j
 ZLIB =		zlib-1.2.8
@@ -47,7 +48,7 @@ RELEASE:
 
 win32:
 	./auto/configure						\
-		--with-cc=cl						\
+		--with-cc=$(CC)						\
 		--builddir=$(OBJS)					\
 		--with-debug						\
 		--prefix= 						\

  Renamed: vendor/nginx-1.11.8/misc/README (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/nginx.c (+40 -8) 97%
===================================================================
--- vendor/nginx-1.11.6/src/core/nginx.c    2016-12-27 22:25:26 +0900 (60f8fe7)
+++ vendor/nginx-1.11.8/src/core/nginx.c    2016-12-27 23:47:36 +0900 (c5f09a5)
@@ -12,6 +12,7 @@
 
 static void ngx_show_version_info(void);
 static ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle);
+static void ngx_cleanup_environment(void *data);
 static ngx_int_t ngx_get_options(int argc, char *const *argv);
 static ngx_int_t ngx_process_options(ngx_cycle_t *cycle);
 static ngx_int_t ngx_save_argv(ngx_cycle_t *cycle, int argc, char *const *argv);
@@ -495,10 +496,11 @@ ngx_add_inherited_sockets(ngx_cycle_t *cycle)
 char **
 ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last)
 {
-    char             **p, **env;
-    ngx_str_t         *var;
-    ngx_uint_t         i, n;
-    ngx_core_conf_t   *ccf;
+    char                **p, **env;
+    ngx_str_t            *var;
+    ngx_uint_t            i, n;
+    ngx_core_conf_t      *ccf;
+    ngx_pool_cleanup_t   *cln;
 
     ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
 
@@ -550,14 +552,25 @@ tz_found:
 
     if (last) {
         env = ngx_alloc((*last + n + 1) * sizeof(char *), cycle->log);
+        if (env == NULL) {
+            return NULL;
+        }
+
         *last = n;
 
     } else {
-        env = ngx_palloc(cycle->pool, (n + 1) * sizeof(char *));
-    }
+        cln = ngx_pool_cleanup_add(cycle->pool, 0);
+        if (cln == NULL) {
+            return NULL;
+        }
 
-    if (env == NULL) {
-        return NULL;
+        env = ngx_alloc((n + 1) * sizeof(char *), cycle->log);
+        if (env == NULL) {
+            return NULL;
+        }
+
+        cln->handler = ngx_cleanup_environment;
+        cln->data = env;
     }
 
     n = 0;
@@ -591,6 +604,25 @@ tz_found:
 }
 
 
+static void
+ngx_cleanup_environment(void *data)
+{
+    char  **env = data;
+
+    if (environ == env) {
+
+        /*
+         * if the environment is still used, as it happens on exit,
+         * the only option is to leak it
+         */
+
+        return;
+    }
+
+    ngx_free(env);
+}
+
+
 ngx_pid_t
 ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv)
 {

  Renamed: vendor/nginx-1.11.8/src/core/nginx.h (+2 -2) 85%
===================================================================
--- vendor/nginx-1.11.6/src/core/nginx.h    2016-12-27 22:25:26 +0900 (a75ef04)
+++ vendor/nginx-1.11.8/src/core/nginx.h    2016-12-27 23:47:36 +0900 (983179f)
@@ -9,8 +9,8 @@
 #define _NGINX_H_INCLUDED_
 
 
-#define nginx_version      1011006
-#define NGINX_VERSION      "1.11.6"
+#define nginx_version      1011008
+#define NGINX_VERSION      "1.11.8"
 #define NGINX_VER          "nginx/" NGINX_VERSION
 
 #ifdef NGX_BUILD

  Renamed: vendor/nginx-1.11.8/src/core/ngx_array.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_array.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_buf.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_buf.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_conf_file.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_conf_file.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_config.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_connection.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_connection.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_core.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_cpuinfo.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_crc.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_crc32.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_crc32.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_crypt.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_crypt.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_cycle.c (+1 -12) 98%
===================================================================
--- vendor/nginx-1.11.6/src/core/ngx_cycle.c    2016-12-27 22:25:26 +0900 (a57991c)
+++ vendor/nginx-1.11.8/src/core/ngx_cycle.c    2016-12-27 23:47:36 +0900 (5e95628)
@@ -37,7 +37,7 @@ ngx_cycle_t *
 ngx_init_cycle(ngx_cycle_t *old_cycle)
 {
     void                *rv;
-    char               **senv, **env;
+    char               **senv;
     ngx_uint_t           i, n;
     ngx_log_t           *log;
     ngx_time_t          *tp;
@@ -750,20 +750,9 @@ old_shm_zone_done:
 
     if (ngx_process == NGX_PROCESS_MASTER || ngx_is_init_cycle(old_cycle)) {
 
-        /*
-         * perl_destruct() frees environ, if it is not the same as it was at
-         * perl_construct() time, therefore we save the previous cycle
-         * environment before ngx_conf_parse() where it will be changed.
-         */
-
-        env = environ;
-        environ = senv;
-
         ngx_destroy_pool(old_cycle->pool);
         cycle->old_cycle = NULL;
 
-        environ = env;
-
         return cycle;
     }
 

  Renamed: vendor/nginx-1.11.8/src/core/ngx_cycle.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_file.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_file.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_hash.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_hash.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_inet.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_inet.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_list.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_list.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_log.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_log.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_md5.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_md5.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_murmurhash.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_murmurhash.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_open_file_cache.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_open_file_cache.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_output_chain.c (+1 -1) 99%
===================================================================
--- vendor/nginx-1.11.6/src/core/ngx_output_chain.c    2016-12-27 22:25:26 +0900 (f784578)
+++ vendor/nginx-1.11.8/src/core/ngx_output_chain.c    2016-12-27 23:47:36 +0900 (7f5dc78)
@@ -512,7 +512,7 @@ ngx_output_chain_copy_buf(ngx_output_chain_ctx_t *ctx)
     size = ngx_buf_size(src);
     size = ngx_min(size, dst->end - dst->pos);
 
-    sendfile = ctx->sendfile & !ctx->directio;
+    sendfile = ctx->sendfile && !ctx->directio;
 
 #if (NGX_SENDFILE_LIMIT)
 

  Renamed: vendor/nginx-1.11.8/src/core/ngx_palloc.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_palloc.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_parse.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_parse.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_parse_time.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_parse_time.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_proxy_protocol.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_proxy_protocol.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_queue.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_queue.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_radix_tree.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_radix_tree.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_rbtree.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_rbtree.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_regex.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_regex.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_resolver.c (+21 -8) 99%
===================================================================
--- vendor/nginx-1.11.6/src/core/ngx_resolver.c    2016-12-27 22:25:26 +0900 (bdfed88)
+++ vendor/nginx-1.11.8/src/core/ngx_resolver.c    2016-12-27 23:47:36 +0900 (2065f75)
@@ -300,6 +300,10 @@ ngx_resolver_cleanup(void *data)
 #endif
 
         if (r->event) {
+            if (r->event->timer_set) {
+                ngx_del_timer(r->event);
+            }
+
             ngx_free(r->event);
         }
 
@@ -347,6 +351,10 @@ ngx_resolver_cleanup_tree(ngx_resolver_t *r, ngx_rbtree_t *tree)
             next = ctx->next;
 
             if (ctx->event) {
+                if (ctx->event->timer_set) {
+                    ngx_del_timer(ctx->event);
+                }
+
                 ngx_resolver_free(r, ctx->event);
             }
 
@@ -772,7 +780,7 @@ ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx,
 #endif
 
         if (rn->nsrvs) {
-            for (i = 0; i < rn->nsrvs; i++) {
+            for (i = 0; i < (ngx_uint_t) rn->nsrvs; i++) {
                 if (rn->u.srvs[i].name.data) {
                     ngx_resolver_free_locked(r, rn->u.srvs[i].name.data);
                 }
@@ -867,7 +875,7 @@ ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx,
         ngx_add_timer(ctx->event, ctx->timeout);
     }
 
-    if (ngx_queue_empty(resend_queue)) {
+    if (ngx_resolver_resend_empty(r)) {
         ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000));
     }
 
@@ -1090,7 +1098,7 @@ ngx_resolve_addr(ngx_resolver_ctx_t *ctx)
         ngx_add_timer(ctx->event, ctx->timeout);
     }
 
-    if (ngx_queue_empty(resend_queue)) {
+    if (ngx_resolver_resend_empty(r)) {
         ngx_add_timer(r->event, (ngx_msec_t) (r->resend_timeout * 1000));
     }
 
@@ -1548,6 +1556,7 @@ static ngx_uint_t
 ngx_resolver_resend_empty(ngx_resolver_t *r)
 {
     return ngx_queue_empty(&r->name_resend_queue)
+           && ngx_queue_empty(&r->srv_resend_queue)
 #if (NGX_HAVE_INET6)
            && ngx_queue_empty(&r->addr6_resend_queue)
 #endif
@@ -2946,7 +2955,11 @@ ngx_resolver_resolve_srv_names(ngx_resolver_ctx_t *ctx, ngx_resolver_node_t *rn)
     ctx->srvs = srvs;
     ctx->nsrvs = rn->nsrvs;
 
-    for (i = 0; i < rn->nsrvs; i++) {
+    if (ctx->event && ctx->event->timer_set) {
+        ngx_del_timer(ctx->event);
+    }
+
+    for (i = 0; i < (ngx_uint_t) rn->nsrvs; i++) {
         srvs[i].name.data = ngx_resolver_alloc(r, rn->u.srvs[i].name.len);
         if (srvs[i].name.data == NULL) {
             goto failed;
@@ -2965,7 +2978,7 @@ ngx_resolver_resolve_srv_names(ngx_resolver_ctx_t *ctx, ngx_resolver_node_t *rn)
         cctx->handler = ngx_resolver_srv_names_handler;
         cctx->data = ctx;
         cctx->srvs = &srvs[i];
-        cctx->timeout = 0;
+        cctx->timeout = ctx->timeout;
 
         srvs[i].priority = rn->u.srvs[i].priority;
         srvs[i].weight = rn->u.srvs[i].weight;
@@ -4064,7 +4077,7 @@ ngx_resolver_free_node(ngx_resolver_t *r, ngx_resolver_node_t *rn)
 #endif
 
     if (rn->nsrvs) {
-        for (i = 0; i < rn->nsrvs; i++) {
+        for (i = 0; i < (ngx_uint_t) rn->nsrvs; i++) {
             if (rn->u.srvs[i].name.data) {
                 ngx_resolver_free_locked(r, rn->u.srvs[i].name.data);
             }
@@ -4193,10 +4206,10 @@ ngx_resolver_export(ngx_resolver_t *r, ngx_resolver_node_t *rn,
                 d = 0;
             }
 
-            if (j == rn->naddrs) {
+            if (j == (ngx_uint_t) rn->naddrs) {
                 j = 0;
             }
-        } while (++i < rn->naddrs);
+        } while (++i < (ngx_uint_t) rn->naddrs);
     }
 
 #if (NGX_HAVE_INET6)

  Renamed: vendor/nginx-1.11.8/src/core/ngx_resolver.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_rwlock.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_rwlock.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_sha1.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_sha1.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_shmtx.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_shmtx.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_slab.c (+166 -150) 67%
===================================================================
--- vendor/nginx-1.11.6/src/core/ngx_slab.c    2016-12-27 22:25:26 +0900 (56e7765)
+++ vendor/nginx-1.11.8/src/core/ngx_slab.c    2016-12-27 23:47:36 +0900 (1d4ce2b)
@@ -41,6 +41,19 @@
 #endif
 
 
+#define ngx_slab_slots(pool)                                                  \
+    (ngx_slab_page_t *) ((u_char *) (pool) + sizeof(ngx_slab_pool_t))
+
+#define ngx_slab_page_type(page)   ((page)->prev & NGX_SLAB_PAGE_MASK)
+
+#define ngx_slab_page_prev(page)                                              \
+    (ngx_slab_page_t *) ((page)->prev & ~NGX_SLAB_PAGE_MASK)
+
+#define ngx_slab_page_addr(pool, page)                                        \
+    ((((page) - (pool)->pages) << ngx_pagesize_shift)                         \
+     + (uintptr_t) (pool)->start)
+
+
 #if (NGX_DEBUG_MALLOC)
 
 #define ngx_slab_junk(p, size)     ngx_memset(p, 0xA5, size)
@@ -76,7 +89,7 @@ ngx_slab_init(ngx_slab_pool_t *pool)
     size_t            size;
     ngx_int_t         m;
     ngx_uint_t        i, n, pages;
-    ngx_slab_page_t  *slots;
+    ngx_slab_page_t  *slots, *page;
 
     /* STUB */
     if (ngx_slab_max_size == 0) {
@@ -88,17 +101,19 @@ ngx_slab_init(ngx_slab_pool_t *pool)
     }
     /**/
 
-    pool->min_size = 1 << pool->min_shift;
+    pool->min_size = (size_t) 1 << pool->min_shift;
+
+    slots = ngx_slab_slots(pool);
 
-    p = (u_char *) pool + sizeof(ngx_slab_pool_t);
+    p = (u_char *) slots;
     size = pool->end - p;
 
     ngx_slab_junk(p, size);
 
-    slots = (ngx_slab_page_t *) p;
     n = ngx_pagesize_shift - pool->min_shift;
 
     for (i = 0; i < n; i++) {
+        /* only "next" is used in list head */
         slots[i].slab = 0;
         slots[i].next = &slots[i];
         slots[i].prev = 0;
@@ -106,30 +121,40 @@ ngx_slab_init(ngx_slab_pool_t *pool)
 
     p += n * sizeof(ngx_slab_page_t);
 
-    pages = (ngx_uint_t) (size / (ngx_pagesize + sizeof(ngx_slab_page_t)));
+    pool->stats = (ngx_slab_stat_t *) p;
+    ngx_memzero(pool->stats, n * sizeof(ngx_slab_stat_t));
+
+    p += n * sizeof(ngx_slab_stat_t);
+
+    size -= n * (sizeof(ngx_slab_page_t) + sizeof(ngx_slab_stat_t));
 
-    ngx_memzero(p, pages * sizeof(ngx_slab_page_t));
+    pages = (ngx_uint_t) (size / (ngx_pagesize + sizeof(ngx_slab_page_t)));
 
     pool->pages = (ngx_slab_page_t *) p;
+    ngx_memzero(pool->pages, pages * sizeof(ngx_slab_page_t));
+
+    page = pool->pages;
 
+    /* only "next" is used in list head */
+    pool->free.slab = 0;
+    pool->free.next = page;
     pool->free.prev = 0;
-    pool->free.next = (ngx_slab_page_t *) p;
 
-    pool->pages->slab = pages;
-    pool->pages->next = &pool->free;
-    pool->pages->prev = (uintptr_t) &pool->free;
+    page->slab = pages;
+    page->next = &pool->free;
+    page->prev = (uintptr_t) &pool->free;
 
-    pool->start = (u_char *)
-                  ngx_align_ptr((uintptr_t) p + pages * sizeof(ngx_slab_page_t),
-                                 ngx_pagesize);
+    pool->start = ngx_align_ptr(p + pages * sizeof(ngx_slab_page_t),
+                                ngx_pagesize);
 
     m = pages - (pool->end - pool->start) / ngx_pagesize;
     if (m > 0) {
         pages -= m;
-        pool->pages->slab = pages;
+        page->slab = pages;
     }
 
     pool->last = pool->pages + pages;
+    pool->pfree = pages;
 
     pool->log_nomem = 1;
     pool->log_ctx = &pool->zero;
@@ -168,8 +193,7 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size)
         page = ngx_slab_alloc_pages(pool, (size >> ngx_pagesize_shift)
                                           + ((size % ngx_pagesize) ? 1 : 0));
         if (page) {
-            p = (page - pool->pages) << ngx_pagesize_shift;
-            p += (uintptr_t) pool->start;
+            p = ngx_slab_page_addr(pool, page);
 
         } else {
             p = 0;
@@ -184,166 +208,140 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size)
         slot = shift - pool->min_shift;
 
     } else {
-        size = pool->min_size;
         shift = pool->min_shift;
         slot = 0;
     }
 
+    pool->stats[slot].reqs++;
+
     ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, ngx_cycle->log, 0,
                    "slab alloc: %uz slot: %ui", size, slot);
 
-    slots = (ngx_slab_page_t *) ((u_char *) pool + sizeof(ngx_slab_pool_t));
+    slots = ngx_slab_slots(pool);
     page = slots[slot].next;
 
     if (page->next != page) {
 
         if (shift < ngx_slab_exact_shift) {
 
-            do {
-                p = (page - pool->pages) << ngx_pagesize_shift;
-                bitmap = (uintptr_t *) (pool->start + p);
-
-                map = (1 << (ngx_pagesize_shift - shift))
-                          / (sizeof(uintptr_t) * 8);
-
-                for (n = 0; n < map; n++) {
-
-                    if (bitmap[n] != NGX_SLAB_BUSY) {
-
-                        for (m = 1, i = 0; m; m <<= 1, i++) {
-                            if ((bitmap[n] & m)) {
-                                continue;
-                            }
+            bitmap = (uintptr_t *) ngx_slab_page_addr(pool, page);
 
-                            bitmap[n] |= m;
+            map = (ngx_pagesize >> shift) / (sizeof(uintptr_t) * 8);
 
-                            i = ((n * sizeof(uintptr_t) * 8) << shift)
-                                + (i << shift);
+            for (n = 0; n < map; n++) {
 
-                            if (bitmap[n] == NGX_SLAB_BUSY) {
-                                for (n = n + 1; n < map; n++) {
-                                    if (bitmap[n] != NGX_SLAB_BUSY) {
-                                        p = (uintptr_t) bitmap + i;
+                if (bitmap[n] != NGX_SLAB_BUSY) {
 
-                                        goto done;
-                                    }
-                                }
-
-                                prev = (ngx_slab_page_t *)
-                                            (page->prev & ~NGX_SLAB_PAGE_MASK);
-                                prev->next = page->next;
-                                page->next->prev = page->prev;
-
-                                page->next = NULL;
-                                page->prev = NGX_SLAB_SMALL;
-                            }
-
-                            p = (uintptr_t) bitmap + i;
-
-                            goto done;
+                    for (m = 1, i = 0; m; m <<= 1, i++) {
+                        if (bitmap[n] & m) {
+                            continue;
                         }
-                    }
-                }
 
-                page = page->next;
+                        bitmap[n] |= m;
 
-            } while (page);
+                        i = (n * sizeof(uintptr_t) * 8 + i) << shift;
 
-        } else if (shift == ngx_slab_exact_shift) {
-
-            do {
-                if (page->slab != NGX_SLAB_BUSY) {
+                        p = (uintptr_t) bitmap + i;
 
-                    for (m = 1, i = 0; m; m <<= 1, i++) {
-                        if ((page->slab & m)) {
-                            continue;
-                        }
+                        pool->stats[slot].used++;
 
-                        page->slab |= m;
+                        if (bitmap[n] == NGX_SLAB_BUSY) {
+                            for (n = n + 1; n < map; n++) {
+                                if (bitmap[n] != NGX_SLAB_BUSY) {
+                                    goto done;
+                                }
+                            }
 
-                        if (page->slab == NGX_SLAB_BUSY) {
-                            prev = (ngx_slab_page_t *)
-                                            (page->prev & ~NGX_SLAB_PAGE_MASK);
+                            prev = ngx_slab_page_prev(page);
                             prev->next = page->next;
                             page->next->prev = page->prev;
 
                             page->next = NULL;
-                            page->prev = NGX_SLAB_EXACT;
+                            page->prev = NGX_SLAB_SMALL;
                         }
 
-                        p = (page - pool->pages) << ngx_pagesize_shift;
-                        p += i << shift;
-                        p += (uintptr_t) pool->start;
-
                         goto done;
                     }
                 }
+            }
 
-                page = page->next;
+        } else if (shift == ngx_slab_exact_shift) {
 
-            } while (page);
+            for (m = 1, i = 0; m; m <<= 1, i++) {
+                if (page->slab & m) {
+                    continue;
+                }
 
-        } else { /* shift > ngx_slab_exact_shift */
+                page->slab |= m;
 
-            n = ngx_pagesize_shift - (page->slab & NGX_SLAB_SHIFT_MASK);
-            n = 1 << n;
-            n = ((uintptr_t) 1 << n) - 1;
-            mask = n << NGX_SLAB_MAP_SHIFT;
+                if (page->slab == NGX_SLAB_BUSY) {
+                    prev = ngx_slab_page_prev(page);
+                    prev->next = page->next;
+                    page->next->prev = page->prev;
 
-            do {
-                if ((page->slab & NGX_SLAB_MAP_MASK) != mask) {
+                    page->next = NULL;
+                    page->prev = NGX_SLAB_EXACT;
+                }
 
-                    for (m = (uintptr_t) 1 << NGX_SLAB_MAP_SHIFT, i = 0;
-                         m & mask;
-                         m <<= 1, i++)
-                    {
-                        if ((page->slab & m)) {
-                            continue;
-                        }
+                p = ngx_slab_page_addr(pool, page) + (i << shift);
 
-                        page->slab |= m;
+                pool->stats[slot].used++;
 
-                        if ((page->slab & NGX_SLAB_MAP_MASK) == mask) {
-                            prev = (ngx_slab_page_t *)
-                                            (page->prev & ~NGX_SLAB_PAGE_MASK);
-                            prev->next = page->next;
-                            page->next->prev = page->prev;
+                goto done;
+            }
 
-                            page->next = NULL;
-                            page->prev = NGX_SLAB_BIG;
-                        }
+        } else { /* shift > ngx_slab_exact_shift */
 
-                        p = (page - pool->pages) << ngx_pagesize_shift;
-                        p += i << shift;
-                        p += (uintptr_t) pool->start;
+            mask = ((uintptr_t) 1 << (ngx_pagesize >> shift)) - 1;
+            mask <<= NGX_SLAB_MAP_SHIFT;
 
-                        goto done;
-                    }
+            for (m = (uintptr_t) 1 << NGX_SLAB_MAP_SHIFT, i = 0;
+                 m & mask;
+                 m <<= 1, i++)
+            {
+                if (page->slab & m) {
+                    continue;
+                }
+
+                page->slab |= m;
+
+                if ((page->slab & NGX_SLAB_MAP_MASK) == mask) {
+                    prev = ngx_slab_page_prev(page);
+                    prev->next = page->next;
+                    page->next->prev = page->prev;
+
+                    page->next = NULL;
+                    page->prev = NGX_SLAB_BIG;
                 }
 
-                page = page->next;
+                p = ngx_slab_page_addr(pool, page) + (i << shift);
 
-            } while (page);
+                pool->stats[slot].used++;
+
+                goto done;
+            }
         }
+
+        ngx_slab_error(pool, NGX_LOG_ALERT, "ngx_slab_alloc(): page is busy");
+        ngx_debug_point();
     }
 
     page = ngx_slab_alloc_pages(pool, 1);
 
     if (page) {
         if (shift < ngx_slab_exact_shift) {
-            p = (page - pool->pages) << ngx_pagesize_shift;
-            bitmap = (uintptr_t *) (pool->start + p);
+            bitmap = (uintptr_t *) ngx_slab_page_addr(pool, page);
 
-            s = 1 << shift;
-            n = (1 << (ngx_pagesize_shift - shift)) / 8 / s;
+            n = (ngx_pagesize >> shift) / ((1 << shift) * 8);
 
             if (n == 0) {
                 n = 1;
             }
 
-            bitmap[0] = (2 << n) - 1;
+            /* "n" elements for bitmap, plus one requested */
+            bitmap[0] = ((uintptr_t) 2 << n) - 1;
 
-            map = (1 << (ngx_pagesize_shift - shift)) / (sizeof(uintptr_t) * 8);
+            map = (ngx_pagesize >> shift) / (sizeof(uintptr_t) * 8);
 
             for (i = 1; i < map; i++) {
                 bitmap[i] = 0;
@@ -355,8 +353,11 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size)
 
             slots[slot].next = page;
 
-            p = ((page - pool->pages) << ngx_pagesize_shift) + s * n;
-            p += (uintptr_t) pool->start;
+            pool->stats[slot].total += (ngx_pagesize >> shift) - n;
+
+            p = ngx_slab_page_addr(pool, page) + (n << shift);
+
+            pool->stats[slot].used++;
 
             goto done;
 
@@ -368,8 +369,11 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size)
 
             slots[slot].next = page;
 
-            p = (page - pool->pages) << ngx_pagesize_shift;
-            p += (uintptr_t) pool->start;
+            pool->stats[slot].total += sizeof(uintptr_t) * 8;
+
+            p = ngx_slab_page_addr(pool, page);
+
+            pool->stats[slot].used++;
 
             goto done;
 
@@ -381,8 +385,11 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size)
 
             slots[slot].next = page;
 
-            p = (page - pool->pages) << ngx_pagesize_shift;
-            p += (uintptr_t) pool->start;
+            pool->stats[slot].total += ngx_pagesize >> shift;
+
+            p = ngx_slab_page_addr(pool, page);
+
+            pool->stats[slot].used++;
 
             goto done;
         }
@@ -390,6 +397,8 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size)
 
     p = 0;
 
+    pool->stats[slot].fails++;
+
 done:
 
     ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, ngx_cycle->log, 0,
@@ -444,7 +453,7 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
 {
     size_t            size;
     uintptr_t         slab, m, *bitmap;
-    ngx_uint_t        n, type, slot, shift, map;
+    ngx_uint_t        i, n, type, slot, shift, map;
     ngx_slab_page_t  *slots, *page;
 
     ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, ngx_cycle->log, 0, "slab free: %p", p);
@@ -457,31 +466,30 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
     n = ((u_char *) p - pool->start) >> ngx_pagesize_shift;
     page = &pool->pages[n];
     slab = page->slab;
-    type = page->prev & NGX_SLAB_PAGE_MASK;
+    type = ngx_slab_page_type(page);
 
     switch (type) {
 
     case NGX_SLAB_SMALL:
 
         shift = slab & NGX_SLAB_SHIFT_MASK;
-        size = 1 << shift;
+        size = (size_t) 1 << shift;
 
         if ((uintptr_t) p & (size - 1)) {
             goto wrong_chunk;
         }
 
         n = ((uintptr_t) p & (ngx_pagesize - 1)) >> shift;
-        m = (uintptr_t) 1 << (n & (sizeof(uintptr_t) * 8 - 1));
-        n /= (sizeof(uintptr_t) * 8);
+        m = (uintptr_t) 1 << (n % (sizeof(uintptr_t) * 8));
+        n /= sizeof(uintptr_t) * 8;
         bitmap = (uintptr_t *)
                              ((uintptr_t) p & ~((uintptr_t) ngx_pagesize - 1));
 
         if (bitmap[n] & m) {
+            slot = shift - pool->min_shift;
 
             if (page->next == NULL) {
-                slots = (ngx_slab_page_t *)
-                                   ((u_char *) pool + sizeof(ngx_slab_pool_t));
-                slot = shift - pool->min_shift;
+                slots = ngx_slab_slots(pool);
 
                 page->next = slots[slot].next;
                 slots[slot].next = page;
@@ -492,7 +500,7 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
 
             bitmap[n] &= ~m;
 
-            n = (1 << (ngx_pagesize_shift - shift)) / 8 / (1 << shift);
+            n = (ngx_pagesize >> shift) / ((1 << shift) * 8);
 
             if (n == 0) {
                 n = 1;
@@ -502,16 +510,18 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
                 goto done;
             }
 
-            map = (1 << (ngx_pagesize_shift - shift)) / (sizeof(uintptr_t) * 8);
+            map = (ngx_pagesize >> shift) / (sizeof(uintptr_t) * 8);
 
-            for (n = 1; n < map; n++) {
-                if (bitmap[n]) {
+            for (i = 1; i < map; i++) {
+                if (bitmap[i]) {
                     goto done;
                 }
             }
 
             ngx_slab_free_pages(pool, page, 1);
 
+            pool->stats[slot].total -= (ngx_pagesize >> shift) - n;
+
             goto done;
         }
 
@@ -528,10 +538,10 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
         }
 
         if (slab & m) {
+            slot = ngx_slab_exact_shift - pool->min_shift;
+
             if (slab == NGX_SLAB_BUSY) {
-                slots = (ngx_slab_page_t *)
-                                   ((u_char *) pool + sizeof(ngx_slab_pool_t));
-                slot = ngx_slab_exact_shift - pool->min_shift;
+                slots = ngx_slab_slots(pool);
 
                 page->next = slots[slot].next;
                 slots[slot].next = page;
@@ -548,6 +558,8 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
 
             ngx_slab_free_pages(pool, page, 1);
 
+            pool->stats[slot].total -= sizeof(uintptr_t) * 8;
+
             goto done;
         }
 
@@ -556,7 +568,7 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
     case NGX_SLAB_BIG:
 
         shift = slab & NGX_SLAB_SHIFT_MASK;
-        size = 1 << shift;
+        size = (size_t) 1 << shift;
 
         if ((uintptr_t) p & (size - 1)) {
             goto wrong_chunk;
@@ -566,11 +578,10 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
                               + NGX_SLAB_MAP_SHIFT);
 
         if (slab & m) {
+            slot = shift - pool->min_shift;
 
             if (page->next == NULL) {
-                slots = (ngx_slab_page_t *)
-                                   ((u_char *) pool + sizeof(ngx_slab_pool_t));
-                slot = shift - pool->min_shift;
+                slots = ngx_slab_slots(pool);
 
                 page->next = slots[slot].next;
                 slots[slot].next = page;
@@ -587,6 +598,8 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
 
             ngx_slab_free_pages(pool, page, 1);
 
+            pool->stats[slot].total -= ngx_pagesize >> shift;
+
             goto done;
         }
 
@@ -598,7 +611,7 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
             goto wrong_chunk;
         }
 
-        if (slab == NGX_SLAB_PAGE_FREE) {
+        if (!(slab & NGX_SLAB_PAGE_START)) {
             ngx_slab_error(pool, NGX_LOG_ALERT,
                            "ngx_slab_free(): page is already free");
             goto fail;
@@ -626,6 +639,8 @@ ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p)
 
 done:
 
+    pool->stats[slot].used--;
+
     ngx_slab_junk(p, size);
 
     return;
@@ -678,6 +693,8 @@ ngx_slab_alloc_pages(ngx_slab_pool_t *pool, ngx_uint_t pages)
             page->next = NULL;
             page->prev = NGX_SLAB_PAGE;
 
+            pool->pfree -= pages;
+
             if (--pages == 0) {
                 return page;
             }
@@ -706,9 +723,10 @@ static void
 ngx_slab_free_pages(ngx_slab_pool_t *pool, ngx_slab_page_t *page,
     ngx_uint_t pages)
 {
-    ngx_uint_t        type;
     ngx_slab_page_t  *prev, *join;
 
+    pool->pfree += pages;
+
     page->slab = pages--;
 
     if (pages) {
@@ -716,7 +734,7 @@ ngx_slab_free_pages(ngx_slab_pool_t *pool, ngx_slab_page_t *page,
     }
 
     if (page->next) {
-        prev = (ngx_slab_page_t *) (page->prev & ~NGX_SLAB_PAGE_MASK);
+        prev = ngx_slab_page_prev(page);
         prev->next = page->next;
         page->next->prev = page->prev;
     }
@@ -724,15 +742,14 @@ ngx_slab_free_pages(ngx_slab_pool_t *pool, ngx_slab_page_t *page,
     join = page + page->slab;
 
     if (join < pool->last) {
-        type = join->prev & NGX_SLAB_PAGE_MASK;
 
-        if (type == NGX_SLAB_PAGE) {
+        if (ngx_slab_page_type(join) == NGX_SLAB_PAGE) {
 
             if (join->next != NULL) {
                 pages += join->slab;
                 page->slab += join->slab;
 
-                prev = (ngx_slab_page_t *) (join->prev & ~NGX_SLAB_PAGE_MASK);
+                prev = ngx_slab_page_prev(join);
                 prev->next = join->next;
                 join->next->prev = join->prev;
 
@@ -745,19 +762,18 @@ ngx_slab_free_pages(ngx_slab_pool_t *pool, ngx_slab_page_t *page,
 
     if (page > pool->pages) {
         join = page - 1;
-        type = join->prev & NGX_SLAB_PAGE_MASK;
 
-        if (type == NGX_SLAB_PAGE) {
+        if (ngx_slab_page_type(join) == NGX_SLAB_PAGE) {
 
             if (join->slab == NGX_SLAB_PAGE_FREE) {
-                join = (ngx_slab_page_t *) (join->prev & ~NGX_SLAB_PAGE_MASK);
+                join = ngx_slab_page_prev(join);
             }
 
             if (join->next != NULL) {
                 pages += join->slab;
                 join->slab += page->slab;
 
-                prev = (ngx_slab_page_t *) (join->prev & ~NGX_SLAB_PAGE_MASK);
+                prev = ngx_slab_page_prev(join);
                 prev->next = join->next;
                 join->next->prev = join->prev;
 

  Renamed: vendor/nginx-1.11.8/src/core/ngx_slab.h (+12 -0) 85%
===================================================================
--- vendor/nginx-1.11.6/src/core/ngx_slab.h    2016-12-27 22:25:26 +0900 (2922a80)
+++ vendor/nginx-1.11.8/src/core/ngx_slab.h    2016-12-27 23:47:36 +0900 (eff893c)
@@ -23,6 +23,15 @@ struct ngx_slab_page_s {
 
 
 typedef struct {
+    ngx_uint_t        total;
+    ngx_uint_t        used;
+
+    ngx_uint_t        reqs;
+    ngx_uint_t        fails;
+} ngx_slab_stat_t;
+
+
+typedef struct {
     ngx_shmtx_sh_t    lock;
 
     size_t            min_size;
@@ -32,6 +41,9 @@ typedef struct {
     ngx_slab_page_t  *last;
     ngx_slab_page_t   free;
 
+    ngx_slab_stat_t  *stats;
+    ngx_uint_t        pfree;
+
     u_char           *start;
     u_char           *end;
 

  Renamed: vendor/nginx-1.11.8/src/core/ngx_spinlock.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_string.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_string.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_syslog.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_syslog.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_thread_pool.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_thread_pool.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_times.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/core/ngx_times.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_devpoll_module.c (+4 -6) 98%
===================================================================
--- vendor/nginx-1.11.6/src/event/modules/ngx_devpoll_module.c    2016-12-27 22:25:26 +0900 (f985fbd)
+++ vendor/nginx-1.11.8/src/event/modules/ngx_devpoll_module.c    2016-12-27 23:47:36 +0900 (39e480e)
@@ -481,13 +481,11 @@ ngx_devpoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
                           fd, event_list[i].events, revents);
         }
 
-        if ((revents & (POLLERR|POLLHUP|POLLNVAL))
-             && (revents & (POLLIN|POLLOUT)) == 0)
-        {
+        if (revents & (POLLERR|POLLHUP|POLLNVAL)) {
+
             /*
-             * if the error events were returned without POLLIN or POLLOUT,
-             * then add these flags to handle the events at least in one
-             * active handler
+             * if the error events were returned, add POLLIN and POLLOUT
+             * to handle the events at least in one active handler
              */
 
             revents |= POLLIN|POLLOUT;

  Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_epoll_module.c (+7 -12) 98%
===================================================================
--- vendor/nginx-1.11.6/src/event/modules/ngx_epoll_module.c    2016-12-27 22:25:26 +0900 (c267fd6)
+++ vendor/nginx-1.11.8/src/event/modules/ngx_epoll_module.c    2016-12-27 23:47:36 +0900 (760c69b)
@@ -863,6 +863,13 @@ ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
             ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                            "epoll_wait() error on fd:%d ev:%04XD",
                            c->fd, revents);
+
+            /*
+             * if the error events were returned, add EPOLLIN and EPOLLOUT
+             * to handle the events at least in one active handler
+             */
+
+            revents |= EPOLLIN|EPOLLOUT;
         }
 
 #if 0
@@ -873,18 +880,6 @@ ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
         }
 #endif
 
-        if ((revents & (EPOLLERR|EPOLLHUP))
-             && (revents & (EPOLLIN|EPOLLOUT)) == 0)
-        {
-            /*
-             * if the error events were returned without EPOLLIN or EPOLLOUT,
-             * then add these flags to handle the events at least in one
-             * active handler
-             */
-
-            revents |= EPOLLIN|EPOLLOUT;
-        }
-
         if ((revents & EPOLLIN) && rev->active) {
 
 #if (NGX_HAVE_EPOLLRDHUP)

  Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_eventport_module.c (+4 -6) 98%
===================================================================
--- vendor/nginx-1.11.6/src/event/modules/ngx_eventport_module.c    2016-12-27 22:25:26 +0900 (dafa27f)
+++ vendor/nginx-1.11.8/src/event/modules/ngx_eventport_module.c    2016-12-27 23:47:36 +0900 (0413599)
@@ -540,13 +540,11 @@ ngx_eventport_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
                               (int) event_list[i].portev_object, revents);
             }
 
-            if ((revents & (POLLERR|POLLHUP|POLLNVAL))
-                 && (revents & (POLLIN|POLLOUT)) == 0)
-            {
+            if (revents & (POLLERR|POLLHUP|POLLNVAL)) {
+
                 /*
-                 * if the error events were returned without POLLIN or POLLOUT,
-                 * then add these flags to handle the events at least in one
-                 * active handler
+                 * if the error events were returned, add POLLIN and POLLOUT
+                 * to handle the events at least in one active handler
                  */
 
                 revents |= POLLIN|POLLOUT;

  Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_iocp_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_iocp_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_kqueue_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_poll_module.c (+4 -6) 97%
===================================================================
--- vendor/nginx-1.11.6/src/event/modules/ngx_poll_module.c    2016-12-27 22:25:26 +0900 (4370950)
+++ vendor/nginx-1.11.8/src/event/modules/ngx_poll_module.c    2016-12-27 23:47:36 +0900 (a2a7079)
@@ -353,13 +353,11 @@ ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
             continue;
         }
 
-        if ((revents & (POLLERR|POLLHUP|POLLNVAL))
-             && (revents & (POLLIN|POLLOUT)) == 0)
-        {
+        if (revents & (POLLERR|POLLHUP|POLLNVAL)) {
+
             /*
-             * if the error events were returned without POLLIN or POLLOUT,
-             * then add these flags to handle the events at least in one
-             * active handler
+             * if the error events were returned, add POLLIN and POLLOUT
+             * to handle the events at least in one active handler
              */
 
             revents |= POLLIN|POLLOUT;

  Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_select_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/modules/ngx_win32_select_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_accept.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_acceptex.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_connect.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_connect.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_connectex.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_openssl.c (+409 -21) 91%
===================================================================
--- vendor/nginx-1.11.6/src/event/ngx_event_openssl.c    2016-12-27 22:25:26 +0900 (5c7734d)
+++ vendor/nginx-1.11.8/src/event/ngx_event_openssl.c    2016-12-27 23:47:36 +0900 (3c74b7b)
@@ -59,6 +59,12 @@ static int ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn,
 static ngx_int_t ngx_ssl_check_name(ngx_str_t *name, ASN1_STRING *str);
 #endif
 
+static time_t ngx_ssl_parse_time(
+#if OPENSSL_VERSION_NUMBER > 0x10100000L
+    const
+#endif
+    ASN1_TIME *asn1time);
+
 static void *ngx_openssl_create_conf(ngx_cycle_t *cycle);
 static char *ngx_openssl_engine(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
 static void ngx_openssl_exit(ngx_cycle_t *cycle);
@@ -106,6 +112,7 @@ int  ngx_ssl_session_cache_index;
 int  ngx_ssl_session_ticket_keys_index;
 int  ngx_ssl_certificate_index;
 int  ngx_ssl_next_certificate_index;
+int  ngx_ssl_certificate_name_index;
 int  ngx_ssl_stapling_index;
 
 
@@ -193,6 +200,14 @@ ngx_ssl_init(ngx_log_t *log)
         return NGX_ERROR;
     }
 
+    ngx_ssl_certificate_name_index = X509_get_ex_new_index(0, NULL, NULL, NULL,
+                                                           NULL);
+
+    if (ngx_ssl_certificate_name_index == -1) {
+        ngx_ssl_error(NGX_LOG_ALERT, log, 0, "X509_get_ex_new_index() failed");
+        return NGX_ERROR;
+    }
+
     ngx_ssl_stapling_index = X509_get_ex_new_index(0, NULL, NULL, NULL, NULL);
 
     if (ngx_ssl_stapling_index == -1) {
@@ -385,6 +400,15 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert,
         return NGX_ERROR;
     }
 
+    if (X509_set_ex_data(x509, ngx_ssl_certificate_name_index, cert->data)
+        == 0)
+    {
+        ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0, "X509_set_ex_data() failed");
+        X509_free(x509);
+        BIO_free(bio);
+        return NGX_ERROR;
+    }
+
     if (X509_set_ex_data(x509, ngx_ssl_next_certificate_index,
                       SSL_CTX_get_ex_data(ssl->ctx, ngx_ssl_certificate_index))
         == 0)
@@ -2832,7 +2856,8 @@ ngx_ssl_session_rbtree_insert_value(ngx_rbtree_node_t *temp,
 ngx_int_t
 ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths)
 {
-    u_char                         buf[48];
+    u_char                         buf[80];
+    size_t                         size;
     ssize_t                        n;
     ngx_str_t                     *path;
     ngx_file_t                     file;
@@ -2875,13 +2900,15 @@ ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths)
             goto failed;
         }
 
-        if (ngx_file_size(&fi) != 48) {
+        size = ngx_file_size(&fi);
+
+        if (size != 48 && size != 80) {
             ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
-                               "\"%V\" must be 48 bytes", &file.name);
+                               "\"%V\" must be 48 or 80 bytes", &file.name);
             goto failed;
         }
 
-        n = ngx_read_file(&file, buf, 48, 0);
+        n = ngx_read_file(&file, buf, size, 0);
 
         if (n == NGX_ERROR) {
             ngx_conf_log_error(NGX_LOG_CRIT, cf, ngx_errno,
@@ -2889,10 +2916,10 @@ ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths)
             goto failed;
         }
 
-        if (n != 48) {
+        if ((size_t) n != size) {
             ngx_conf_log_error(NGX_LOG_CRIT, cf, 0,
                                ngx_read_file_n " \"%V\" returned only "
-                               "%z bytes instead of 48", &file.name, n);
+                               "%z bytes instead of %uz", &file.name, n, size);
             goto failed;
         }
 
@@ -2901,9 +2928,18 @@ ngx_ssl_session_ticket_keys(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_array_t *paths)
             goto failed;
         }
 
-        ngx_memcpy(key->name, buf, 16);
-        ngx_memcpy(key->aes_key, buf + 16, 16);
-        ngx_memcpy(key->hmac_key, buf + 32, 16);
+        if (size == 48) {
+            key->size = 48;
+            ngx_memcpy(key->name, buf, 16);
+            ngx_memcpy(key->aes_key, buf + 16, 16);
+            ngx_memcpy(key->hmac_key, buf + 32, 16);
+
+        } else {
+            key->size = 80;
+            ngx_memcpy(key->name, buf, 16);
+            ngx_memcpy(key->hmac_key, buf + 16, 32);
+            ngx_memcpy(key->aes_key, buf + 48, 32);
+        }
 
         if (ngx_close_file(file.fd) == NGX_FILE_ERROR) {
             ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
@@ -2948,6 +2984,7 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn,
     unsigned char *name, unsigned char *iv, EVP_CIPHER_CTX *ectx,
     HMAC_CTX *hctx, int enc)
 {
+    size_t                         size;
     SSL_CTX                       *ssl_ctx;
     ngx_uint_t                     i;
     ngx_array_t                   *keys;
@@ -2962,7 +2999,6 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn,
     c = ngx_ssl_get_connection(ssl_conn);
     ssl_ctx = c->ssl->session_ctx;
 
-    cipher = EVP_aes_128_cbc();
 #ifdef OPENSSL_NO_SHA256
     digest = EVP_sha1();
 #else
@@ -2984,6 +3020,15 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn,
                        ngx_hex_dump(buf, key[0].name, 16) - buf, buf,
                        SSL_session_reused(ssl_conn) ? "reused" : "new");
 
+        if (key[0].size == 48) {
+            cipher = EVP_aes_128_cbc();
+            size = 16;
+
+        } else {
+            cipher = EVP_aes_256_cbc();
+            size = 32;
+        }
+
         if (RAND_bytes(iv, EVP_CIPHER_iv_length(cipher)) != 1) {
             ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "RAND_bytes() failed");
             return -1;
@@ -2996,12 +3041,12 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn,
         }
 
 #if OPENSSL_VERSION_NUMBER >= 0x10000000L
-        if (HMAC_Init_ex(hctx, key[0].hmac_key, 16, digest, NULL) != 1) {
+        if (HMAC_Init_ex(hctx, key[0].hmac_key, size, digest, NULL) != 1) {
             ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "HMAC_Init_ex() failed");
             return -1;
         }
 #else
-        HMAC_Init_ex(hctx, key[0].hmac_key, 16, digest, NULL);
+        HMAC_Init_ex(hctx, key[0].hmac_key, size, digest, NULL);
 #endif
 
         ngx_memcpy(name, key[0].name, 16);
@@ -3030,13 +3075,22 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn,
                        ngx_hex_dump(buf, key[i].name, 16) - buf, buf,
                        (i == 0) ? " (default)" : "");
 
+        if (key[i].size == 48) {
+            cipher = EVP_aes_128_cbc();
+            size = 16;
+
+        } else {
+            cipher = EVP_aes_256_cbc();
+            size = 32;
+        }
+
 #if OPENSSL_VERSION_NUMBER >= 0x10000000L
-        if (HMAC_Init_ex(hctx, key[i].hmac_key, 16, digest, NULL) != 1) {
+        if (HMAC_Init_ex(hctx, key[i].hmac_key, size, digest, NULL) != 1) {
             ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "HMAC_Init_ex() failed");
             return -1;
         }
 #else
-        HMAC_Init_ex(hctx, key[i].hmac_key, 16, digest, NULL);
+        HMAC_Init_ex(hctx, key[i].hmac_key, size, digest, NULL);
 #endif
 
         if (EVP_DecryptInit_ex(ectx, cipher, NULL, key[i].aes_key, iv) != 1) {
@@ -3270,6 +3324,158 @@ ngx_ssl_get_cipher_name(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
 
 
 ngx_int_t
+ngx_ssl_get_ciphers(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
+{
+#ifdef SSL_CTRL_GET_RAW_CIPHERLIST
+
+    int                n, i, bytes;
+    size_t             len;
+    u_char            *ciphers, *p;
+    const SSL_CIPHER  *cipher;
+
+    bytes = SSL_get0_raw_cipherlist(c->ssl->connection, NULL);
+    n = SSL_get0_raw_cipherlist(c->ssl->connection, &ciphers);
+
+    if (n <= 0) {
+        s->len = 0;
+        return NGX_OK;
+    }
+
+    len = 0;
+    n /= bytes;
+
+    for (i = 0; i < n; i++) {
+        cipher = SSL_CIPHER_find(c->ssl->connection, ciphers + i * bytes);
+
+        if (cipher) {
+            len += ngx_strlen(SSL_CIPHER_get_name(cipher));
+
+        } else {
+            len += sizeof("0x") - 1 + bytes * (sizeof("00") - 1);
+        }
+
+        len += sizeof(":") - 1;
+    }
+
+    s->data = ngx_pnalloc(pool, len);
+    if (s->data == NULL) {
+        return NGX_ERROR;
+    }
+
+    p = s->data;
+
+    for (i = 0; i < n; i++) {
+        cipher = SSL_CIPHER_find(c->ssl->connection, ciphers + i * bytes);
+
+        if (cipher) {
+            p = ngx_sprintf(p, "%s", SSL_CIPHER_get_name(cipher));
+
+        } else {
+            p = ngx_sprintf(p, "0x");
+            p = ngx_hex_dump(p, ciphers + i * bytes, bytes);
+        }
+
+        *p++ = ':';
+    }
+
+    p--;
+
+    s->len = p - s->data;
+
+#else
+
+    u_char  buf[4096];
+
+    if (SSL_get_shared_ciphers(c->ssl->connection, (char *) buf, 4096)
+        == NULL)
+    {
+        s->len = 0;
+        return NGX_OK;
+    }
+
+    s->len = ngx_strlen(buf);
+    s->data = ngx_pnalloc(pool, s->len);
+    if (s->data == NULL) {
+        return NGX_ERROR;
+    }
+
+    ngx_memcpy(s->data, buf, s->len);
+
+#endif
+
+    return NGX_OK;
+}
+
+
+ngx_int_t
+ngx_ssl_get_curves(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
+{
+#ifdef SSL_CTRL_GET_CURVES
+
+    int         *curves, n, i, nid;
+    u_char      *p;
+    size_t       len;
+
+    n = SSL_get1_curves(c->ssl->connection, NULL);
+
+    if (n <= 0) {
+        s->len = 0;
+        return NGX_OK;
+    }
+
+    curves = ngx_palloc(pool, n * sizeof(int));
+
+    n = SSL_get1_curves(c->ssl->connection, curves);
+    len = 0;
+
+    for (i = 0; i < n; i++) {
+        nid = curves[i];
+
+        if (nid & TLSEXT_nid_unknown) {
+            len += sizeof("0x0000") - 1;
+
+        } else {
+            len += ngx_strlen(OBJ_nid2sn(nid));
+        }
+
+        len += sizeof(":") - 1;
+    }
+
+    s->data = ngx_pnalloc(pool, len);
+    if (s->data == NULL) {
+        return NGX_ERROR;
+    }
+
+    p = s->data;
+
+    for (i = 0; i < n; i++) {
+        nid = curves[i];
+
+        if (nid & TLSEXT_nid_unknown) {
+            p = ngx_sprintf(p, "0x%04xd", nid & 0xffff);
+
+        } else {
+            p = ngx_sprintf(p, "%s", OBJ_nid2sn(nid));
+        }
+
+        *p++ = ':';
+    }
+
+    p--;
+
+    s->len = p - s->data;
+
+#else
+
+    s->len = 0;
+
+#endif
+
+    return NGX_OK;
+}
+
+
+ngx_int_t
 ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
 {
     u_char        *buf;
@@ -3699,28 +3905,210 @@ ngx_ssl_get_fingerprint(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
 ngx_int_t
 ngx_ssl_get_client_verify(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
 {
-    X509  *cert;
+    X509        *cert;
+    long         rc;
+    const char  *str;
 
-    if (SSL_get_verify_result(c->ssl->connection) != X509_V_OK) {
-        ngx_str_set(s, "FAILED");
+    cert = SSL_get_peer_certificate(c->ssl->connection);
+    if (cert == NULL) {
+        ngx_str_set(s, "NONE");
         return NGX_OK;
     }
 
-    cert = SSL_get_peer_certificate(c->ssl->connection);
+    X509_free(cert);
 
-    if (cert) {
+    rc = SSL_get_verify_result(c->ssl->connection);
+
+    if (rc == X509_V_OK) {
         ngx_str_set(s, "SUCCESS");
+        return NGX_OK;
+    }
 
-    } else {
-        ngx_str_set(s, "NONE");
+    str = X509_verify_cert_error_string(rc);
+
+    s->data = ngx_pnalloc(pool, sizeof("FAILED:") - 1 + ngx_strlen(str));
+    if (s->data == NULL) {
+        return NGX_ERROR;
+    }
+
+    s->len = ngx_sprintf(s->data, "FAILED:%s", str) - s->data;
+
+    return NGX_OK;
+}
+
+
+ngx_int_t
+ngx_ssl_get_client_v_start(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
+{
+    BIO     *bio;
+    X509    *cert;
+    size_t   len;
+
+    s->len = 0;
+
+    cert = SSL_get_peer_certificate(c->ssl->connection);
+    if (cert == NULL) {
+        return NGX_OK;
+    }
+
+    bio = BIO_new(BIO_s_mem());
+    if (bio == NULL) {
+        X509_free(cert);
+        return NGX_ERROR;
     }
 
+#if OPENSSL_VERSION_NUMBER > 0x10100000L
+    ASN1_TIME_print(bio, X509_get0_notBefore(cert));
+#else
+    ASN1_TIME_print(bio, X509_get_notBefore(cert));
+#endif
+
+    len = BIO_pending(bio);
+
+    s->len = len;
+    s->data = ngx_pnalloc(pool, len);
+    if (s->data == NULL) {
+        BIO_free(bio);
+        X509_free(cert);
+        return NGX_ERROR;
+    }
+
+    BIO_read(bio, s->data, len);
+    BIO_free(bio);
     X509_free(cert);
 
     return NGX_OK;
 }
 
 
+ngx_int_t
+ngx_ssl_get_client_v_end(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
+{
+    BIO     *bio;
+    X509    *cert;
+    size_t   len;
+
+    s->len = 0;
+
+    cert = SSL_get_peer_certificate(c->ssl->connection);
+    if (cert == NULL) {
+        return NGX_OK;
+    }
+
+    bio = BIO_new(BIO_s_mem());
+    if (bio == NULL) {
+        X509_free(cert);
+        return NGX_ERROR;
+    }
+
+#if OPENSSL_VERSION_NUMBER > 0x10100000L
+    ASN1_TIME_print(bio, X509_get0_notAfter(cert));
+#else
+    ASN1_TIME_print(bio, X509_get_notAfter(cert));
+#endif
+
+    len = BIO_pending(bio);
+
+    s->len = len;
+    s->data = ngx_pnalloc(pool, len);
+    if (s->data == NULL) {
+        BIO_free(bio);
+        X509_free(cert);
+        return NGX_ERROR;
+    }
+
+    BIO_read(bio, s->data, len);
+    BIO_free(bio);
+    X509_free(cert);
+
+    return NGX_OK;
+}
+
+
+ngx_int_t
+ngx_ssl_get_client_v_remain(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
+{
+    X509    *cert;
+    time_t   now, end;
+
+    s->len = 0;
+
+    cert = SSL_get_peer_certificate(c->ssl->connection);
+    if (cert == NULL) {
+        return NGX_OK;
+    }
+
+#if OPENSSL_VERSION_NUMBER > 0x10100000L
+    end = ngx_ssl_parse_time(X509_get0_notAfter(cert));
+#else
+    end = ngx_ssl_parse_time(X509_get_notAfter(cert));
+#endif
+
+    if (end == (time_t) NGX_ERROR) {
+        X509_free(cert);
+        return NGX_OK;
+    }
+
+    now = ngx_time();
+
+    if (end < now + 86400) {
+        ngx_str_set(s, "0");
+        X509_free(cert);
+        return NGX_OK;
+    }
+
+    s->data = ngx_pnalloc(pool, NGX_TIME_T_LEN);
+    if (s->data == NULL) {
+        X509_free(cert);
+        return NGX_ERROR;
+    }
+
+    s->len = ngx_sprintf(s->data, "%T", (end - now) / 86400) - s->data;
+
+    X509_free(cert);
+
+    return NGX_OK;
+}
+
+
+static time_t
+ngx_ssl_parse_time(
+#if OPENSSL_VERSION_NUMBER > 0x10100000L
+    const
+#endif
+    ASN1_TIME *asn1time)
+{
+    BIO     *bio;
+    char    *value;
+    size_t   len;
+    time_t   time;
+
+    /*
+     * OpenSSL doesn't provide a way to convert ASN1_TIME
+     * into time_t.  To do this, we use ASN1_TIME_print(),
+     * which uses the "MMM DD HH:MM:SS YYYY [GMT]" format (e.g.,
+     * "Feb  3 00:55:52 2015 GMT"), and parse the result.
+     */
+
+    bio = BIO_new(BIO_s_mem());
+    if (bio == NULL) {
+        return NGX_ERROR;
+    }
+
+    /* fake weekday prepended to match C asctime() format */
+
+    BIO_write(bio, "Tue ", sizeof("Tue ") - 1);
+    ASN1_TIME_print(bio, asn1time);
+    len = BIO_get_mem_data(bio, &value);
+
+    time = ngx_parse_http_time((u_char *) value, len);
+
+    BIO_free(bio);
+
+    return time;
+}
+
+
 static void *
 ngx_openssl_create_conf(ngx_cycle_t *cycle)
 {

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_openssl.h (+14 -2) 92%
===================================================================
--- vendor/nginx-1.11.6/src/event/ngx_event_openssl.h    2016-12-27 22:25:26 +0900 (d233c02)
+++ vendor/nginx-1.11.8/src/event/ngx_event_openssl.h    2016-12-27 23:47:36 +0900 (e093e10)
@@ -117,9 +117,10 @@ typedef struct {
 #ifdef SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB
 
 typedef struct {
+    size_t                      size;
     u_char                      name[16];
-    u_char                      aes_key[16];
-    u_char                      hmac_key[16];
+    u_char                      hmac_key[32];
+    u_char                      aes_key[32];
 } ngx_ssl_session_ticket_key_t;
 
 #endif
@@ -191,6 +192,10 @@ ngx_int_t ngx_ssl_get_protocol(ngx_connection_t *c, ngx_pool_t *pool,
     ngx_str_t *s);
 ngx_int_t ngx_ssl_get_cipher_name(ngx_connection_t *c, ngx_pool_t *pool,
     ngx_str_t *s);
+ngx_int_t ngx_ssl_get_ciphers(ngx_connection_t *c, ngx_pool_t *pool,
+    ngx_str_t *s);
+ngx_int_t ngx_ssl_get_curves(ngx_connection_t *c, ngx_pool_t *pool,
+    ngx_str_t *s);
 ngx_int_t ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool,
     ngx_str_t *s);
 ngx_int_t ngx_ssl_get_session_reused(ngx_connection_t *c, ngx_pool_t *pool,
@@ -215,6 +220,12 @@ ngx_int_t ngx_ssl_get_fingerprint(ngx_connection_t *c, ngx_pool_t *pool,
     ngx_str_t *s);
 ngx_int_t ngx_ssl_get_client_verify(ngx_connection_t *c, ngx_pool_t *pool,
     ngx_str_t *s);
+ngx_int_t ngx_ssl_get_client_v_start(ngx_connection_t *c, ngx_pool_t *pool,
+    ngx_str_t *s);
+ngx_int_t ngx_ssl_get_client_v_end(ngx_connection_t *c, ngx_pool_t *pool,
+    ngx_str_t *s);
+ngx_int_t ngx_ssl_get_client_v_remain(ngx_connection_t *c, ngx_pool_t *pool,
+    ngx_str_t *s);
 
 
 ngx_int_t ngx_ssl_handshake(ngx_connection_t *c);
@@ -236,6 +247,7 @@ extern int  ngx_ssl_session_cache_index;
 extern int  ngx_ssl_session_ticket_keys_index;
 extern int  ngx_ssl_certificate_index;
 extern int  ngx_ssl_next_certificate_index;
+extern int  ngx_ssl_certificate_name_index;
 extern int  ngx_ssl_stapling_index;
 
 

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_openssl_stapling.c (+59 -24) 95%
===================================================================
--- vendor/nginx-1.11.6/src/event/ngx_event_openssl_stapling.c    2016-12-27 22:25:26 +0900 (09fab76)
+++ vendor/nginx-1.11.8/src/event/ngx_event_openssl_stapling.c    2016-12-27 23:47:36 +0900 (d332c11)
@@ -31,6 +31,8 @@ typedef struct {
     X509                        *cert;
     X509                        *issuer;
 
+    u_char                      *name;
+
     time_t                       valid;
     time_t                       refresh;
 
@@ -45,6 +47,8 @@ struct ngx_ssl_ocsp_ctx_s {
     X509                        *cert;
     X509                        *issuer;
 
+    u_char                      *name;
+
     ngx_uint_t                   naddrs;
 
     ngx_addr_t                  *addrs;
@@ -57,14 +61,14 @@ struct ngx_ssl_ocsp_ctx_s {
 
     ngx_msec_t                   timeout;
 
-    void                       (*handler)(ngx_ssl_ocsp_ctx_t *r);
+    void                       (*handler)(ngx_ssl_ocsp_ctx_t *ctx);
     void                        *data;
 
     ngx_buf_t                   *request;
     ngx_buf_t                   *response;
     ngx_peer_connection_t        peer;
 
-    ngx_int_t                  (*process)(ngx_ssl_ocsp_ctx_t *r);
+    ngx_int_t                  (*process)(ngx_ssl_ocsp_ctx_t *ctx);
 
     ngx_uint_t                   state;
 
@@ -173,6 +177,8 @@ ngx_ssl_stapling_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, X509 *cert,
     staple->timeout = 60000;
     staple->verify = verify;
     staple->cert = cert;
+    staple->name = X509_get_ex_data(staple->cert,
+                                    ngx_ssl_certificate_name_index);
 
     if (file->len) {
         /* use OCSP response from the file */
@@ -354,7 +360,9 @@ ngx_ssl_stapling_issuer(ngx_conf_t *cf, ngx_ssl_t *ssl,
 
     if (rc == 0) {
         ngx_log_error(NGX_LOG_WARN, ssl->log, 0,
-                      "\"ssl_stapling\" ignored, issuer certificate not found");
+                      "\"ssl_stapling\" ignored, "
+                      "issuer certificate not found for certificate \"%s\"",
+                      staple->name);
         X509_STORE_CTX_free(store_ctx);
         return NGX_DECLINED;
     }
@@ -374,9 +382,9 @@ static ngx_int_t
 ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl,
     ngx_ssl_stapling_t *staple, ngx_str_t *responder)
 {
-    ngx_url_t                  u;
     char                      *s;
     ngx_str_t                  rsp;
+    ngx_url_t                  u;
     STACK_OF(OPENSSL_STRING)  *aia;
 
     if (responder->len == 0) {
@@ -387,7 +395,8 @@ ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl,
         if (aia == NULL) {
             ngx_log_error(NGX_LOG_WARN, ssl->log, 0,
                           "\"ssl_stapling\" ignored, "
-                          "no OCSP responder URL in the certificate");
+                          "no OCSP responder URL in the certificate \"%s\"",
+                          staple->name);
             return NGX_DECLINED;
         }
 
@@ -399,7 +408,8 @@ ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl,
         if (s == NULL) {
             ngx_log_error(NGX_LOG_WARN, ssl->log, 0,
                           "\"ssl_stapling\" ignored, "
-                          "no OCSP responder URL in the certificate");
+                          "no OCSP responder URL in the certificate \"%s\"",
+                          staple->name);
             X509_email_free(aia);
             return NGX_DECLINED;
         }
@@ -432,7 +442,9 @@ ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl,
     } else {
         ngx_log_error(NGX_LOG_WARN, ssl->log, 0,
                       "\"ssl_stapling\" ignored, "
-                      "invalid URL prefix in OCSP responder \"%V\"", &u.url);
+                      "invalid URL prefix in OCSP responder \"%V\" "
+                      "in the certificate \"%s\"",
+                      &u.url, staple->name);
         return NGX_DECLINED;
     }
 
@@ -440,7 +452,9 @@ ngx_ssl_stapling_responder(ngx_conf_t *cf, ngx_ssl_t *ssl,
         if (u.err) {
             ngx_log_error(NGX_LOG_WARN, ssl->log, 0,
                           "\"ssl_stapling\" ignored, "
-                          "%s in OCSP responder \"%V\"", u.err, &u.url);
+                          "%s in OCSP responder \"%V\" "
+                          "in the certificate \"%s\"",
+                          u.err, &u.url, staple->name);
             return NGX_DECLINED;
         }
 
@@ -547,6 +561,7 @@ ngx_ssl_stapling_update(ngx_ssl_stapling_t *staple)
 
     ctx->cert = staple->cert;
     ctx->issuer = staple->issuer;
+    ctx->name = staple->name;
 
     ctx->addrs = staple->addrs;
     ctx->host = staple->host;
@@ -757,10 +772,10 @@ error:
 static time_t
 ngx_ssl_stapling_time(ASN1_GENERALIZEDTIME *asn1time)
 {
-    u_char  *value;
+    BIO     *bio;
+    char    *value;
     size_t   len;
     time_t   time;
-    BIO     *bio;
 
     /*
      * OpenSSL doesn't provide a way to convert ASN1_GENERALIZEDTIME
@@ -780,7 +795,7 @@ ngx_ssl_stapling_time(ASN1_GENERALIZEDTIME *asn1time)
     ASN1_GENERALIZEDTIME_print(bio, asn1time);
     len = BIO_get_mem_data(bio, &value);
 
-    time = ngx_parse_http_time(value, len);
+    time = ngx_parse_http_time((u_char *) value, len);
 
     BIO_free(bio);
 
@@ -1005,7 +1020,7 @@ failed:
 static void
 ngx_ssl_ocsp_connect(ngx_ssl_ocsp_ctx_t *ctx)
 {
-    ngx_int_t    rc;
+    ngx_int_t  rc;
 
     ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ctx->log, 0,
                    "ssl ocsp connect");
@@ -1103,10 +1118,10 @@ ngx_ssl_ocsp_write_handler(ngx_event_t *wev)
 static void
 ngx_ssl_ocsp_read_handler(ngx_event_t *rev)
 {
-    ssize_t            n, size;
-    ngx_int_t          rc;
-    ngx_ssl_ocsp_ctx_t    *ctx;
-    ngx_connection_t  *c;
+    ssize_t              n, size;
+    ngx_int_t            rc;
+    ngx_connection_t    *c;
+    ngx_ssl_ocsp_ctx_t  *ctx;
 
     c = rev->data;
     ctx = c->data;
@@ -1310,12 +1325,11 @@ ngx_ssl_ocsp_process_status_line(ngx_ssl_ocsp_ctx_t *ctx)
     rc = ngx_ssl_ocsp_parse_status_line(ctx);
 
     if (rc == NGX_OK) {
-#if 0
-        ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ctx->log, 0,
-                       "ssl ocsp status line \"%*s\"",
-                       ctx->response->pos - ctx->response->start,
-                       ctx->response->start);
-#endif
+        ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ctx->log, 0,
+                       "ssl ocsp status %ui \"%*s\"",
+                       ctx->code,
+                       ctx->header_end - ctx->header_start,
+                       ctx->header_start);
 
         ctx->process = ngx_ssl_ocsp_process_headers;
         return ctx->process(ctx);
@@ -1476,6 +1490,7 @@ ngx_ssl_ocsp_parse_status_line(ngx_ssl_ocsp_ctx_t *ctx)
 
             if (++ctx->count == 3) {
                 state = sw_space_after_status;
+                ctx->header_start = p - 2;
             }
 
             break;
@@ -1493,6 +1508,7 @@ ngx_ssl_ocsp_parse_status_line(ngx_ssl_ocsp_ctx_t *ctx)
                 state = sw_almost_done;
                 break;
             case LF:
+                ctx->header_end = p;
                 goto done;
             default:
                 return NGX_ERROR;
@@ -1506,6 +1522,7 @@ ngx_ssl_ocsp_parse_status_line(ngx_ssl_ocsp_ctx_t *ctx)
                 state = sw_almost_done;
                 break;
             case LF:
+                ctx->header_end = p;
                 goto done;
             }
             break;
@@ -1514,6 +1531,7 @@ ngx_ssl_ocsp_parse_status_line(ngx_ssl_ocsp_ctx_t *ctx)
         case sw_almost_done:
             switch (ch) {
             case LF:
+                ctx->header_end = p - 1;
                 goto done;
             default:
                 return NGX_ERROR;
@@ -1608,10 +1626,11 @@ ngx_ssl_ocsp_process_headers(ngx_ssl_ocsp_ctx_t *ctx)
     return ctx->process(ctx);
 }
 
+
 static ngx_int_t
 ngx_ssl_ocsp_parse_header_line(ngx_ssl_ocsp_ctx_t *ctx)
 {
-    u_char      c, ch, *p;
+    u_char  c, ch, *p;
     enum {
         sw_start = 0,
         sw_name,
@@ -1821,12 +1840,27 @@ ngx_ssl_ocsp_log_error(ngx_log_t *log, u_char *buf, size_t len)
     if (log->action) {
         p = ngx_snprintf(buf, len, " while %s", log->action);
         len -= p - buf;
+        buf = p;
     }
 
     ctx = log->data;
 
     if (ctx) {
-        p = ngx_snprintf(p, len, ", responder: %V", &ctx->host);
+        p = ngx_snprintf(buf, len, ", responder: %V", &ctx->host);
+        len -= p - buf;
+        buf = p;
+    }
+
+    if (ctx && ctx->peer.name) {
+        p = ngx_snprintf(buf, len, ", peer: %V", ctx->peer.name);
+        len -= p - buf;
+        buf = p;
+    }
+
+    if (ctx && ctx->name) {
+        p = ngx_snprintf(buf, len, ", certificate: \"%s\"", ctx->name);
+        len -= p - buf;
+        buf = p;
     }
 
     return p;
@@ -1846,6 +1880,7 @@ ngx_ssl_stapling(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *file,
     return NGX_OK;
 }
 
+
 ngx_int_t
 ngx_ssl_stapling_resolver(ngx_conf_t *cf, ngx_ssl_t *ssl,
     ngx_resolver_t *resolver, ngx_msec_t resolver_timeout)

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_pipe.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_pipe.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_posted.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_posted.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_timer.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/event/ngx_event_timer.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_access_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_addition_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_auth_basic_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_auth_request_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_autoindex_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_browser_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_charset_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_chunked_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_dav_module.c (+3 -6) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/modules/ngx_http_dav_module.c    2016-12-27 22:25:26 +0900 (012a0fb)
+++ vendor/nginx-1.11.8/src/http/modules/ngx_http_dav_module.c    2016-12-27 23:47:36 +0900 (895a52d)
@@ -1067,7 +1067,7 @@ ngx_http_dav_location(ngx_http_request_t *r, u_char *path)
     u_char                    *location;
     ngx_http_core_loc_conf_t  *clcf;
 
-    r->headers_out.location = ngx_palloc(r->pool, sizeof(ngx_table_elt_t));
+    r->headers_out.location = ngx_list_push(&r->headers_out.headers);
     if (r->headers_out.location == NULL) {
         return NGX_ERROR;
     }
@@ -1086,11 +1086,8 @@ ngx_http_dav_location(ngx_http_request_t *r, u_char *path)
         ngx_memcpy(location, r->uri.data, r->uri.len);
     }
 
-    /*
-     * we do not need to set the r->headers_out.location->hash and
-     * r->headers_out.location->key fields
-     */
-
+    r->headers_out.location->hash = 1;
+    ngx_str_set(&r->headers_out.location->key, "Location");
     r->headers_out.location->value.len = r->uri.len;
     r->headers_out.location->value.data = location;
 

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_degradation_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_empty_gif_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_fastcgi_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_flv_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_geo_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_geoip_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_gunzip_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_gzip_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_gzip_static_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_headers_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_image_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_index_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_limit_conn_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_limit_req_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_log_module.c (+77 -6) 95%
===================================================================
--- vendor/nginx-1.11.6/src/http/modules/ngx_http_log_module.c    2016-12-27 22:25:26 +0900 (c42fb08)
+++ vendor/nginx-1.11.8/src/http/modules/ngx_http_log_module.c    2016-12-27 23:47:36 +0900 (ff8572b)
@@ -126,12 +126,16 @@ static u_char *ngx_http_log_request_length(ngx_http_request_t *r, u_char *buf,
     ngx_http_log_op_t *op);
 
 static ngx_int_t ngx_http_log_variable_compile(ngx_conf_t *cf,
-    ngx_http_log_op_t *op, ngx_str_t *value);
+    ngx_http_log_op_t *op, ngx_str_t *value, ngx_uint_t json);
 static size_t ngx_http_log_variable_getlen(ngx_http_request_t *r,
     uintptr_t data);
 static u_char *ngx_http_log_variable(ngx_http_request_t *r, u_char *buf,
     ngx_http_log_op_t *op);
 static uintptr_t ngx_http_log_escape(u_char *dst, u_char *src, size_t size);
+static size_t ngx_http_log_json_variable_getlen(ngx_http_request_t *r,
+    uintptr_t data);
+static u_char *ngx_http_log_json_variable(ngx_http_request_t *r, u_char *buf,
+    ngx_http_log_op_t *op);
 
 
 static void *ngx_http_log_create_main_conf(ngx_conf_t *cf);
@@ -909,7 +913,7 @@ ngx_http_log_request_length(ngx_http_request_t *r, u_char *buf,
 
 static ngx_int_t
 ngx_http_log_variable_compile(ngx_conf_t *cf, ngx_http_log_op_t *op,
-    ngx_str_t *value)
+    ngx_str_t *value, ngx_uint_t json)
 {
     ngx_int_t  index;
 
@@ -919,8 +923,16 @@ ngx_http_log_variable_compile(ngx_conf_t *cf, ngx_http_log_op_t *op,
     }
 
     op->len = 0;
-    op->getlen = ngx_http_log_variable_getlen;
-    op->run = ngx_http_log_variable;
+
+    if (json) {
+        op->getlen = ngx_http_log_json_variable_getlen;
+        op->run = ngx_http_log_json_variable;
+
+    } else {
+        op->getlen = ngx_http_log_variable_getlen;
+        op->run = ngx_http_log_variable;
+    }
+
     op->data = index;
 
     return NGX_OK;
@@ -1028,6 +1040,47 @@ ngx_http_log_escape(u_char *dst, u_char *src, size_t size)
 }
 
 
+static size_t
+ngx_http_log_json_variable_getlen(ngx_http_request_t *r, uintptr_t data)
+{
+    uintptr_t                   len;
+    ngx_http_variable_value_t  *value;
+
+    value = ngx_http_get_indexed_variable(r, data);
+
+    if (value == NULL || value->not_found) {
+        return 0;
+    }
+
+    len = ngx_escape_json(NULL, value->data, value->len);
+
+    value->escape = len ? 1 : 0;
+
+    return value->len + len;
+}
+
+
+static u_char *
+ngx_http_log_json_variable(ngx_http_request_t *r, u_char *buf,
+    ngx_http_log_op_t *op)
+{
+    ngx_http_variable_value_t  *value;
+
+    value = ngx_http_get_indexed_variable(r, op->data);
+
+    if (value == NULL || value->not_found) {
+        return buf;
+    }
+
+    if (value->escape == 0) {
+        return ngx_cpymem(buf, value->data, value->len);
+
+    } else {
+        return (u_char *) ngx_escape_json(buf, value->data, value->len);
+    }
+}
+
+
 static void *
 ngx_http_log_create_main_conf(ngx_conf_t *cf)
 {
@@ -1491,12 +1544,28 @@ ngx_http_log_compile_format(ngx_conf_t *cf, ngx_array_t *flushes,
     size_t               i, len;
     ngx_str_t           *value, var;
     ngx_int_t           *flush;
-    ngx_uint_t           bracket;
+    ngx_uint_t           bracket, json;
     ngx_http_log_op_t   *op;
     ngx_http_log_var_t  *v;
 
+    json = 0;
     value = args->elts;
 
+    if (s < args->nelts && ngx_strncmp(value[s].data, "escape=", 7) == 0) {
+        data = value[s].data + 7;
+
+        if (ngx_strcmp(data, "json") == 0) {
+            json = 1;
+
+        } else if (ngx_strcmp(data, "default") != 0) {
+            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+                               "unknown log format escaping \"%s\"", data);
+            return NGX_CONF_ERROR;
+        }
+
+        s++;
+    }
+
     for ( /* void */ ; s < args->nelts; s++) {
 
         i = 0;
@@ -1575,7 +1644,9 @@ ngx_http_log_compile_format(ngx_conf_t *cf, ngx_array_t *flushes,
                     }
                 }
 
-                if (ngx_http_log_variable_compile(cf, op, &var) != NGX_OK) {
+                if (ngx_http_log_variable_compile(cf, op, &var, json)
+                    != NGX_OK)
+                {
                     return NGX_CONF_ERROR;
                 }
 

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_map_module.c (+16 -2) 97%
===================================================================
--- vendor/nginx-1.11.6/src/http/modules/ngx_http_map_module.c    2016-12-27 22:25:26 +0900 (732aa5d)
+++ vendor/nginx-1.11.8/src/http/modules/ngx_http_map_module.c    2016-12-27 23:47:36 +0900 (2fc9be9)
@@ -26,7 +26,8 @@ typedef struct {
 
     ngx_http_variable_value_t  *default_value;
     ngx_conf_t                 *cf;
-    ngx_uint_t                  hostnames;      /* unsigned  hostnames:1 */
+    unsigned                    hostnames:1;
+    unsigned                    no_cacheable:1;
 } ngx_http_map_conf_ctx_t;
 
 
@@ -265,6 +266,7 @@ ngx_http_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     ctx.default_value = NULL;
     ctx.cf = &save;
     ctx.hostnames = 0;
+    ctx.no_cacheable = 0;
 
     save = *cf;
     cf->pool = pool;
@@ -281,6 +283,10 @@ ngx_http_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
         return rv;
     }
 
+    if (ctx.no_cacheable) {
+        var->flags |= NGX_HTTP_VAR_NOCACHEABLE;
+    }
+
     map->default_value = ctx.default_value ? ctx.default_value:
                                              &ngx_http_variable_null_value;
 
@@ -393,8 +399,16 @@ ngx_http_map(ngx_conf_t *cf, ngx_command_t *dummy, void *conf)
     {
         ctx->hostnames = 1;
         return NGX_CONF_OK;
+    }
+
+    if (cf->args->nelts == 1
+        && ngx_strcmp(value[0].data, "volatile") == 0)
+    {
+        ctx->no_cacheable = 1;
+        return NGX_CONF_OK;
+    }
 
-    } else if (cf->args->nelts != 2) {
+    if (cf->args->nelts != 2) {
         ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                            "invalid number of the map parameters");
         return NGX_CONF_ERROR;

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_memcached_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_mp4_module.c (+3 -1) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/modules/ngx_http_mp4_module.c    2016-12-27 22:25:26 +0900 (8f2920f)
+++ vendor/nginx-1.11.8/src/http/modules/ngx_http_mp4_module.c    2016-12-27 23:47:36 +0900 (f3c0fdd)
@@ -1229,7 +1229,9 @@ ngx_http_mp4_update_mdat_atom(ngx_http_mp4_file_t *mp4, off_t start_offset,
 
     atom_header = mp4->mdat_atom_header;
 
-    if ((uint64_t) atom_data_size > (uint64_t) 0xffffffff) {
+    if ((uint64_t) atom_data_size
+        > (uint64_t) 0xffffffff - sizeof(ngx_mp4_atom_header_t))
+    {
         atom_size = 1;
         atom_header_size = sizeof(ngx_mp4_atom_header64_t);
         ngx_mp4_set_64value(atom_header + sizeof(ngx_mp4_atom_header_t),

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_not_modified_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_proxy_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_random_index_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_range_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_realip_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_referer_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_rewrite_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_scgi_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_secure_link_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_slice_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_split_clients_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_ssi_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_ssi_filter_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.c (+15 -0) 97%
===================================================================
--- vendor/nginx-1.11.6/src/http/modules/ngx_http_ssl_module.c    2016-12-27 22:25:26 +0900 (e75f5d8)
+++ vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.c    2016-12-27 23:47:36 +0900 (2771ac1)
@@ -276,6 +276,12 @@ static ngx_http_variable_t  ngx_http_ssl_vars[] = {
     { ngx_string("ssl_cipher"), NULL, ngx_http_ssl_static_variable,
       (uintptr_t) ngx_ssl_get_cipher_name, NGX_HTTP_VAR_CHANGEABLE, 0 },
 
+    { ngx_string("ssl_ciphers"), NULL, ngx_http_ssl_variable,
+      (uintptr_t) ngx_ssl_get_ciphers, NGX_HTTP_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_curves"), NULL, ngx_http_ssl_variable,
+      (uintptr_t) ngx_ssl_get_curves, NGX_HTTP_VAR_CHANGEABLE, 0 },
+
     { ngx_string("ssl_session_id"), NULL, ngx_http_ssl_variable,
       (uintptr_t) ngx_ssl_get_session_id, NGX_HTTP_VAR_CHANGEABLE, 0 },
 
@@ -313,6 +319,15 @@ static ngx_http_variable_t  ngx_http_ssl_vars[] = {
     { ngx_string("ssl_client_verify"), NULL, ngx_http_ssl_variable,
       (uintptr_t) ngx_ssl_get_client_verify, NGX_HTTP_VAR_CHANGEABLE, 0 },
 
+    { ngx_string("ssl_client_v_start"), NULL, ngx_http_ssl_variable,
+      (uintptr_t) ngx_ssl_get_client_v_start, NGX_HTTP_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_v_end"), NULL, ngx_http_ssl_variable,
+      (uintptr_t) ngx_ssl_get_client_v_end, NGX_HTTP_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_v_remain"), NULL, ngx_http_ssl_variable,
+      (uintptr_t) ngx_ssl_get_client_v_remain, NGX_HTTP_VAR_CHANGEABLE, 0 },
+
     { ngx_null_string, NULL, NULL, 0, 0, 0 }
 };
 

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_ssl_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_static_module.c (+3 -6) 97%
===================================================================
--- vendor/nginx-1.11.6/src/http/modules/ngx_http_static_module.c    2016-12-27 22:25:26 +0900 (f79c4ae)
+++ vendor/nginx-1.11.8/src/http/modules/ngx_http_static_module.c    2016-12-27 23:47:36 +0900 (07b9580)
@@ -150,7 +150,7 @@ ngx_http_static_handler(ngx_http_request_t *r)
 
         ngx_http_clear_location(r);
 
-        r->headers_out.location = ngx_palloc(r->pool, sizeof(ngx_table_elt_t));
+        r->headers_out.location = ngx_list_push(&r->headers_out.headers);
         if (r->headers_out.location == NULL) {
             return NGX_HTTP_INTERNAL_SERVER_ERROR;
         }
@@ -182,11 +182,8 @@ ngx_http_static_handler(ngx_http_request_t *r)
             }
         }
 
-        /*
-         * we do not need to set the r->headers_out.location->hash and
-         * r->headers_out.location->key fields
-         */
-
+        r->headers_out.location->hash = 1;
+        ngx_str_set(&r->headers_out.location->key, "Location");
         r->headers_out.location->value.len = len;
         r->headers_out.location->value.data = location;
 

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_stub_status_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_sub_filter_module.c (+2 -2) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/modules/ngx_http_sub_filter_module.c    2016-12-27 22:25:26 +0900 (e8d1d80)
+++ vendor/nginx-1.11.8/src/http/modules/ngx_http_sub_filter_module.c    2016-12-27 23:47:36 +0900 (de58c6f)
@@ -645,7 +645,7 @@ ngx_http_sub_parse(ngx_http_request_t *r, ngx_http_sub_ctx_t *ctx,
 
         start = offset - (ngx_int_t) tables->min_match_len + 1;
 
-        i = ngx_max(tables->index[c], ctx->index);
+        i = ngx_max((ngx_uint_t) tables->index[c], ctx->index);
         j = tables->index[c + 1];
 
         while (i != j) {
@@ -978,7 +978,7 @@ ngx_http_sub_init_tables(ngx_http_sub_tables_t *tables,
         }
 
         c = match[i].match.data[tables->min_match_len - 1];
-        while (ch <= c) {
+        while (ch <= (ngx_uint_t) c) {
             tables->index[ch++] = (u_char) i;
         }
     }

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_hash_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_ip_hash_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_keepalive_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_least_conn_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_upstream_zone_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_userid_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_uwsgi_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/ngx_http_xslt_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/perl/Makefile.PL (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/perl/nginx.pm (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/perl/nginx.xs (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.c (+8 -0) 98%
===================================================================
--- vendor/nginx-1.11.6/src/http/modules/perl/ngx_http_perl_module.c    2016-12-27 22:25:26 +0900 (f9a9a84)
+++ vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.c    2016-12-27 23:47:36 +0900 (2796319)
@@ -207,6 +207,7 @@ ngx_http_perl_handle_request(ngx_http_request_t *r)
 
     dTHXa(pmcf->perl);
     PERL_SET_CONTEXT(pmcf->perl);
+    PERL_SET_INTERP(pmcf->perl);
 
     if (ctx->next == NULL) {
         plcf = ngx_http_get_module_loc_conf(r, ngx_http_perl_module);
@@ -322,6 +323,7 @@ ngx_http_perl_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v,
 
     dTHXa(pmcf->perl);
     PERL_SET_CONTEXT(pmcf->perl);
+    PERL_SET_INTERP(pmcf->perl);
 
     rc = ngx_http_perl_call_handler(aTHX_ r, pmcf->nginx, pv->sub, NULL,
                                     &pv->handler, &value);
@@ -387,6 +389,7 @@ ngx_http_perl_ssi(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ssi_ctx,
 
     dTHXa(pmcf->perl);
     PERL_SET_CONTEXT(pmcf->perl);
+    PERL_SET_INTERP(pmcf->perl);
 
 #if 0
 
@@ -568,6 +571,7 @@ ngx_http_perl_create_interpreter(ngx_conf_t *cf,
 
     dTHXa(perl);
     PERL_SET_CONTEXT(perl);
+    PERL_SET_INTERP(perl);
 
     perl_construct(perl);
 
@@ -828,6 +832,7 @@ ngx_http_perl_cleanup_perl(void *data)
     PerlInterpreter  *perl = data;
 
     PERL_SET_CONTEXT(perl);
+    PERL_SET_INTERP(perl);
 
     (void) perl_destruct(perl);
 
@@ -936,6 +941,7 @@ ngx_http_perl(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
 
     dTHXa(pmcf->perl);
     PERL_SET_CONTEXT(pmcf->perl);
+    PERL_SET_INTERP(pmcf->perl);
 
     ngx_http_perl_eval_anon_sub(aTHX_ &value[1], &plcf->sub);
 
@@ -1007,6 +1013,7 @@ ngx_http_perl_set(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
 
     dTHXa(pmcf->perl);
     PERL_SET_CONTEXT(pmcf->perl);
+    PERL_SET_INTERP(pmcf->perl);
 
     ngx_http_perl_eval_anon_sub(aTHX_ &value[2], &pv->sub);
 
@@ -1039,6 +1046,7 @@ ngx_http_perl_init_worker(ngx_cycle_t *cycle)
     if (pmcf) {
         dTHXa(pmcf->perl);
         PERL_SET_CONTEXT(pmcf->perl);
+        PERL_SET_INTERP(pmcf->perl);
 
         /* set worker's $$ */
 

  Renamed: vendor/nginx-1.11.8/src/http/modules/perl/ngx_http_perl_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/modules/perl/typemap (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http.c (+4 -1) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/ngx_http.c    2016-12-27 22:25:26 +0900 (ba559f2)
+++ vendor/nginx-1.11.8/src/http/ngx_http.c    2016-12-27 23:47:36 +0900 (c036389)
@@ -457,7 +457,10 @@ ngx_http_init_phase_handlers(ngx_conf_t *cf, ngx_http_core_main_conf_t *cmcf)
     use_rewrite = cmcf->phases[NGX_HTTP_REWRITE_PHASE].handlers.nelts ? 1 : 0;
     use_access = cmcf->phases[NGX_HTTP_ACCESS_PHASE].handlers.nelts ? 1 : 0;
 
-    n = use_rewrite + use_access + cmcf->try_files + 1 /* find config phase */;
+    n = 1                  /* find config phase */
+        + use_rewrite      /* post rewrite phase */
+        + use_access       /* post access phase */
+        + cmcf->try_files;
 
     for (i = 0; i < NGX_HTTP_LOG_PHASE; i++) {
         n += cmcf->phases[i].handlers.nelts;

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_cache.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_config.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_copy_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_core_module.c (+12 -4) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/ngx_http_core_module.c    2016-12-27 22:25:26 +0900 (4e37cec)
+++ vendor/nginx-1.11.8/src/http/ngx_http_core_module.c    2016-12-27 23:47:36 +0900 (666d96f)
@@ -542,6 +542,13 @@ static ngx_command_t  ngx_http_core_commands[] = {
       offsetof(ngx_http_core_loc_conf_t, reset_timedout_connection),
       NULL },
 
+    { ngx_string("absolute_redirect"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+      ngx_conf_set_flag_slot,
+      NGX_HTTP_LOC_CONF_OFFSET,
+      offsetof(ngx_http_core_loc_conf_t, absolute_redirect),
+      NULL },
+
     { ngx_string("server_name_in_redirect"),
       NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
       ngx_conf_set_flag_slot,
@@ -976,10 +983,8 @@ ngx_http_core_find_config_phase(ngx_http_request_t *r,
             return NGX_OK;
         }
 
-        /*
-         * we do not need to set the r->headers_out.location->hash and
-         * r->headers_out.location->key fields
-         */
+        r->headers_out.location->hash = 1;
+        ngx_str_set(&r->headers_out.location->key, "Location");
 
         if (r->args.len == 0) {
             r->headers_out.location->value = clcf->name;
@@ -3563,6 +3568,7 @@ ngx_http_core_create_loc_conf(ngx_conf_t *cf)
     clcf->lingering_timeout = NGX_CONF_UNSET_MSEC;
     clcf->resolver_timeout = NGX_CONF_UNSET_MSEC;
     clcf->reset_timedout_connection = NGX_CONF_UNSET;
+    clcf->absolute_redirect = NGX_CONF_UNSET;
     clcf->server_name_in_redirect = NGX_CONF_UNSET;
     clcf->port_in_redirect = NGX_CONF_UNSET;
     clcf->msie_padding = NGX_CONF_UNSET;
@@ -3825,6 +3831,8 @@ ngx_http_core_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
 
     ngx_conf_merge_value(conf->reset_timedout_connection,
                               prev->reset_timedout_connection, 0);
+    ngx_conf_merge_value(conf->absolute_redirect,
+                              prev->absolute_redirect, 1);
     ngx_conf_merge_value(conf->server_name_in_redirect,
                               prev->server_name_in_redirect, 0);
     ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1);

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_core_module.h (+1 -0) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/ngx_http_core_module.h    2016-12-27 22:25:26 +0900 (ade9abb)
+++ vendor/nginx-1.11.8/src/http/ngx_http_core_module.h    2016-12-27 23:47:36 +0900 (237cc5c)
@@ -385,6 +385,7 @@ struct ngx_http_core_loc_conf_s {
     ngx_flag_t    tcp_nopush;              /* tcp_nopush */
     ngx_flag_t    tcp_nodelay;             /* tcp_nodelay */
     ngx_flag_t    reset_timedout_connection; /* reset_timedout_connection */
+    ngx_flag_t    absolute_redirect;       /* absolute_redirect */
     ngx_flag_t    server_name_in_redirect; /* server_name_in_redirect */
     ngx_flag_t    port_in_redirect;        /* port_in_redirect */
     ngx_flag_t    msie_padding;            /* msie_padding */

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_file_cache.c (+3 -3) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/ngx_http_file_cache.c    2016-12-27 22:25:26 +0900 (3c8ad7d)
+++ vendor/nginx-1.11.8/src/http/ngx_http_file_cache.c    2016-12-27 23:47:36 +0900 (a5a9300)
@@ -553,7 +553,7 @@ ngx_http_file_cache_read(ngx_http_request_t *r, ngx_http_cache_t *c)
         return NGX_DECLINED;
     }
 
-    if (h->crc32 != c->crc32 || h->header_start != c->header_start) {
+    if (h->crc32 != c->crc32 || (size_t) h->header_start != c->header_start) {
         ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0,
                       "cache file \"%s\" has md5 collision", c->file.name.data);
         return NGX_DECLINED;
@@ -1495,8 +1495,8 @@ ngx_http_file_cache_update_header(ngx_http_request_t *r)
     if (h.version != NGX_HTTP_CACHE_VERSION
         || h.last_modified != c->last_modified
         || h.crc32 != c->crc32
-        || h.header_start != c->header_start
-        || h.body_start != c->body_start)
+        || (size_t) h.header_start != c->header_start
+        || (size_t) h.body_start != c->body_start)
     {
         ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
                        "http file cache \"%s\" content changed",

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_header_filter_module.c (+2 -1) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/ngx_http_header_filter_module.c    2016-12-27 22:25:26 +0900 (f000b2e)
+++ vendor/nginx-1.11.8/src/http/ngx_http_header_filter_module.c    2016-12-27 23:47:36 +0900 (88c8a61)
@@ -309,7 +309,8 @@ ngx_http_header_filter(ngx_http_request_t *r)
 
     if (r->headers_out.location
         && r->headers_out.location->value.len
-        && r->headers_out.location->value.data[0] == '/')
+        && r->headers_out.location->value.data[0] == '/'
+        && clcf->absolute_redirect)
     {
         r->headers_out.location->hash = 0;
 

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_parse.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_postpone_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_request.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_request.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_request_body.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_script.c (+2 -2) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/ngx_http_script.c    2016-12-27 22:25:26 +0900 (c2b1658)
+++ vendor/nginx-1.11.8/src/http/ngx_http_script.c    2016-12-27 23:47:36 +0900 (c1a0b4c)
@@ -356,11 +356,11 @@ ngx_http_script_compile(ngx_http_script_compile_t *sc)
 
                 n = sc->source->data[i] - '0';
 
-                if (sc->captures_mask & (1 << n)) {
+                if (sc->captures_mask & ((ngx_uint_t) 1 << n)) {
                     sc->dup_capture = 1;
                 }
 
-                sc->captures_mask |= 1 << n;
+                sc->captures_mask |= (ngx_uint_t) 1 << n;
 
                 if (ngx_http_script_add_capture_code(sc, n) != NGX_OK) {
                     return NGX_ERROR;

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_script.h (+11 -11) 93%
===================================================================
--- vendor/nginx-1.11.6/src/http/ngx_http_script.h    2016-12-27 22:25:26 +0900 (46592ab)
+++ vendor/nginx-1.11.8/src/http/ngx_http_script.h    2016-12-27 23:47:36 +0900 (a5116d7)
@@ -121,16 +121,16 @@ typedef struct {
     uintptr_t                   status;
     uintptr_t                   next;
 
-    uintptr_t                   test:1;
-    uintptr_t                   negative_test:1;
-    uintptr_t                   uri:1;
-    uintptr_t                   args:1;
+    unsigned                    test:1;
+    unsigned                    negative_test:1;
+    unsigned                    uri:1;
+    unsigned                    args:1;
 
     /* add the r->args to the new arguments */
-    uintptr_t                   add_args:1;
+    unsigned                    add_args:1;
 
-    uintptr_t                   redirect:1;
-    uintptr_t                   break_cycle:1;
+    unsigned                    redirect:1;
+    unsigned                    break_cycle:1;
 
     ngx_str_t                   name;
 } ngx_http_script_regex_code_t;
@@ -139,13 +139,13 @@ typedef struct {
 typedef struct {
     ngx_http_script_code_pt     code;
 
-    uintptr_t                   uri:1;
-    uintptr_t                   args:1;
+    unsigned                    uri:1;
+    unsigned                    args:1;
 
     /* add the r->args to the new arguments */
-    uintptr_t                   add_args:1;
+    unsigned                    add_args:1;
 
-    uintptr_t                   redirect:1;
+    unsigned                    redirect:1;
 } ngx_http_script_regex_end_code_t;
 
 #endif

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_special_response.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_upstream.c (+2 -2) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/ngx_http_upstream.c    2016-12-27 22:25:26 +0900 (ed25f43)
+++ vendor/nginx-1.11.8/src/http/ngx_http_upstream.c    2016-12-27 23:47:36 +0900 (d0bcd29)
@@ -4927,8 +4927,8 @@ ngx_http_upstream_rewrite_location(ngx_http_request_t *r, ngx_table_elt_t *h,
     }
 
     /*
-     * we do not set r->headers_out.location here to avoid the handling
-     * the local redirects without a host name by ngx_http_header_filter()
+     * we do not set r->headers_out.location here to avoid handling
+     * relative redirects in ngx_http_header_filter()
      */
 
     return NGX_OK;

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_upstream.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_upstream_round_robin.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_upstream_round_robin.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_variables.c (+30 -6) 98%
===================================================================
--- vendor/nginx-1.11.6/src/http/ngx_http_variables.c    2016-12-27 22:25:26 +0900 (7e65b2e)
+++ vendor/nginx-1.11.8/src/http/ngx_http_variables.c    2016-12-27 23:47:36 +0900 (62006ba)
@@ -366,6 +366,9 @@ ngx_http_variable_value_t  ngx_http_variable_true_value =
     ngx_http_variable("1");
 
 
+static ngx_uint_t  ngx_http_variable_depth = 100;
+
+
 ngx_http_variable_t *
 ngx_http_add_variable(ngx_conf_t *cf, ngx_str_t *name, ngx_uint_t flags)
 {
@@ -517,9 +520,20 @@ ngx_http_get_indexed_variable(ngx_http_request_t *r, ngx_uint_t index)
 
     v = cmcf->variables.elts;
 
+    if (ngx_http_variable_depth == 0) {
+        ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+                      "cycle while evaluating variable \"%V\"",
+                      &v[index].name);
+        return NULL;
+    }
+
+    ngx_http_variable_depth--;
+
     if (v[index].get_handler(r, &r->variables[index], v[index].data)
         == NGX_OK)
     {
+        ngx_http_variable_depth++;
+
         if (v[index].flags & NGX_HTTP_VAR_NOCACHEABLE) {
             r->variables[index].no_cacheable = 1;
         }
@@ -527,6 +541,8 @@ ngx_http_get_indexed_variable(ngx_http_request_t *r, ngx_uint_t index)
         return &r->variables[index];
     }
 
+    ngx_http_variable_depth++;
+
     r->variables[index].valid = 0;
     r->variables[index].not_found = 1;
 
@@ -568,17 +584,25 @@ ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key)
     if (v) {
         if (v->flags & NGX_HTTP_VAR_INDEXED) {
             return ngx_http_get_flushed_variable(r, v->index);
+        }
 
-        } else {
+        if (ngx_http_variable_depth == 0) {
+            ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+                          "cycle while evaluating variable \"%V\"", name);
+            return NULL;
+        }
 
-            vv = ngx_palloc(r->pool, sizeof(ngx_http_variable_value_t));
+        ngx_http_variable_depth--;
 
-            if (vv && v->get_handler(r, vv, v->data) == NGX_OK) {
-                return vv;
-            }
+        vv = ngx_palloc(r->pool, sizeof(ngx_http_variable_value_t));
 
-            return NULL;
+        if (vv && v->get_handler(r, vv, v->data) == NGX_OK) {
+            ngx_http_variable_depth++;
+            return vv;
         }
+
+        ngx_http_variable_depth++;
+        return NULL;
     }
 
     vv = ngx_palloc(r->pool, sizeof(ngx_http_variable_value_t));

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_variables.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/ngx_http_write_filter_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.c (+7 -25) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/v2/ngx_http_v2.c    2016-12-27 22:25:26 +0900 (8301630)
+++ vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.c    2016-12-27 23:47:36 +0900 (f3050f1)
@@ -286,7 +286,6 @@ ngx_http_v2_init(ngx_event_t *rev)
                                             : ngx_http_v2_state_preface;
 
     ngx_queue_init(&h2c->waiting);
-    ngx_queue_init(&h2c->posted);
     ngx_queue_init(&h2c->dependencies);
     ngx_queue_init(&h2c->closed);
 
@@ -420,9 +419,7 @@ static void
 ngx_http_v2_write_handler(ngx_event_t *wev)
 {
     ngx_int_t                  rc;
-    ngx_queue_t               *q;
     ngx_connection_t          *c;
-    ngx_http_v2_stream_t      *stream;
     ngx_http_v2_connection_t  *h2c;
 
     c = wev->data;
@@ -457,26 +454,6 @@ ngx_http_v2_write_handler(ngx_event_t *wev)
         return;
     }
 
-    while (!ngx_queue_empty(&h2c->posted)) {
-        q = ngx_queue_head(&h2c->posted);
-
-        ngx_queue_remove(q);
-
-        stream = ngx_queue_data(q, ngx_http_v2_stream_t, queue);
-
-        stream->handled = 0;
-
-        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
-                       "run http2 stream %ui", stream->node->id);
-
-        wev = stream->request->connection->write;
-
-        wev->active = 0;
-        wev->ready = 1;
-
-        wev->handler(wev);
-    }
-
     h2c->blocked = 0;
 
     if (rc == NGX_AGAIN) {
@@ -2254,7 +2231,7 @@ ngx_http_v2_state_window_update(ngx_http_v2_connection_t *h2c, u_char *pos,
 
         stream = ngx_queue_data(q, ngx_http_v2_stream_t, queue);
 
-        stream->handled = 0;
+        stream->waiting = 0;
 
         wev = stream->request->connection->write;
 
@@ -3575,6 +3552,11 @@ ngx_http_v2_read_request_body(ngx_http_request_t *r,
         rb->buf = ngx_create_temp_buf(r->pool, (size_t) len);
 
     } else {
+        if (stream->preread) {
+            /* enforce writing preread buffer to file */
+            r->request_body_in_file_only = 1;
+        }
+
         rb->buf = ngx_calloc_buf(r->pool);
 
         if (rb->buf != NULL) {
@@ -4271,7 +4253,7 @@ ngx_http_v2_finalize_connection(ngx_http_v2_connection_t *h2c,
                 continue;
             }
 
-            stream->handled = 0;
+            stream->waiting = 0;
 
             r = stream->request;
             fc = r->connection;

  Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.h (+1 -2) 99%
===================================================================
--- vendor/nginx-1.11.6/src/http/v2/ngx_http_v2.h    2016-12-27 22:25:26 +0900 (63bbdad)
+++ vendor/nginx-1.11.8/src/http/v2/ngx_http_v2.h    2016-12-27 23:47:36 +0900 (cddfccd)
@@ -137,7 +137,6 @@ struct ngx_http_v2_connection_s {
 
     ngx_http_v2_out_frame_t         *last_out;
 
-    ngx_queue_t                      posted;
     ngx_queue_t                      dependencies;
     ngx_queue_t                      closed;
 
@@ -192,7 +191,7 @@ struct ngx_http_v2_stream_s {
 
     ngx_pool_t                      *pool;
 
-    unsigned                         handled:1;
+    unsigned                         waiting:1;
     unsigned                         blocked:1;
     unsigned                         exhausted:1;
     unsigned                         in_closed:1;

  Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_filter_module.c (+42 -12) 97%
===================================================================
--- vendor/nginx-1.11.6/src/http/v2/ngx_http_v2_filter_module.c    2016-12-27 22:25:26 +0900 (878020e)
+++ vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_filter_module.c    2016-12-27 23:47:36 +0900 (f2f0d1e)
@@ -263,7 +263,9 @@ ngx_http_v2_header_filter(ngx_http_request_t *r)
 
     if (r->headers_out.location && r->headers_out.location->value.len) {
 
-        if (r->headers_out.location->value.data[0] == '/') {
+        if (r->headers_out.location->value.data[0] == '/'
+            && clcf->absolute_redirect)
+        {
             if (clcf->server_name_in_redirect) {
                 cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
                 host = cscf->server_name;
@@ -1104,11 +1106,11 @@ ngx_http_v2_waiting_queue(ngx_http_v2_connection_t *h2c,
     ngx_queue_t           *q;
     ngx_http_v2_stream_t  *s;
 
-    if (stream->handled) {
+    if (stream->waiting) {
         return;
     }
 
-    stream->handled = 1;
+    stream->waiting = 1;
 
     for (q = ngx_queue_last(&h2c->waiting);
          q != ngx_queue_sentinel(&h2c->waiting);
@@ -1298,20 +1300,29 @@ static ngx_inline void
 ngx_http_v2_handle_stream(ngx_http_v2_connection_t *h2c,
     ngx_http_v2_stream_t *stream)
 {
+    ngx_event_t       *wev;
     ngx_connection_t  *fc;
 
-    if (stream->handled || stream->blocked) {
+    if (stream->waiting || stream->blocked) {
         return;
     }
 
     fc = stream->request->connection;
 
-    if (!fc->error && (stream->exhausted || fc->write->delayed)) {
+    if (!fc->error && stream->exhausted) {
+        return;
+    }
+
+    wev = fc->write;
+
+    wev->active = 0;
+    wev->ready = 1;
+
+    if (!fc->error && wev->delayed) {
         return;
     }
 
-    stream->handled = 1;
-    ngx_queue_insert_tail(&h2c->posted, &stream->queue);
+    ngx_post_event(wev, &ngx_posted_events);
 }
 
 
@@ -1321,11 +1332,13 @@ ngx_http_v2_filter_cleanup(void *data)
     ngx_http_v2_stream_t *stream = data;
 
     size_t                     window;
+    ngx_event_t               *wev;
+    ngx_queue_t               *q;
     ngx_http_v2_out_frame_t   *frame, **fn;
     ngx_http_v2_connection_t  *h2c;
 
-    if (stream->handled) {
-        stream->handled = 0;
+    if (stream->waiting) {
+        stream->waiting = 0;
         ngx_queue_remove(&stream->queue);
     }
 
@@ -1359,9 +1372,26 @@ ngx_http_v2_filter_cleanup(void *data)
         fn = &frame->next;
     }
 
-    if (h2c->send_window == 0 && window && !ngx_queue_empty(&h2c->waiting)) {
-        ngx_queue_add(&h2c->posted, &h2c->waiting);
-        ngx_queue_init(&h2c->waiting);
+    if (h2c->send_window == 0 && window) {
+
+        while (!ngx_queue_empty(&h2c->waiting)) {
+            q = ngx_queue_head(&h2c->waiting);
+
+            ngx_queue_remove(q);
+
+            stream = ngx_queue_data(q, ngx_http_v2_stream_t, queue);
+
+            stream->waiting = 0;
+
+            wev = stream->request->connection->write;
+
+            wev->active = 0;
+            wev->ready = 1;
+
+            if (!wev->delayed) {
+                ngx_post_event(wev, &ngx_posted_events);
+            }
+        }
     }
 
     h2c->send_window += window;

  Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_huff_decode.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_huff_encode.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/http/v2/ngx_http_v2_table.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_auth_http_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_core_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_handler.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_imap_handler.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_imap_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_imap_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_parse.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_handler.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_pop3_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_proxy_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_handler.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.c (+1 -1) 99%
===================================================================
--- vendor/nginx-1.11.6/src/mail/ngx_mail_smtp_module.c    2016-12-27 22:25:26 +0900 (f03bd90)
+++ vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.c    2016-12-27 23:47:36 +0900 (3b5a2d8)
@@ -280,7 +280,7 @@ ngx_mail_smtp_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
 
     p = ngx_cpymem(p, conf->capability.data, conf->capability.len);
 
-    p = ngx_cpymem(p, "250 STARTTLS" CRLF, sizeof("250 STARTTLS" CRLF) - 1);
+    ngx_memcpy(p, "250 STARTTLS" CRLF, sizeof("250 STARTTLS" CRLF) - 1);
 
     p = conf->starttls_capability.data
         + (last - conf->capability.data) + 3;

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_smtp_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_ssl_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/mail/ngx_mail_ssl_module.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/misc/ngx_cpp_test_module.cpp (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/misc/ngx_google_perftools_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_alloc.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_alloc.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_atomic.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_channel.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_channel.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_daemon.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_darwin.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_darwin_config.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_darwin_init.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_darwin_sendfile_chain.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_dlopen.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_dlopen.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_errno.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_errno.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_file_aio_read.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_files.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_files.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_freebsd.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_config.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_init.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_freebsd_sendfile_chain.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_amd64.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_ppc.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_sparc64.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_gcc_atomic_x86.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux_aio_read.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux_config.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux_init.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_linux_sendfile_chain.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_os.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_posix_config.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_posix_init.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_process.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_process.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_process_cycle.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_process_cycle.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_readv_chain.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_recv.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_send.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_setaffinity.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_setaffinity.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_setproctitle.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_setproctitle.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_shmem.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_shmem.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_socket.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_socket.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_solaris.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_solaris_config.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_solaris_init.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_solaris_sendfilev_chain.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_amd64.il (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_atomic_sparc64.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_sparc64.il (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_sunpro_x86.il (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_thread.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_thread_cond.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_thread_id.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_thread_mutex.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_time.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_time.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_udp_recv.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_udp_send.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_udp_sendmsg_chain.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_user.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_user.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/unix/ngx_writev_chain.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/nginx.ico (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/nginx.rc (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/nginx_icon16.xpm (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/nginx_icon32.xpm (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/nginx_icon48.xpm (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_alloc.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_alloc.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_atomic.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_dlopen.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_dlopen.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_errno.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_errno.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_event_log.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_files.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_files.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_os.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_process.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_process.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_process_cycle.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_process_cycle.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_service.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_shmem.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_shmem.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_socket.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_socket.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_stat.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_thread.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_thread.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_time.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_time.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_udp_wsarecv.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_user.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_user.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_win32_config.h (+20 -3) 92%
===================================================================
--- vendor/nginx-1.11.6/src/os/win32/ngx_win32_config.h    2016-12-27 22:25:26 +0900 (f5b5950)
+++ vendor/nginx-1.11.8/src/os/win32/ngx_win32_config.h    2016-12-27 23:47:36 +0900 (4824d05)
@@ -51,13 +51,14 @@
 
 /* GCC MinGW's stdio.h includes sys/types.h */
 #define _OFF_T_
+#define __have_typedef_off_t
 
 #endif
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
-#ifdef __MINGW64_VERSION_MAJOR
+#ifdef __GNUC__
 #include <stdint.h>
 #endif
 #include <ctype.h>
@@ -87,12 +88,21 @@ typedef long  time_t;
 /* 'type cast': from data pointer to function pointer */
 #pragma warning(disable:4055)
 
+/* 'function' : different 'const' qualifiers */
+#pragma warning(disable:4090)
+
 /* unreferenced formal parameter */
 #pragma warning(disable:4100)
 
 /* FD_SET() and FD_CLR(): conditional expression is constant */
 #pragma warning(disable:4127)
 
+/* conversion from 'type1' to 'type2', possible loss of data */
+#pragma warning(disable:4244)
+
+/* conversion from 'size_t' to 'type', possible loss of data */
+#pragma warning(disable:4267)
+
 /* array is too small to include a terminating null character */
 #pragma warning(disable:4295)
 
@@ -118,6 +128,9 @@ typedef long  time_t;
 /* unreferenced formal parameter */
 #pragma warn -8057
 
+/* suspicious pointer arithmetic */
+#pragma warn -8072
+
 #endif
 
 
@@ -151,7 +164,7 @@ typedef unsigned short int  uint16_t;
 typedef __int64             int64_t;
 typedef unsigned __int64    uint64_t;
 
-#if !defined(__WATCOMC__) && !defined(__MINGW64_VERSION_MAJOR)
+#if __BORLANDC__
 typedef int                 intptr_t;
 typedef u_int               uintptr_t;
 #endif
@@ -184,9 +197,13 @@ typedef unsigned int        ino_t;
 #endif
 
 
-#ifndef __MINGW64_VERSION_MAJOR
+#ifndef __GNUC__
+#ifdef _WIN64
+typedef __int64             ssize_t;
+#else
 typedef int                 ssize_t;
 #endif
+#endif
 
 
 typedef uint32_t            in_addr_t;

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_win32_init.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_wsarecv.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_wsarecv_chain.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_wsasend.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/os/win32/ngx_wsasend_chain.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_access_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_core_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_geo_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_geoip_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_handler.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_limit_conn_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_log_module.c (+77 -6) 95%
===================================================================
--- vendor/nginx-1.11.6/src/stream/ngx_stream_log_module.c    2016-12-27 22:25:26 +0900 (26e6d22)
+++ vendor/nginx-1.11.8/src/stream/ngx_stream_log_module.c    2016-12-27 23:47:36 +0900 (a4b67d0)
@@ -106,12 +106,16 @@ static void ngx_stream_log_flush(ngx_open_file_t *file, ngx_log_t *log);
 static void ngx_stream_log_flush_handler(ngx_event_t *ev);
 
 static ngx_int_t ngx_stream_log_variable_compile(ngx_conf_t *cf,
-    ngx_stream_log_op_t *op, ngx_str_t *value);
+    ngx_stream_log_op_t *op, ngx_str_t *value, ngx_uint_t json);
 static size_t ngx_stream_log_variable_getlen(ngx_stream_session_t *s,
     uintptr_t data);
 static u_char *ngx_stream_log_variable(ngx_stream_session_t *s, u_char *buf,
     ngx_stream_log_op_t *op);
 static uintptr_t ngx_stream_log_escape(u_char *dst, u_char *src, size_t size);
+static size_t ngx_stream_log_json_variable_getlen(ngx_stream_session_t *s,
+    uintptr_t data);
+static u_char *ngx_stream_log_json_variable(ngx_stream_session_t *s,
+    u_char *buf, ngx_stream_log_op_t *op);
 
 
 static void *ngx_stream_log_create_main_conf(ngx_conf_t *cf);
@@ -686,7 +690,7 @@ ngx_stream_log_copy_long(ngx_stream_session_t *s, u_char *buf,
 
 static ngx_int_t
 ngx_stream_log_variable_compile(ngx_conf_t *cf, ngx_stream_log_op_t *op,
-    ngx_str_t *value)
+    ngx_str_t *value, ngx_uint_t json)
 {
     ngx_int_t  index;
 
@@ -696,8 +700,16 @@ ngx_stream_log_variable_compile(ngx_conf_t *cf, ngx_stream_log_op_t *op,
     }
 
     op->len = 0;
-    op->getlen = ngx_stream_log_variable_getlen;
-    op->run = ngx_stream_log_variable;
+
+    if (json) {
+        op->getlen = ngx_stream_log_json_variable_getlen;
+        op->run = ngx_stream_log_json_variable;
+
+    } else {
+        op->getlen = ngx_stream_log_variable_getlen;
+        op->run = ngx_stream_log_variable;
+    }
+
     op->data = index;
 
     return NGX_OK;
@@ -806,6 +818,47 @@ ngx_stream_log_escape(u_char *dst, u_char *src, size_t size)
 }
 
 
+static size_t
+ngx_stream_log_json_variable_getlen(ngx_stream_session_t *s, uintptr_t data)
+{
+    uintptr_t                     len;
+    ngx_stream_variable_value_t  *value;
+
+    value = ngx_stream_get_indexed_variable(s, data);
+
+    if (value == NULL || value->not_found) {
+        return 0;
+    }
+
+    len = ngx_escape_json(NULL, value->data, value->len);
+
+    value->escape = len ? 1 : 0;
+
+    return value->len + len;
+}
+
+
+static u_char *
+ngx_stream_log_json_variable(ngx_stream_session_t *s, u_char *buf,
+    ngx_stream_log_op_t *op)
+{
+    ngx_stream_variable_value_t  *value;
+
+    value = ngx_stream_get_indexed_variable(s, op->data);
+
+    if (value == NULL || value->not_found) {
+        return buf;
+    }
+
+    if (value->escape == 0) {
+        return ngx_cpymem(buf, value->data, value->len);
+
+    } else {
+        return (u_char *) ngx_escape_json(buf, value->data, value->len);
+    }
+}
+
+
 static void *
 ngx_stream_log_create_main_conf(ngx_conf_t *cf)
 {
@@ -1220,11 +1273,27 @@ ngx_stream_log_compile_format(ngx_conf_t *cf, ngx_array_t *flushes,
     size_t                 i, len;
     ngx_str_t             *value, var;
     ngx_int_t             *flush;
-    ngx_uint_t             bracket;
+    ngx_uint_t             bracket, json;
     ngx_stream_log_op_t   *op;
 
+    json = 0;
     value = args->elts;
 
+    if (s < args->nelts && ngx_strncmp(value[s].data, "escape=", 7) == 0) {
+        data = value[s].data + 7;
+
+        if (ngx_strcmp(data, "json") == 0) {
+            json = 1;
+
+        } else if (ngx_strcmp(data, "default") != 0) {
+            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+                               "unknown log format escaping \"%s\"", data);
+            return NGX_CONF_ERROR;
+        }
+
+        s++;
+    }
+
     for ( /* void */ ; s < args->nelts; s++) {
 
         i = 0;
@@ -1289,7 +1358,9 @@ ngx_stream_log_compile_format(ngx_conf_t *cf, ngx_array_t *flushes,
                     goto invalid;
                 }
 
-                if (ngx_stream_log_variable_compile(cf, op, &var) != NGX_OK) {
+                if (ngx_stream_log_variable_compile(cf, op, &var, json)
+                    != NGX_OK)
+                {
                     return NGX_CONF_ERROR;
                 }
 

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_map_module.c (+16 -2) 97%
===================================================================
--- vendor/nginx-1.11.6/src/stream/ngx_stream_map_module.c    2016-12-27 22:25:26 +0900 (47a15be)
+++ vendor/nginx-1.11.8/src/stream/ngx_stream_map_module.c    2016-12-27 23:47:36 +0900 (ef06b2d)
@@ -26,7 +26,8 @@ typedef struct {
 
     ngx_stream_variable_value_t  *default_value;
     ngx_conf_t                   *cf;
-    ngx_uint_t                    hostnames;      /* unsigned  hostnames:1 */
+    unsigned                      hostnames:1;
+    unsigned                      no_cacheable:1;
 } ngx_stream_map_conf_ctx_t;
 
 
@@ -264,6 +265,7 @@ ngx_stream_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     ctx.default_value = NULL;
     ctx.cf = &save;
     ctx.hostnames = 0;
+    ctx.no_cacheable = 0;
 
     save = *cf;
     cf->pool = pool;
@@ -280,6 +282,10 @@ ngx_stream_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
         return rv;
     }
 
+    if (ctx.no_cacheable) {
+        var->flags |= NGX_STREAM_VAR_NOCACHEABLE;
+    }
+
     map->default_value = ctx.default_value ? ctx.default_value:
                                              &ngx_stream_variable_null_value;
 
@@ -392,8 +398,16 @@ ngx_stream_map(ngx_conf_t *cf, ngx_command_t *dummy, void *conf)
     {
         ctx->hostnames = 1;
         return NGX_CONF_OK;
+    }
+
+    if (cf->args->nelts == 1
+        && ngx_strcmp(value[0].data, "volatile") == 0)
+    {
+        ctx->no_cacheable = 1;
+        return NGX_CONF_OK;
+    }
 
-    } else if (cf->args->nelts != 2) {
+    if (cf->args->nelts != 2) {
         ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                            "invalid number of the map parameters");
         return NGX_CONF_ERROR;

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_proxy_module.c (+5 -0) 99%
===================================================================
--- vendor/nginx-1.11.6/src/stream/ngx_stream_proxy_module.c    2016-12-27 22:25:26 +0900 (c03b515)
+++ vendor/nginx-1.11.8/src/stream/ngx_stream_proxy_module.c    2016-12-27 23:47:36 +0900 (bfd78d5)
@@ -808,6 +808,11 @@ ngx_stream_proxy_init_upstream(ngx_stream_session_t *s)
 
     u->state->connect_time = ngx_current_msec - u->state->response_time;
 
+    if (u->peer.notify) {
+        u->peer.notify(&u->peer, u->peer.data,
+                       NGX_STREAM_UPSTREAM_NOTIFY_CONNECT);
+    }
+
     c->log->action = "proxying connection";
 
     if (u->upstream_buf.start == NULL) {

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_realip_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_return_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_script.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_script.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_split_clients_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.c (+157 -0) 75%
===================================================================
--- vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_module.c    2016-12-27 22:25:26 +0900 (d00718b)
+++ vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.c    2016-12-27 23:47:36 +0900 (fb653c5)
@@ -49,6 +49,15 @@ static ngx_conf_bitmask_t  ngx_stream_ssl_protocols[] = {
 };
 
 
+static ngx_conf_enum_t  ngx_stream_ssl_verify[] = {
+    { ngx_string("off"), 0 },
+    { ngx_string("on"), 1 },
+    { ngx_string("optional"), 2 },
+    { ngx_string("optional_no_ca"), 3 },
+    { ngx_null_string, 0 }
+};
+
+
 static ngx_command_t  ngx_stream_ssl_commands[] = {
 
     { ngx_string("ssl_handshake_timeout"),
@@ -107,6 +116,34 @@ static ngx_command_t  ngx_stream_ssl_commands[] = {
       offsetof(ngx_stream_ssl_conf_t, ciphers),
       NULL },
 
+    { ngx_string("ssl_verify_client"),
+      NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
+      ngx_conf_set_enum_slot,
+      NGX_STREAM_SRV_CONF_OFFSET,
+      offsetof(ngx_stream_ssl_conf_t, verify),
+      &ngx_stream_ssl_verify },
+
+    { ngx_string("ssl_verify_depth"),
+      NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
+      ngx_conf_set_num_slot,
+      NGX_STREAM_SRV_CONF_OFFSET,
+      offsetof(ngx_stream_ssl_conf_t, verify_depth),
+      NULL },
+
+    { ngx_string("ssl_client_certificate"),
+      NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
+      ngx_conf_set_str_slot,
+      NGX_STREAM_SRV_CONF_OFFSET,
+      offsetof(ngx_stream_ssl_conf_t, client_certificate),
+      NULL },
+
+    { ngx_string("ssl_trusted_certificate"),
+      NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
+      ngx_conf_set_str_slot,
+      NGX_STREAM_SRV_CONF_OFFSET,
+      offsetof(ngx_stream_ssl_conf_t, trusted_certificate),
+      NULL },
+
     { ngx_string("ssl_prefer_server_ciphers"),
       NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_FLAG,
       ngx_conf_set_flag_slot,
@@ -142,6 +179,13 @@ static ngx_command_t  ngx_stream_ssl_commands[] = {
       offsetof(ngx_stream_ssl_conf_t, session_timeout),
       NULL },
 
+    { ngx_string("ssl_crl"),
+      NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1,
+      ngx_conf_set_str_slot,
+      NGX_STREAM_SRV_CONF_OFFSET,
+      offsetof(ngx_stream_ssl_conf_t, crl),
+      NULL },
+
       ngx_null_command
 };
 
@@ -182,6 +226,12 @@ static ngx_stream_variable_t  ngx_stream_ssl_vars[] = {
     { ngx_string("ssl_cipher"), NULL, ngx_stream_ssl_static_variable,
       (uintptr_t) ngx_ssl_get_cipher_name, NGX_STREAM_VAR_CHANGEABLE, 0 },
 
+    { ngx_string("ssl_ciphers"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_ciphers, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_curves"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_curves, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
     { ngx_string("ssl_session_id"), NULL, ngx_stream_ssl_variable,
       (uintptr_t) ngx_ssl_get_session_id, NGX_STREAM_VAR_CHANGEABLE, 0 },
 
@@ -191,6 +241,37 @@ static ngx_stream_variable_t  ngx_stream_ssl_vars[] = {
     { ngx_string("ssl_server_name"), NULL, ngx_stream_ssl_variable,
       (uintptr_t) ngx_ssl_get_server_name, NGX_STREAM_VAR_CHANGEABLE, 0 },
 
+    { ngx_string("ssl_client_cert"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_certificate, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_raw_cert"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_raw_certificate,
+      NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_s_dn"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_subject_dn, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_i_dn"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_issuer_dn, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_serial"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_serial_number, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_fingerprint"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_fingerprint, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_verify"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_client_verify, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_v_start"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_client_v_start, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_v_end"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_client_v_end, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
+    { ngx_string("ssl_client_v_remain"), NULL, ngx_stream_ssl_variable,
+      (uintptr_t) ngx_ssl_get_client_v_remain, NGX_STREAM_VAR_CHANGEABLE, 0 },
+
     { ngx_null_string, NULL, NULL, 0, 0, 0 }
 };
 
@@ -201,6 +282,8 @@ static ngx_str_t ngx_stream_ssl_sess_id_ctx = ngx_string("STREAM");
 static ngx_int_t
 ngx_stream_ssl_handler(ngx_stream_session_t *s)
 {
+    long                    rc;
+    X509                   *cert;
     ngx_connection_t       *c;
     ngx_stream_ssl_conf_t  *sslcf;
 
@@ -221,6 +304,37 @@ ngx_stream_ssl_handler(ngx_stream_session_t *s)
         return ngx_stream_ssl_init_connection(&sslcf->ssl, c);
     }
 
+    if (sslcf->verify) {
+        rc = SSL_get_verify_result(c->ssl->connection);
+
+        if (rc != X509_V_OK
+            && (sslcf->verify != 3 || !ngx_ssl_verify_error_optional(rc)))
+        {
+            ngx_log_error(NGX_LOG_INFO, c->log, 0,
+                          "client SSL certificate verify error: (%l:%s)",
+                          rc, X509_verify_cert_error_string(rc));
+
+            ngx_ssl_remove_cached_session(sslcf->ssl.ctx,
+                                       (SSL_get0_session(c->ssl->connection)));
+            return NGX_ERROR;
+        }
+
+        if (sslcf->verify == 1) {
+            cert = SSL_get_peer_certificate(c->ssl->connection);
+
+            if (cert == NULL) {
+                ngx_log_error(NGX_LOG_INFO, c->log, 0,
+                              "client sent no required SSL certificate");
+
+                ngx_ssl_remove_cached_session(sslcf->ssl.ctx,
+                                       (SSL_get0_session(c->ssl->connection)));
+                return NGX_ERROR;
+            }
+
+            X509_free(cert);
+        }
+    }
+
     return NGX_OK;
 }
 
@@ -378,6 +492,9 @@ ngx_stream_ssl_create_conf(ngx_conf_t *cf)
      *     scf->protocols = 0;
      *     scf->dhparam = { 0, NULL };
      *     scf->ecdh_curve = { 0, NULL };
+     *     scf->client_certificate = { 0, NULL };
+     *     scf->trusted_certificate = { 0, NULL };
+     *     scf->crl = { 0, NULL };
      *     scf->ciphers = { 0, NULL };
      *     scf->shm_zone = NULL;
      */
@@ -387,6 +504,8 @@ ngx_stream_ssl_create_conf(ngx_conf_t *cf)
     scf->certificate_keys = NGX_CONF_UNSET_PTR;
     scf->passwords = NGX_CONF_UNSET_PTR;
     scf->prefer_server_ciphers = NGX_CONF_UNSET;
+    scf->verify = NGX_CONF_UNSET_UINT;
+    scf->verify_depth = NGX_CONF_UNSET_UINT;
     scf->builtin_session_cache = NGX_CONF_UNSET;
     scf->session_timeout = NGX_CONF_UNSET;
     scf->session_tickets = NGX_CONF_UNSET;
@@ -417,6 +536,9 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
                          (NGX_CONF_BITMASK_SET|NGX_SSL_TLSv1
                           |NGX_SSL_TLSv1_1|NGX_SSL_TLSv1_2));
 
+    ngx_conf_merge_uint_value(conf->verify, prev->verify, 0);
+    ngx_conf_merge_uint_value(conf->verify_depth, prev->verify_depth, 1);
+
     ngx_conf_merge_ptr_value(conf->certificates, prev->certificates, NULL);
     ngx_conf_merge_ptr_value(conf->certificate_keys, prev->certificate_keys,
                          NULL);
@@ -425,6 +547,12 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
 
     ngx_conf_merge_str_value(conf->dhparam, prev->dhparam, "");
 
+    ngx_conf_merge_str_value(conf->client_certificate, prev->client_certificate,
+                         "");
+    ngx_conf_merge_str_value(conf->trusted_certificate,
+                         prev->trusted_certificate, "");
+    ngx_conf_merge_str_value(conf->crl, prev->crl, "");
+
     ngx_conf_merge_str_value(conf->ecdh_curve, prev->ecdh_curve,
                          NGX_DEFAULT_ECDH_CURVE);
 
@@ -474,6 +602,35 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
         return NGX_CONF_ERROR;
     }
 
+    if (conf->verify) {
+
+        if (conf->client_certificate.len == 0 && conf->verify != 3) {
+            ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
+                          "no ssl_client_certificate for ssl_client_verify");
+            return NGX_CONF_ERROR;
+        }
+
+        if (ngx_ssl_client_certificate(cf, &conf->ssl,
+                                       &conf->client_certificate,
+                                       conf->verify_depth)
+            != NGX_OK)
+        {
+            return NGX_CONF_ERROR;
+        }
+
+        if (ngx_ssl_trusted_certificate(cf, &conf->ssl,
+                                        &conf->trusted_certificate,
+                                        conf->verify_depth)
+            != NGX_OK)
+        {
+            return NGX_CONF_ERROR;
+        }
+
+        if (ngx_ssl_crl(cf, &conf->ssl, &conf->crl) != NGX_OK) {
+            return NGX_CONF_ERROR;
+        }
+    }
+
     if (ngx_ssl_dhparam(cf, &conf->ssl, &conf->dhparam) != NGX_OK) {
         return NGX_CONF_ERROR;
     }

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.h (+6 -0) 83%
===================================================================
--- vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_module.h    2016-12-27 22:25:26 +0900 (9b1c41a)
+++ vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_module.h    2016-12-27 23:47:36 +0900 (65f5d45)
@@ -23,6 +23,9 @@ typedef struct {
 
     ngx_uint_t       protocols;
 
+    ngx_uint_t       verify;
+    ngx_uint_t       verify_depth;
+
     ssize_t          builtin_session_cache;
 
     time_t           session_timeout;
@@ -32,6 +35,9 @@ typedef struct {
 
     ngx_str_t        dhparam;
     ngx_str_t        ecdh_curve;
+    ngx_str_t        client_certificate;
+    ngx_str_t        trusted_certificate;
+    ngx_str_t        crl;
 
     ngx_str_t        ciphers;
 

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_preread_module.c (+1 -1) 99%
===================================================================
--- vendor/nginx-1.11.6/src/stream/ngx_stream_ssl_preread_module.c    2016-12-27 22:25:26 +0900 (e26c518)
+++ vendor/nginx-1.11.8/src/stream/ngx_stream_ssl_preread_module.c    2016-12-27 23:47:36 +0900 (2040b4f)
@@ -142,7 +142,7 @@ ngx_stream_ssl_preread_handler(ngx_stream_session_t *s)
             return NGX_DECLINED;
         }
 
-        if (p[1] != 3 || p[2] == 0) {
+        if (p[1] != 3) {
             ngx_log_debug0(NGX_LOG_DEBUG_STREAM, ctx->log, 0,
                            "ssl preread: unsupported SSL version");
             return NGX_DECLINED;

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.h (+3 -0) 98%
===================================================================
--- vendor/nginx-1.11.6/src/stream/ngx_stream_upstream.h    2016-12-27 22:25:26 +0900 (ec75768)
+++ vendor/nginx-1.11.8/src/stream/ngx_stream_upstream.h    2016-12-27 23:47:36 +0900 (90076e0)
@@ -24,6 +24,9 @@
 #define NGX_STREAM_UPSTREAM_MAX_CONNS     0x0100
 
 
+#define NGX_STREAM_UPSTREAM_NOTIFY_CONNECT     0x1
+
+
 typedef struct {
     ngx_array_t                        upstreams;
                                            /* ngx_stream_upstream_srv_conf_t */

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_hash_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_least_conn_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.c (+29 -0) 96%
===================================================================
--- vendor/nginx-1.11.6/src/stream/ngx_stream_upstream_round_robin.c    2016-12-27 22:25:26 +0900 (db620ef)
+++ vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.c    2016-12-27 23:47:36 +0900 (526de3a)
@@ -16,6 +16,8 @@
 
 static ngx_stream_upstream_rr_peer_t *ngx_stream_upstream_get_peer(
     ngx_stream_upstream_rr_peer_data_t *rrp);
+static void ngx_stream_upstream_notify_round_robin_peer(
+    ngx_peer_connection_t *pc, void *data, ngx_uint_t state);
 
 #if (NGX_STREAM_SSL)
 
@@ -288,6 +290,7 @@ ngx_stream_upstream_init_round_robin_peer(ngx_stream_session_t *s,
 
     s->upstream->peer.get = ngx_stream_upstream_get_round_robin_peer;
     s->upstream->peer.free = ngx_stream_upstream_free_round_robin_peer;
+    s->upstream->peer.notify = ngx_stream_upstream_notify_round_robin_peer;
     s->upstream->peer.tries = ngx_stream_upstream_tries(rrp->peers);
 #if (NGX_STREAM_SSL)
     s->upstream->peer.set_session =
@@ -659,6 +662,32 @@ ngx_stream_upstream_free_round_robin_peer(ngx_peer_connection_t *pc, void *data,
 }
 
 
+static void
+ngx_stream_upstream_notify_round_robin_peer(ngx_peer_connection_t *pc,
+    void *data, ngx_uint_t type)
+{
+    ngx_stream_upstream_rr_peer_data_t  *rrp = data;
+
+    ngx_stream_upstream_rr_peer_t  *peer;
+
+    peer = rrp->current;
+
+    if (type == NGX_STREAM_UPSTREAM_NOTIFY_CONNECT
+        && pc->connection->type == SOCK_STREAM)
+    {
+        ngx_stream_upstream_rr_peers_rlock(rrp->peers);
+        ngx_stream_upstream_rr_peer_lock(rrp->peers, peer);
+
+        if (peer->accessed < peer->checked) {
+            peer->fails = 0;
+        }
+
+        ngx_stream_upstream_rr_peer_unlock(rrp->peers, peer);
+        ngx_stream_upstream_rr_peers_unlock(rrp->peers);
+    }
+}
+
+
 #if (NGX_STREAM_SSL)
 
 static ngx_int_t

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_round_robin.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_upstream_zone_module.c (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_variables.c (+31 -7) 96%
===================================================================
--- vendor/nginx-1.11.6/src/stream/ngx_stream_variables.c    2016-12-27 22:25:26 +0900 (aa5361d)
+++ vendor/nginx-1.11.8/src/stream/ngx_stream_variables.c    2016-12-27 23:47:36 +0900 (9dc93ee)
@@ -119,6 +119,9 @@ ngx_stream_variable_value_t  ngx_stream_variable_true_value =
     ngx_stream_variable("1");
 
 
+static ngx_uint_t  ngx_stream_variable_depth = 100;
+
+
 ngx_stream_variable_t *
 ngx_stream_add_variable(ngx_conf_t *cf, ngx_str_t *name, ngx_uint_t flags)
 {
@@ -270,9 +273,20 @@ ngx_stream_get_indexed_variable(ngx_stream_session_t *s, ngx_uint_t index)
 
     v = cmcf->variables.elts;
 
+    if (ngx_stream_variable_depth == 0) {
+        ngx_log_error(NGX_LOG_ERR, s->connection->log, 0,
+                      "cycle while evaluating variable \"%V\"",
+                      &v[index].name);
+        return NULL;
+    }
+
+    ngx_stream_variable_depth--;
+
     if (v[index].get_handler(s, &s->variables[index], v[index].data)
         == NGX_OK)
     {
+        ngx_stream_variable_depth++;
+
         if (v[index].flags & NGX_STREAM_VAR_NOCACHEABLE) {
             s->variables[index].no_cacheable = 1;
         }
@@ -280,6 +294,8 @@ ngx_stream_get_indexed_variable(ngx_stream_session_t *s, ngx_uint_t index)
         return &s->variables[index];
     }
 
+    ngx_stream_variable_depth++;
+
     s->variables[index].valid = 0;
     s->variables[index].not_found = 1;
 
@@ -322,18 +338,26 @@ ngx_stream_get_variable(ngx_stream_session_t *s, ngx_str_t *name,
     if (v) {
         if (v->flags & NGX_STREAM_VAR_INDEXED) {
             return ngx_stream_get_flushed_variable(s, v->index);
+        }
 
-        } else {
+        if (ngx_stream_variable_depth == 0) {
+            ngx_log_error(NGX_LOG_ERR, s->connection->log, 0,
+                          "cycle while evaluating variable \"%V\"", name);
+            return NULL;
+        }
 
-            vv = ngx_palloc(s->connection->pool,
-                            sizeof(ngx_stream_variable_value_t));
+        ngx_stream_variable_depth--;
 
-            if (vv && v->get_handler(s, vv, v->data) == NGX_OK) {
-                return vv;
-            }
+        vv = ngx_palloc(s->connection->pool,
+                        sizeof(ngx_stream_variable_value_t));
 
-            return NULL;
+        if (vv && v->get_handler(s, vv, v->data) == NGX_OK) {
+            ngx_stream_variable_depth++;
+            return vv;
         }
+
+        ngx_stream_variable_depth++;
+        return NULL;
     }
 
     vv = ngx_palloc(s->connection->pool, sizeof(ngx_stream_variable_value_t));

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_variables.h (+0 -0) 100%
===================================================================

  Renamed: vendor/nginx-1.11.8/src/stream/ngx_stream_write_filter_module.c (+0 -0) 100%
===================================================================




More information about the Groonga-commit mailing list
Back to archive index