Copy disabled (too large)
Download .txt
Showing preview only (16,047K chars total). Download the full file to get everything.
Repository: alibaba/tengine
Branch: master
Commit: c72279105721
Files: 1664
Total size: 16.1 MB
Directory structure:
gitextract_yjuswt18/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── feature_request.md
│ │ └── question-about-tengine.md
│ └── workflows/
│ ├── ci-arm64.yml
│ ├── ci.yml
│ ├── test-nginx-core.yml
│ └── test-ntls.yml
├── .gitignore
├── AUTHORS.te
├── CHANGES
├── CHANGES.cn
├── CHANGES.te
├── LICENSE
├── README.markdown
├── THANKS.te
├── auto/
│ ├── cc/
│ │ ├── acc
│ │ ├── bcc
│ │ ├── ccc
│ │ ├── clang
│ │ ├── conf
│ │ ├── gcc
│ │ ├── icc
│ │ ├── msvc
│ │ ├── name
│ │ ├── owc
│ │ └── sunc
│ ├── configure
│ ├── define
│ ├── endianness
│ ├── feature
│ ├── have
│ ├── have_headers
│ ├── headers
│ ├── include
│ ├── init
│ ├── install
│ ├── lib/
│ │ ├── conf
│ │ ├── geoip/
│ │ │ └── conf
│ │ ├── google-perftools/
│ │ │ └── conf
│ │ ├── jemalloc/
│ │ │ ├── conf
│ │ │ └── make
│ │ ├── libatomic/
│ │ │ ├── conf
│ │ │ └── make
│ │ ├── libgd/
│ │ │ └── conf
│ │ ├── libxslt/
│ │ │ └── conf
│ │ ├── make
│ │ ├── openssl/
│ │ │ ├── conf
│ │ │ ├── make
│ │ │ ├── makefile.bcc
│ │ │ └── makefile.msvc
│ │ ├── pcre/
│ │ │ ├── conf
│ │ │ ├── make
│ │ │ ├── makefile.bcc
│ │ │ ├── makefile.msvc
│ │ │ └── makefile.owc
│ │ ├── perl/
│ │ │ ├── conf
│ │ │ └── make
│ │ └── zlib/
│ │ ├── conf
│ │ ├── make
│ │ ├── makefile.bcc
│ │ ├── makefile.msvc
│ │ └── makefile.owc
│ ├── make
│ ├── module
│ ├── modules
│ ├── nohave
│ ├── options
│ ├── os/
│ │ ├── conf
│ │ ├── darwin
│ │ ├── freebsd
│ │ ├── linux
│ │ ├── solaris
│ │ └── win32
│ ├── sources
│ ├── stubs
│ ├── summary
│ ├── threads
│ ├── types/
│ │ ├── sizeof
│ │ ├── typedef
│ │ ├── uintptr_t
│ │ └── value
│ └── unix
├── conf/
│ ├── browsers
│ ├── fastcgi.conf
│ ├── fastcgi_params
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types
│ ├── nginx.conf
│ ├── scgi_params
│ ├── uwsgi_params
│ └── win-utf
├── configure
├── contrib/
│ ├── README
│ ├── dso.in
│ ├── geo2nginx.pl
│ ├── stylechecker.py
│ ├── unicode2nginx/
│ │ ├── koi-utf
│ │ ├── unicode-to-nginx.pl
│ │ └── win-utf
│ └── vim/
│ ├── ftdetect/
│ │ └── nginx.vim
│ ├── ftplugin/
│ │ └── nginx.vim
│ ├── indent/
│ │ └── nginx.vim
│ └── syntax/
│ └── nginx.vim
├── docs/
│ ├── core.md
│ ├── core_cn.md
│ └── modules/
│ ├── TFS_RESTful_API.md
│ ├── TFS_RESTful_API_cn.md
│ ├── ngx_backtrace_module.md
│ ├── ngx_debug_pool.md
│ ├── ngx_debug_pool_cn.md
│ ├── ngx_dso_module.md
│ ├── ngx_dso_module_cn.md
│ ├── ngx_http_concat_cn.md
│ ├── ngx_http_core_module.md
│ ├── ngx_http_core_module_cn.md
│ ├── ngx_http_dubbo_module.md
│ ├── ngx_http_dubbo_module_cn.md
│ ├── ngx_http_limit_req_module.md
│ ├── ngx_http_proxy_connect_module.md
│ ├── ngx_http_proxy_connect_module_cn.md
│ ├── ngx_http_reqstat_module.md
│ ├── ngx_http_reqstat_module_cn.md
│ ├── ngx_http_spdy_module.md
│ ├── ngx_http_spdy_module_cn.md
│ ├── ngx_http_ssl_asynchronous_mode.md
│ ├── ngx_http_ssl_asynchronous_mode_cn.md
│ ├── ngx_http_sysguard.md
│ ├── ngx_http_sysguard_cn.md
│ ├── ngx_http_tfs_module.md
│ ├── ngx_http_tfs_module_cn.md
│ ├── ngx_http_trim_filter_module.md
│ ├── ngx_http_trim_filter_module_cn.md
│ ├── ngx_http_upstream_check_module.md
│ ├── ngx_http_upstream_check_module_cn.md
│ ├── ngx_http_upstream_consistent_hash_module.md
│ ├── ngx_http_upstream_consistent_hash_module_cn.md
│ ├── ngx_http_upstream_dynamic.md
│ ├── ngx_http_upstream_dynamic_cn.md
│ ├── ngx_http_upstream_dyups_module.md
│ ├── ngx_http_upstream_iwrr_module.md
│ ├── ngx_http_upstream_iwrr_module_cn.md
│ ├── ngx_http_upstream_session_sticky_module.md
│ ├── ngx_http_upstream_session_sticky_module_cn.md
│ ├── ngx_http_upstream_vnswrr_module.md
│ ├── ngx_http_upstream_vnswrr_module_cn.md
│ ├── ngx_http_user_agent.md
│ ├── ngx_limit_upstream.md
│ ├── ngx_limit_upstream_cn.md
│ ├── ngx_log_pipe.md
│ ├── ngx_log_pipe_cn.md
│ ├── ngx_procs_module.md
│ └── ngx_procs_module_cn.md
├── html/
│ ├── 50x.html
│ └── index.html
├── man/
│ └── nginx.8
├── modules/
│ ├── mod_common/
│ │ ├── config
│ │ ├── ngx_comm_encrypt.c
│ │ ├── ngx_comm_encrypt.h
│ │ ├── ngx_comm_serialize.c
│ │ ├── ngx_comm_serialize.h
│ │ ├── ngx_comm_shm.c
│ │ ├── ngx_comm_shm.h
│ │ ├── ngx_comm_string.c
│ │ └── ngx_comm_string.h
│ ├── mod_config/
│ │ └── config
│ ├── mod_dubbo/
│ │ ├── README.md
│ │ ├── config
│ │ ├── hessian2/
│ │ │ ├── hessian2_ext.cc
│ │ │ ├── hessian2_ext.h
│ │ │ ├── hessian2_input.cc
│ │ │ ├── hessian2_input.h
│ │ │ ├── hessian2_output.cc
│ │ │ └── hessian2_output.h
│ │ ├── ngx_dubbo.c
│ │ ├── ngx_dubbo.h
│ │ ├── ngx_dubbo_util.cpp
│ │ ├── ngx_http_dubbo_module.c
│ │ ├── ngx_http_dubbo_module.h
│ │ └── utils/
│ │ ├── exceptions.h
│ │ ├── objects.cc
│ │ ├── objects.h
│ │ ├── utils.cc
│ │ └── utils.h
│ ├── mod_strategy/
│ │ ├── config
│ │ ├── ngx_http_strategy_module.c
│ │ ├── ngx_proc_strategy_module.c
│ │ └── ngx_proc_strategy_module.h
│ ├── mod_xudp/
│ │ ├── config
│ │ ├── ngx_xudp.c
│ │ ├── ngx_xudp.h
│ │ ├── ngx_xudp_inc.h
│ │ ├── ngx_xudp_internal.h
│ │ ├── ngx_xudp_module.c
│ │ ├── ngx_xudp_module.h
│ │ └── xquic-xdp/
│ │ ├── dispatch_xquic.c
│ │ ├── readme.md
│ │ ├── test.c
│ │ └── xquic_xdp.h
│ ├── ngx_backtrace_module/
│ │ ├── config
│ │ └── ngx_backtrace_module.c
│ ├── ngx_debug_conn/
│ │ ├── README.cn
│ │ ├── README.md
│ │ ├── config
│ │ ├── ngx_http_debug_conn_module.c
│ │ └── t/
│ │ └── test.t
│ ├── ngx_debug_pool/
│ │ ├── config
│ │ ├── debug_pool.gdb
│ │ ├── ngx_http_debug_pool_module.c
│ │ ├── ngx_palloc.c
│ │ ├── ngx_palloc.h
│ │ └── t/
│ │ └── test.t
│ ├── ngx_debug_timer/
│ │ ├── README.cn
│ │ ├── README.md
│ │ ├── config
│ │ ├── ngx_http_debug_timer_module.c
│ │ └── t/
│ │ └── test.t
│ ├── ngx_http_concat_module/
│ │ ├── config
│ │ └── ngx_http_concat_module.c
│ ├── ngx_http_footer_filter_module/
│ │ ├── config
│ │ └── ngx_http_footer_filter_module.c
│ ├── ngx_http_lua_module/
│ │ ├── .mergify.yml
│ │ ├── .travis.yml
│ │ ├── README.markdown
│ │ ├── config
│ │ ├── doc/
│ │ │ └── HttpLuaModule.wiki
│ │ ├── dtrace/
│ │ │ └── ngx_lua_provider.d
│ │ ├── misc/
│ │ │ └── recv-until-pm/
│ │ │ ├── lib/
│ │ │ │ └── RecvUntil.pm
│ │ │ └── t/
│ │ │ └── sanity.t
│ │ ├── src/
│ │ │ ├── api/
│ │ │ │ └── ngx_http_lua_api.h
│ │ │ ├── ddebug.h
│ │ │ ├── ngx_http_lua_accessby.c
│ │ │ ├── ngx_http_lua_accessby.h
│ │ │ ├── ngx_http_lua_api.c
│ │ │ ├── ngx_http_lua_args.c
│ │ │ ├── ngx_http_lua_args.h
│ │ │ ├── ngx_http_lua_balancer.c
│ │ │ ├── ngx_http_lua_balancer.h
│ │ │ ├── ngx_http_lua_bodyfilterby.c
│ │ │ ├── ngx_http_lua_bodyfilterby.h
│ │ │ ├── ngx_http_lua_cache.c
│ │ │ ├── ngx_http_lua_cache.h
│ │ │ ├── ngx_http_lua_capturefilter.c
│ │ │ ├── ngx_http_lua_capturefilter.h
│ │ │ ├── ngx_http_lua_clfactory.c
│ │ │ ├── ngx_http_lua_clfactory.h
│ │ │ ├── ngx_http_lua_common.h
│ │ │ ├── ngx_http_lua_config.c
│ │ │ ├── ngx_http_lua_config.h
│ │ │ ├── ngx_http_lua_consts.c
│ │ │ ├── ngx_http_lua_consts.h
│ │ │ ├── ngx_http_lua_contentby.c
│ │ │ ├── ngx_http_lua_contentby.h
│ │ │ ├── ngx_http_lua_control.c
│ │ │ ├── ngx_http_lua_control.h
│ │ │ ├── ngx_http_lua_coroutine.c
│ │ │ ├── ngx_http_lua_coroutine.h
│ │ │ ├── ngx_http_lua_ctx.c
│ │ │ ├── ngx_http_lua_ctx.h
│ │ │ ├── ngx_http_lua_directive.c
│ │ │ ├── ngx_http_lua_directive.h
│ │ │ ├── ngx_http_lua_exception.c
│ │ │ ├── ngx_http_lua_exception.h
│ │ │ ├── ngx_http_lua_exitworkerby.c
│ │ │ ├── ngx_http_lua_exitworkerby.h
│ │ │ ├── ngx_http_lua_headerfilterby.c
│ │ │ ├── ngx_http_lua_headerfilterby.h
│ │ │ ├── ngx_http_lua_headers.c
│ │ │ ├── ngx_http_lua_headers.h
│ │ │ ├── ngx_http_lua_headers_in.c
│ │ │ ├── ngx_http_lua_headers_in.h
│ │ │ ├── ngx_http_lua_headers_out.c
│ │ │ ├── ngx_http_lua_headers_out.h
│ │ │ ├── ngx_http_lua_initby.c
│ │ │ ├── ngx_http_lua_initby.h
│ │ │ ├── ngx_http_lua_initworkerby.c
│ │ │ ├── ngx_http_lua_initworkerby.h
│ │ │ ├── ngx_http_lua_input_filters.c
│ │ │ ├── ngx_http_lua_input_filters.h
│ │ │ ├── ngx_http_lua_lex.c
│ │ │ ├── ngx_http_lua_lex.h
│ │ │ ├── ngx_http_lua_log.c
│ │ │ ├── ngx_http_lua_log.h
│ │ │ ├── ngx_http_lua_log_ringbuf.c
│ │ │ ├── ngx_http_lua_log_ringbuf.h
│ │ │ ├── ngx_http_lua_logby.c
│ │ │ ├── ngx_http_lua_logby.h
│ │ │ ├── ngx_http_lua_misc.c
│ │ │ ├── ngx_http_lua_misc.h
│ │ │ ├── ngx_http_lua_module.c
│ │ │ ├── ngx_http_lua_ndk.c
│ │ │ ├── ngx_http_lua_ndk.h
│ │ │ ├── ngx_http_lua_output.c
│ │ │ ├── ngx_http_lua_output.h
│ │ │ ├── ngx_http_lua_pcrefix.c
│ │ │ ├── ngx_http_lua_pcrefix.h
│ │ │ ├── ngx_http_lua_phase.c
│ │ │ ├── ngx_http_lua_phase.h
│ │ │ ├── ngx_http_lua_pipe.c
│ │ │ ├── ngx_http_lua_pipe.h
│ │ │ ├── ngx_http_lua_probe.h
│ │ │ ├── ngx_http_lua_regex.c
│ │ │ ├── ngx_http_lua_regex.h
│ │ │ ├── ngx_http_lua_req_body.c
│ │ │ ├── ngx_http_lua_req_body.h
│ │ │ ├── ngx_http_lua_req_method.c
│ │ │ ├── ngx_http_lua_req_method.h
│ │ │ ├── ngx_http_lua_rewriteby.c
│ │ │ ├── ngx_http_lua_rewriteby.h
│ │ │ ├── ngx_http_lua_script.c
│ │ │ ├── ngx_http_lua_script.h
│ │ │ ├── ngx_http_lua_semaphore.c
│ │ │ ├── ngx_http_lua_semaphore.h
│ │ │ ├── ngx_http_lua_server_rewriteby.c
│ │ │ ├── ngx_http_lua_server_rewriteby.h
│ │ │ ├── ngx_http_lua_setby.c
│ │ │ ├── ngx_http_lua_setby.h
│ │ │ ├── ngx_http_lua_shdict.c
│ │ │ ├── ngx_http_lua_shdict.h
│ │ │ ├── ngx_http_lua_sleep.c
│ │ │ ├── ngx_http_lua_sleep.h
│ │ │ ├── ngx_http_lua_socket_tcp.c
│ │ │ ├── ngx_http_lua_socket_tcp.h
│ │ │ ├── ngx_http_lua_socket_udp.c
│ │ │ ├── ngx_http_lua_socket_udp.h
│ │ │ ├── ngx_http_lua_ssl.c
│ │ │ ├── ngx_http_lua_ssl.h
│ │ │ ├── ngx_http_lua_ssl_certby.c
│ │ │ ├── ngx_http_lua_ssl_certby.h
│ │ │ ├── ngx_http_lua_ssl_client_helloby.c
│ │ │ ├── ngx_http_lua_ssl_client_helloby.h
│ │ │ ├── ngx_http_lua_ssl_ocsp.c
│ │ │ ├── ngx_http_lua_ssl_session_fetchby.c
│ │ │ ├── ngx_http_lua_ssl_session_fetchby.h
│ │ │ ├── ngx_http_lua_ssl_session_storeby.c
│ │ │ ├── ngx_http_lua_ssl_session_storeby.h
│ │ │ ├── ngx_http_lua_string.c
│ │ │ ├── ngx_http_lua_string.h
│ │ │ ├── ngx_http_lua_subrequest.c
│ │ │ ├── ngx_http_lua_subrequest.h
│ │ │ ├── ngx_http_lua_time.c
│ │ │ ├── ngx_http_lua_time.h
│ │ │ ├── ngx_http_lua_timer.c
│ │ │ ├── ngx_http_lua_timer.h
│ │ │ ├── ngx_http_lua_uri.c
│ │ │ ├── ngx_http_lua_uri.h
│ │ │ ├── ngx_http_lua_uthread.c
│ │ │ ├── ngx_http_lua_uthread.h
│ │ │ ├── ngx_http_lua_util.c
│ │ │ ├── ngx_http_lua_util.h
│ │ │ ├── ngx_http_lua_variable.c
│ │ │ ├── ngx_http_lua_variable.h
│ │ │ ├── ngx_http_lua_worker.c
│ │ │ ├── ngx_http_lua_worker.h
│ │ │ ├── ngx_http_lua_worker_thread.c
│ │ │ └── ngx_http_lua_worker_thread.h
│ │ ├── t/
│ │ │ ├── .gitignore
│ │ │ ├── 000--init.t
│ │ │ ├── 000-sanity.t
│ │ │ ├── 001-set.t
│ │ │ ├── 002-content.t
│ │ │ ├── 003-errors.t
│ │ │ ├── 004-require.t
│ │ │ ├── 005-exit.t
│ │ │ ├── 006-escape.t
│ │ │ ├── 007-md5.t
│ │ │ ├── 008-today.t
│ │ │ ├── 009-log.t
│ │ │ ├── 010-request_body.t
│ │ │ ├── 011-md5_bin.t
│ │ │ ├── 012-now.t
│ │ │ ├── 013-base64.t
│ │ │ ├── 014-bugs.t
│ │ │ ├── 015-status.t
│ │ │ ├── 016-resp-header.t
│ │ │ ├── 017-exec.t
│ │ │ ├── 018-ndk.t
│ │ │ ├── 019-const.t
│ │ │ ├── 020-subrequest.t
│ │ │ ├── 021-cookie-time.t
│ │ │ ├── 022-redirect.t
│ │ │ ├── 023-rewrite/
│ │ │ │ ├── client-abort.t
│ │ │ │ ├── exec.t
│ │ │ │ ├── exit.t
│ │ │ │ ├── mixed.t
│ │ │ │ ├── multi-capture.t
│ │ │ │ ├── on-abort.t
│ │ │ │ ├── redirect.t
│ │ │ │ ├── req-body.t
│ │ │ │ ├── req-socket.t
│ │ │ │ ├── request_body.t
│ │ │ │ ├── sanity.t
│ │ │ │ ├── sleep.t
│ │ │ │ ├── socket-keepalive.t
│ │ │ │ ├── subrequest.t
│ │ │ │ ├── tcp-socket-timeout.t
│ │ │ │ ├── tcp-socket.t
│ │ │ │ ├── unix-socket.t
│ │ │ │ ├── uthread-exec.t
│ │ │ │ ├── uthread-exit.t
│ │ │ │ ├── uthread-redirect.t
│ │ │ │ └── uthread-spawn.t
│ │ │ ├── 024-access/
│ │ │ │ ├── auth.t
│ │ │ │ ├── client-abort.t
│ │ │ │ ├── exec.t
│ │ │ │ ├── exit.t
│ │ │ │ ├── mixed.t
│ │ │ │ ├── multi-capture.t
│ │ │ │ ├── on-abort.t
│ │ │ │ ├── redirect.t
│ │ │ │ ├── req-body.t
│ │ │ │ ├── request_body.t
│ │ │ │ ├── sanity.t
│ │ │ │ ├── satisfy.t
│ │ │ │ ├── sleep.t
│ │ │ │ ├── subrequest.t
│ │ │ │ ├── uthread-exec.t
│ │ │ │ ├── uthread-exit.t
│ │ │ │ ├── uthread-redirect.t
│ │ │ │ └── uthread-spawn.t
│ │ │ ├── 025-codecache.t
│ │ │ ├── 026-mysql.t
│ │ │ ├── 027-multi-capture.t
│ │ │ ├── 028-req-header.t
│ │ │ ├── 029-http-time.t
│ │ │ ├── 030-uri-args-with-ctrl.t
│ │ │ ├── 030-uri-args.t
│ │ │ ├── 031-post-args.t
│ │ │ ├── 032-iolist.t
│ │ │ ├── 033-ctx.t
│ │ │ ├── 034-match.t
│ │ │ ├── 035-gmatch.t
│ │ │ ├── 036-sub.t
│ │ │ ├── 037-gsub.t
│ │ │ ├── 038-match-o.t
│ │ │ ├── 039-sub-o.t
│ │ │ ├── 040-gsub-o.t
│ │ │ ├── 041-header-filter.t
│ │ │ ├── 042-crc32.t
│ │ │ ├── 043-shdict.t
│ │ │ ├── 044-req-body.t
│ │ │ ├── 045-ngx-var.t
│ │ │ ├── 046-hmac.t
│ │ │ ├── 047-match-jit.t
│ │ │ ├── 048-match-dfa.t
│ │ │ ├── 049-gmatch-jit.t
│ │ │ ├── 050-gmatch-dfa.t
│ │ │ ├── 051-sub-jit.t
│ │ │ ├── 052-sub-dfa.t
│ │ │ ├── 053-gsub-jit.t
│ │ │ ├── 054-gsub-dfa.t
│ │ │ ├── 055-subreq-vars.t
│ │ │ ├── 056-flush.t
│ │ │ ├── 057-flush-timeout.t
│ │ │ ├── 058-tcp-socket.t
│ │ │ ├── 059-unix-socket.t
│ │ │ ├── 060-lua-memcached.t
│ │ │ ├── 061-lua-redis.t
│ │ │ ├── 062-count.t
│ │ │ ├── 063-abort.t
│ │ │ ├── 064-pcall.t
│ │ │ ├── 065-tcp-socket-timeout.t
│ │ │ ├── 066-socket-receiveuntil.t
│ │ │ ├── 067-req-socket.t
│ │ │ ├── 068-socket-keepalive.t
│ │ │ ├── 069-null.t
│ │ │ ├── 070-sha1.t
│ │ │ ├── 071-idle-socket.t
│ │ │ ├── 072-conditional-get.t
│ │ │ ├── 073-backtrace.t
│ │ │ ├── 074-prefix-var.t
│ │ │ ├── 075-logby.t
│ │ │ ├── 076-no-postpone.t
│ │ │ ├── 077-sleep.t
│ │ │ ├── 078-hup-vars.t
│ │ │ ├── 079-unused-directives.t
│ │ │ ├── 080-hup-shdict.t
│ │ │ ├── 081-bytecode.t
│ │ │ ├── 082-body-filter-2.t
│ │ │ ├── 082-body-filter.t
│ │ │ ├── 083-bad-sock-self.t
│ │ │ ├── 084-inclusive-receiveuntil.t
│ │ │ ├── 085-if.t
│ │ │ ├── 086-init-by.t
│ │ │ ├── 087-udp-socket.t
│ │ │ ├── 088-req-method.t
│ │ │ ├── 089-phase.t
│ │ │ ├── 090-log-socket-errors.t
│ │ │ ├── 091-coroutine.t
│ │ │ ├── 092-eof.t
│ │ │ ├── 093-uthread-spawn.t
│ │ │ ├── 094-uthread-exit.t
│ │ │ ├── 095-uthread-exec.t
│ │ │ ├── 096-uthread-redirect.t
│ │ │ ├── 097-uthread-rewrite.t
│ │ │ ├── 098-uthread-wait.t
│ │ │ ├── 099-c-api.t
│ │ │ ├── 100-client-abort.t
│ │ │ ├── 101-on-abort.t
│ │ │ ├── 102-req-start-time.t
│ │ │ ├── 103-req-http-ver.t
│ │ │ ├── 104-req-raw-header.t
│ │ │ ├── 105-pressure.t
│ │ │ ├── 106-timer.t
│ │ │ ├── 107-timer-errors.t
│ │ │ ├── 108-timer-safe.t
│ │ │ ├── 109-timer-hup.t
│ │ │ ├── 110-etag.t
│ │ │ ├── 111-req-header-ua.t
│ │ │ ├── 112-req-header-conn.t
│ │ │ ├── 113-req-header-cookie.t
│ │ │ ├── 114-config.t
│ │ │ ├── 115-quote-sql-str.t
│ │ │ ├── 116-raw-req-socket.t
│ │ │ ├── 117-raw-req-socket-timeout.t
│ │ │ ├── 118-use-default-type.t
│ │ │ ├── 119-config-prefix.t
│ │ │ ├── 120-re-find.t
│ │ │ ├── 121-version.t
│ │ │ ├── 122-worker-2.t
│ │ │ ├── 122-worker-3.t
│ │ │ ├── 122-worker.t
│ │ │ ├── 123-lua-path.t
│ │ │ ├── 124-init-worker.t
│ │ │ ├── 125-configure-args.t
│ │ │ ├── 126-shdict-frag.t
│ │ │ ├── 127-uthread-kill.t
│ │ │ ├── 128-duplex-tcp-socket.t
│ │ │ ├── 129-ssl-socket.t
│ │ │ ├── 130-internal-api.t
│ │ │ ├── 131-duplex-req-socket.t
│ │ │ ├── 132-lua-blocks.t
│ │ │ ├── 133-worker-count.t
│ │ │ ├── 134-worker-count-5.t
│ │ │ ├── 135-worker-id.t
│ │ │ ├── 136-timer-counts.t
│ │ │ ├── 137-req-misc.t
│ │ │ ├── 138-balancer.t
│ │ │ ├── 139-ssl-cert-by.t
│ │ │ ├── 140-ssl-c-api.t
│ │ │ ├── 141-luajit.t
│ │ │ ├── 142-ssl-session-store.t
│ │ │ ├── 143-ssl-session-fetch.t
│ │ │ ├── 144-shdict-incr-init.t
│ │ │ ├── 145-shdict-list.t
│ │ │ ├── 146-malloc-trim.t
│ │ │ ├── 147-tcp-socket-timeouts.t
│ │ │ ├── 148-fake-shm-zone.t
│ │ │ ├── 149-hup-fake-shm-zone.t
│ │ │ ├── 150-fake-delayed-load.t
│ │ │ ├── 151-initby-hup.t
│ │ │ ├── 152-timer-every.t
│ │ │ ├── 153-semaphore-hup.t
│ │ │ ├── 154-semaphore.t
│ │ │ ├── 155-tls13.t
│ │ │ ├── 156-slow-network.t
│ │ │ ├── 157-socket-keepalive-hup.t
│ │ │ ├── 158-global-var.t
│ │ │ ├── 159-sa-restart.t
│ │ │ ├── 160-disable-init-by-lua.t
│ │ │ ├── 161-load-resty-core.t
│ │ │ ├── 162-exit-worker.t
│ │ │ ├── 162-fake-merge.t
│ │ │ ├── 162-socket-tls-handshake.t
│ │ │ ├── 162-static-module-location.t
│ │ │ ├── 163-exit-worker-hup.t
│ │ │ ├── 163-signal.t
│ │ │ ├── 164-say.t
│ │ │ ├── 165-thread-cache.t
│ │ │ ├── 166-ssl-client-hello.t
│ │ │ ├── 166-worker-thread.t
│ │ │ ├── 167-server-rewrite.t
│ │ │ ├── 168-tcp-socket-bind.t
│ │ │ ├── 185-ngx-buf-double-free.t
│ │ │ ├── 186-cosocket-busy-bufs.t
│ │ │ ├── StapThread.pm
│ │ │ ├── cert/
│ │ │ │ ├── dst-ca.crt
│ │ │ │ ├── equifax.crt
│ │ │ │ ├── mtls_ca.crt
│ │ │ │ ├── mtls_ca.key
│ │ │ │ ├── mtls_cert_gen/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── generate.sh
│ │ │ │ │ ├── mtls_ca.json
│ │ │ │ │ ├── mtls_client.json
│ │ │ │ │ ├── mtls_server.json
│ │ │ │ │ └── profile.json
│ │ │ │ ├── mtls_client.crt
│ │ │ │ ├── mtls_client.key
│ │ │ │ ├── mtls_server.crt
│ │ │ │ ├── mtls_server.key
│ │ │ │ ├── test.crl
│ │ │ │ ├── test.crt
│ │ │ │ ├── test.key
│ │ │ │ ├── test2.crt
│ │ │ │ ├── test2.key
│ │ │ │ ├── test_ecdsa.crt
│ │ │ │ ├── test_ecdsa.key
│ │ │ │ ├── test_passphrase.crt
│ │ │ │ └── test_passphrase.key
│ │ │ ├── data/
│ │ │ │ ├── fake-delayed-load-module/
│ │ │ │ │ ├── config
│ │ │ │ │ └── ngx_http_lua_fake_delayed_load_module.c
│ │ │ │ ├── fake-merge-module/
│ │ │ │ │ ├── config
│ │ │ │ │ └── ngx_http_fake_merge_module.c
│ │ │ │ ├── fake-module/
│ │ │ │ │ ├── config
│ │ │ │ │ └── ngx_http_fake_module.c
│ │ │ │ └── fake-shm-module/
│ │ │ │ ├── config
│ │ │ │ └── ngx_http_lua_fake_shm_module.c
│ │ │ └── lib/
│ │ │ ├── CRC32.lua
│ │ │ ├── Memcached.lua
│ │ │ ├── Redis.lua
│ │ │ └── ljson.lua
│ │ ├── tapset/
│ │ │ └── ngx_lua.stp
│ │ ├── util/
│ │ │ ├── build-with-dd.sh
│ │ │ ├── build-without-ssl.sh
│ │ │ ├── build.sh
│ │ │ ├── fix-comments
│ │ │ ├── gen-lexer-c
│ │ │ ├── nc_server.py
│ │ │ ├── ngx-links
│ │ │ ├── releng
│ │ │ ├── retab
│ │ │ ├── revim
│ │ │ ├── run_test.sh
│ │ │ └── update-readme.sh
│ │ └── valgrind.suppress
│ ├── ngx_http_proxy_connect_module/
│ │ ├── config
│ │ ├── ngx_http_proxy_connect_module.c
│ │ └── t/
│ │ ├── http_proxy_connect.t
│ │ ├── http_proxy_connect_lua.t
│ │ ├── http_proxy_connect_resolve_variables.t
│ │ └── http_proxy_connect_timeout.t
│ ├── ngx_http_reqstat_module/
│ │ ├── config
│ │ ├── ngx_http_reqstat.h
│ │ └── ngx_http_reqstat_module.c
│ ├── ngx_http_slice_module/
│ │ ├── config
│ │ └── ngx_http_slice_module.c
│ ├── ngx_http_sysguard_module/
│ │ ├── config
│ │ └── ngx_http_sysguard_module.c
│ ├── ngx_http_tfs_module/
│ │ ├── config
│ │ ├── ngx_http_connection_pool.c
│ │ ├── ngx_http_connection_pool.h
│ │ ├── ngx_http_tfs.c
│ │ ├── ngx_http_tfs.h
│ │ ├── ngx_http_tfs_block_cache.c
│ │ ├── ngx_http_tfs_block_cache.h
│ │ ├── ngx_http_tfs_data_server_message.c
│ │ ├── ngx_http_tfs_data_server_message.h
│ │ ├── ngx_http_tfs_duplicate.c
│ │ ├── ngx_http_tfs_duplicate.h
│ │ ├── ngx_http_tfs_errno.h
│ │ ├── ngx_http_tfs_json.c
│ │ ├── ngx_http_tfs_json.h
│ │ ├── ngx_http_tfs_local_block_cache.c
│ │ ├── ngx_http_tfs_local_block_cache.h
│ │ ├── ngx_http_tfs_meta_server_message.c
│ │ ├── ngx_http_tfs_meta_server_message.h
│ │ ├── ngx_http_tfs_module.c
│ │ ├── ngx_http_tfs_name_server_message.c
│ │ ├── ngx_http_tfs_name_server_message.h
│ │ ├── ngx_http_tfs_peer_connection.c
│ │ ├── ngx_http_tfs_peer_connection.h
│ │ ├── ngx_http_tfs_protocol.h
│ │ ├── ngx_http_tfs_raw_fsname.c
│ │ ├── ngx_http_tfs_raw_fsname.h
│ │ ├── ngx_http_tfs_rc_server_info.c
│ │ ├── ngx_http_tfs_rc_server_info.h
│ │ ├── ngx_http_tfs_rc_server_message.c
│ │ ├── ngx_http_tfs_rc_server_message.h
│ │ ├── ngx_http_tfs_remote_block_cache.c
│ │ ├── ngx_http_tfs_remote_block_cache.h
│ │ ├── ngx_http_tfs_restful.c
│ │ ├── ngx_http_tfs_restful.h
│ │ ├── ngx_http_tfs_root_server_message.c
│ │ ├── ngx_http_tfs_root_server_message.h
│ │ ├── ngx_http_tfs_serialization.c
│ │ ├── ngx_http_tfs_serialization.h
│ │ ├── ngx_http_tfs_server_handler.c
│ │ ├── ngx_http_tfs_server_handler.h
│ │ ├── ngx_http_tfs_tair_helper.c
│ │ ├── ngx_http_tfs_tair_helper.h
│ │ ├── ngx_http_tfs_timers.c
│ │ ├── ngx_http_tfs_timers.h
│ │ ├── ngx_tfs_common.c
│ │ └── ngx_tfs_common.h
│ ├── ngx_http_trim_filter_module/
│ │ ├── config
│ │ └── ngx_http_trim_filter_module.c
│ ├── ngx_http_upstream_check_module/
│ │ ├── config
│ │ ├── ngx_http_upstream_check_module.c
│ │ └── ngx_http_upstream_check_module.h
│ ├── ngx_http_upstream_consistent_hash_module/
│ │ ├── config
│ │ └── ngx_http_upstream_consistent_hash_module.c
│ ├── ngx_http_upstream_dynamic_module/
│ │ ├── config
│ │ └── ngx_http_upstream_dynamic_module.c
│ ├── ngx_http_upstream_dyups_module/
│ │ ├── config
│ │ ├── ngx_http_dyups.h
│ │ ├── ngx_http_dyups_lua.c
│ │ ├── ngx_http_dyups_lua.h
│ │ └── ngx_http_dyups_module.c
│ ├── ngx_http_upstream_iwrr_module/
│ │ ├── config
│ │ └── ngx_http_upstream_iwrr_module.c
│ ├── ngx_http_upstream_keepalive_module/
│ │ ├── config
│ │ ├── ngx_http_upstream_keepalive_module.c
│ │ ├── ngx_http_upstream_keepalive_module.md
│ │ └── proxy_keepalive.t
│ ├── ngx_http_upstream_session_sticky_module/
│ │ ├── config
│ │ └── ngx_http_upstream_session_sticky_module.c
│ ├── ngx_http_upstream_vnswrr_module/
│ │ ├── config
│ │ └── ngx_http_upstream_vnswrr_module.c
│ ├── ngx_http_user_agent_module/
│ │ ├── config
│ │ └── ngx_http_user_agent_module.c
│ ├── ngx_http_xquic_module/
│ │ ├── README.md
│ │ ├── config
│ │ ├── ngx_http_v3_stream.c
│ │ ├── ngx_http_v3_stream.h
│ │ ├── ngx_http_xquic.c
│ │ ├── ngx_http_xquic.h
│ │ ├── ngx_http_xquic_filter_module.c
│ │ ├── ngx_http_xquic_module.c
│ │ ├── ngx_http_xquic_module.h
│ │ ├── ngx_xquic.c
│ │ ├── ngx_xquic.h
│ │ ├── ngx_xquic_intercom.c
│ │ ├── ngx_xquic_intercom.h
│ │ ├── ngx_xquic_recv.c
│ │ ├── ngx_xquic_recv.h
│ │ ├── ngx_xquic_send.c
│ │ └── ngx_xquic_send.h
│ ├── ngx_ingress_module/
│ │ ├── config
│ │ ├── ingress.pb-c.c
│ │ ├── ingress.pb-c.h
│ │ ├── ingress.proto
│ │ ├── ngx_ingress_module.c
│ │ ├── ngx_ingress_module.h
│ │ ├── ngx_ingress_protobuf.c
│ │ └── ngx_ingress_protobuf.h
│ ├── ngx_multi_upstream_module/
│ │ ├── config
│ │ ├── ngx_http_multi_upstream.c
│ │ ├── ngx_http_multi_upstream_module.c
│ │ ├── ngx_http_multi_upstream_module.h
│ │ ├── ngx_multi_upstream_module.c
│ │ ├── ngx_multi_upstream_module.h
│ │ ├── ngx_stream_multi_upstream_module.c
│ │ └── ngx_stream_multi_upstream_module.h
│ ├── ngx_slab_stat/
│ │ ├── README.cn
│ │ ├── README.md
│ │ ├── config
│ │ ├── ngx_http_slab_stat_module.c
│ │ ├── slab_stat.patch
│ │ └── t/
│ │ └── test.t
│ └── ngx_tongsuo_ntls/
│ ├── README.md
│ ├── config
│ └── t/
│ ├── CA.pm
│ ├── ntls.t
│ ├── ntls_certificate_chain.t
│ ├── ntls_proxy.t
│ ├── ntls_session_cache.t
│ ├── ntls_sni.t
│ ├── ntls_sni_sessions.t
│ ├── ntls_variables.t
│ ├── ntls_verify_client.t
│ ├── ntls_verify_depth.t
│ ├── stream_ntls.t
│ ├── stream_ntls_proxy.t
│ ├── stream_ntls_session_cache.t
│ ├── stream_ntls_variables.t
│ ├── stream_ntls_verify_client.t
│ └── stream_sni.t
├── packages/
│ └── debian/
│ ├── README.Debian
│ ├── README.md
│ ├── README.source
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── docs
│ ├── files
│ ├── init.d
│ ├── logrotate
│ ├── nginx-debug.install
│ ├── nginx.conf
│ ├── nginx.default
│ ├── nginx.vh.default.conf
│ ├── nginx.vh.example_ssl.conf
│ ├── rules
│ ├── source/
│ │ └── format
│ ├── tengine.debhelper.log
│ ├── tengine.dirs
│ ├── tengine.doc-base.EX
│ ├── tengine.docs
│ ├── tengine.postinst
│ ├── tengine.postinst.debhelper
│ ├── tengine.postrm
│ ├── tengine.postrm.debhelper
│ ├── tengine.preinst
│ ├── tengine.prerm
│ ├── tengine.prerm.debhelper
│ └── tengine.substvars
├── src/
│ ├── core/
│ │ ├── nginx.c
│ │ ├── nginx.h
│ │ ├── ngx_array.c
│ │ ├── ngx_array.h
│ │ ├── ngx_buf.c
│ │ ├── ngx_buf.h
│ │ ├── ngx_conf_file.c
│ │ ├── ngx_conf_file.h
│ │ ├── ngx_config.h
│ │ ├── ngx_connection.c
│ │ ├── ngx_connection.h
│ │ ├── ngx_core.h
│ │ ├── ngx_cpuinfo.c
│ │ ├── ngx_crc.h
│ │ ├── ngx_crc32.c
│ │ ├── ngx_crc32.h
│ │ ├── ngx_crypt.c
│ │ ├── ngx_crypt.h
│ │ ├── ngx_cycle.c
│ │ ├── ngx_cycle.h
│ │ ├── ngx_file.c
│ │ ├── ngx_file.h
│ │ ├── ngx_hash.c
│ │ ├── ngx_hash.h
│ │ ├── ngx_inet.c
│ │ ├── ngx_inet.h
│ │ ├── ngx_list.c
│ │ ├── ngx_list.h
│ │ ├── ngx_log.c
│ │ ├── ngx_log.h
│ │ ├── ngx_md5.c
│ │ ├── ngx_md5.h
│ │ ├── ngx_module.c
│ │ ├── ngx_module.h
│ │ ├── ngx_murmurhash.c
│ │ ├── ngx_murmurhash.h
│ │ ├── ngx_open_file_cache.c
│ │ ├── ngx_open_file_cache.h
│ │ ├── ngx_output_chain.c
│ │ ├── ngx_palloc.c
│ │ ├── ngx_palloc.h
│ │ ├── ngx_parse.c
│ │ ├── ngx_parse.h
│ │ ├── ngx_parse_time.c
│ │ ├── ngx_parse_time.h
│ │ ├── ngx_proxy_protocol.c
│ │ ├── ngx_proxy_protocol.h
│ │ ├── ngx_queue.c
│ │ ├── ngx_queue.h
│ │ ├── ngx_radix_tree.c
│ │ ├── ngx_radix_tree.h
│ │ ├── ngx_rbtree.c
│ │ ├── ngx_rbtree.h
│ │ ├── ngx_regex.c
│ │ ├── ngx_regex.h
│ │ ├── ngx_resolver.c
│ │ ├── ngx_resolver.h
│ │ ├── ngx_rwlock.c
│ │ ├── ngx_rwlock.h
│ │ ├── ngx_segment_tree.c
│ │ ├── ngx_segment_tree.h
│ │ ├── ngx_sha1.c
│ │ ├── ngx_sha1.h
│ │ ├── ngx_shmtx.c
│ │ ├── ngx_shmtx.h
│ │ ├── ngx_slab.c
│ │ ├── ngx_slab.h
│ │ ├── ngx_spinlock.c
│ │ ├── ngx_string.c
│ │ ├── ngx_string.h
│ │ ├── ngx_syslog.c
│ │ ├── ngx_syslog.h
│ │ ├── ngx_thread_pool.c
│ │ ├── ngx_thread_pool.h
│ │ ├── ngx_times.c
│ │ ├── ngx_times.h
│ │ ├── ngx_trie.c
│ │ └── ngx_trie.h
│ ├── event/
│ │ ├── modules/
│ │ │ ├── ngx_aio_module.c
│ │ │ ├── ngx_devpoll_module.c
│ │ │ ├── ngx_epoll_module.c
│ │ │ ├── ngx_eventport_module.c
│ │ │ ├── ngx_iocp_module.c
│ │ │ ├── ngx_iocp_module.h
│ │ │ ├── ngx_kqueue_module.c
│ │ │ ├── ngx_poll_module.c
│ │ │ ├── ngx_rtsig_module.c
│ │ │ ├── ngx_select_module.c
│ │ │ ├── ngx_win32_poll_module.c
│ │ │ └── ngx_win32_select_module.c
│ │ ├── ngx_dlopen.h
│ │ ├── ngx_event.c
│ │ ├── ngx_event.h
│ │ ├── ngx_event_accept.c
│ │ ├── ngx_event_acceptex.c
│ │ ├── ngx_event_connect.c
│ │ ├── ngx_event_connect.h
│ │ ├── ngx_event_connectex.c
│ │ ├── ngx_event_openssl.c
│ │ ├── ngx_event_openssl.h
│ │ ├── ngx_event_openssl_stapling.c
│ │ ├── ngx_event_pipe.c
│ │ ├── ngx_event_pipe.h
│ │ ├── ngx_event_posted.c
│ │ ├── ngx_event_posted.h
│ │ ├── ngx_event_timer.c
│ │ ├── ngx_event_timer.h
│ │ ├── ngx_event_udp.c
│ │ ├── ngx_event_udp.h
│ │ ├── ngx_event_udpv2.c
│ │ └── ngx_event_udpv2.h
│ ├── http/
│ │ ├── modules/
│ │ │ ├── ngx_http_access_module.c
│ │ │ ├── ngx_http_addition_filter_module.c
│ │ │ ├── ngx_http_auth_basic_module.c
│ │ │ ├── ngx_http_auth_request_module.c
│ │ │ ├── ngx_http_autoindex_module.c
│ │ │ ├── ngx_http_browser_module.c
│ │ │ ├── ngx_http_charset_filter_module.c
│ │ │ ├── ngx_http_chunked_filter_module.c
│ │ │ ├── ngx_http_dav_module.c
│ │ │ ├── ngx_http_degradation_module.c
│ │ │ ├── ngx_http_empty_gif_module.c
│ │ │ ├── ngx_http_fastcgi_module.c
│ │ │ ├── ngx_http_flv_module.c
│ │ │ ├── ngx_http_geo_module.c
│ │ │ ├── ngx_http_geoip_module.c
│ │ │ ├── ngx_http_grpc_module.c
│ │ │ ├── ngx_http_gunzip_filter_module.c
│ │ │ ├── ngx_http_gzip_filter_module.c
│ │ │ ├── ngx_http_gzip_static_module.c
│ │ │ ├── ngx_http_headers_filter_module.c
│ │ │ ├── ngx_http_image_filter_module.c
│ │ │ ├── ngx_http_index_module.c
│ │ │ ├── ngx_http_limit_conn_module.c
│ │ │ ├── ngx_http_limit_req_module.c
│ │ │ ├── ngx_http_log_module.c
│ │ │ ├── ngx_http_map_module.c
│ │ │ ├── ngx_http_memcached_module.c
│ │ │ ├── ngx_http_mirror_module.c
│ │ │ ├── ngx_http_mp4_module.c
│ │ │ ├── ngx_http_not_modified_filter_module.c
│ │ │ ├── ngx_http_proxy_module.c
│ │ │ ├── ngx_http_random_index_module.c
│ │ │ ├── ngx_http_range_filter_module.c
│ │ │ ├── ngx_http_realip_module.c
│ │ │ ├── ngx_http_referer_module.c
│ │ │ ├── ngx_http_rewrite_module.c
│ │ │ ├── ngx_http_scgi_module.c
│ │ │ ├── ngx_http_secure_link_module.c
│ │ │ ├── ngx_http_slice_filter_module.c
│ │ │ ├── ngx_http_split_clients_module.c
│ │ │ ├── ngx_http_ssi_filter_module.c
│ │ │ ├── ngx_http_ssi_filter_module.h
│ │ │ ├── ngx_http_ssl_module.c
│ │ │ ├── ngx_http_ssl_module.h
│ │ │ ├── ngx_http_static_module.c
│ │ │ ├── ngx_http_stub_status_module.c
│ │ │ ├── ngx_http_sub_filter_module.c
│ │ │ ├── ngx_http_try_files_module.c
│ │ │ ├── ngx_http_upstream_hash_module.c
│ │ │ ├── ngx_http_upstream_ip_hash_module.c
│ │ │ ├── ngx_http_upstream_keepalive_module.c
│ │ │ ├── ngx_http_upstream_least_conn_module.c
│ │ │ ├── ngx_http_upstream_random_module.c
│ │ │ ├── ngx_http_upstream_zone_module.c
│ │ │ ├── ngx_http_userid_filter_module.c
│ │ │ ├── ngx_http_uwsgi_module.c
│ │ │ ├── ngx_http_xslt_filter_module.c
│ │ │ └── perl/
│ │ │ ├── Makefile.PL
│ │ │ ├── nginx.pm
│ │ │ ├── nginx.xs
│ │ │ ├── ngx_http_perl_module.c
│ │ │ ├── ngx_http_perl_module.h
│ │ │ └── typemap
│ │ ├── ngx_http.c
│ │ ├── ngx_http.h
│ │ ├── ngx_http_cache.h
│ │ ├── ngx_http_config.h
│ │ ├── ngx_http_copy_filter_module.c
│ │ ├── ngx_http_core_module.c
│ │ ├── ngx_http_core_module.h
│ │ ├── ngx_http_file_cache.c
│ │ ├── ngx_http_header_filter_module.c
│ │ ├── ngx_http_huff_decode.c
│ │ ├── ngx_http_huff_encode.c
│ │ ├── ngx_http_parse.c
│ │ ├── ngx_http_postpone_filter_module.c
│ │ ├── ngx_http_request.c
│ │ ├── ngx_http_request.h
│ │ ├── ngx_http_request_body.c
│ │ ├── ngx_http_script.c
│ │ ├── ngx_http_script.h
│ │ ├── ngx_http_special_response.c
│ │ ├── ngx_http_upstream.c
│ │ ├── ngx_http_upstream.h
│ │ ├── ngx_http_upstream_round_robin.c
│ │ ├── ngx_http_upstream_round_robin.h
│ │ ├── ngx_http_variables.c
│ │ ├── ngx_http_variables.h
│ │ ├── ngx_http_write_filter_module.c
│ │ └── v2/
│ │ ├── ngx_http_v2.c
│ │ ├── ngx_http_v2.h
│ │ ├── ngx_http_v2_encode.c
│ │ ├── ngx_http_v2_filter_module.c
│ │ ├── ngx_http_v2_module.c
│ │ ├── ngx_http_v2_module.h
│ │ └── ngx_http_v2_table.c
│ ├── mail/
│ │ ├── ngx_mail.c
│ │ ├── ngx_mail.h
│ │ ├── ngx_mail_auth_http_module.c
│ │ ├── ngx_mail_core_module.c
│ │ ├── ngx_mail_handler.c
│ │ ├── ngx_mail_imap_handler.c
│ │ ├── ngx_mail_imap_module.c
│ │ ├── ngx_mail_imap_module.h
│ │ ├── ngx_mail_parse.c
│ │ ├── ngx_mail_pop3_handler.c
│ │ ├── ngx_mail_pop3_module.c
│ │ ├── ngx_mail_pop3_module.h
│ │ ├── ngx_mail_proxy_module.c
│ │ ├── ngx_mail_realip_module.c
│ │ ├── ngx_mail_smtp_handler.c
│ │ ├── ngx_mail_smtp_module.c
│ │ ├── ngx_mail_smtp_module.h
│ │ ├── ngx_mail_ssl_module.c
│ │ └── ngx_mail_ssl_module.h
│ ├── misc/
│ │ ├── ngx_cpp_test_module.cpp
│ │ └── ngx_google_perftools_module.c
│ ├── os/
│ │ └── unix/
│ │ ├── ngx_aio_read.c
│ │ ├── ngx_aio_read_chain.c
│ │ ├── ngx_aio_write.c
│ │ ├── ngx_aio_write_chain.c
│ │ ├── ngx_alloc.c
│ │ ├── ngx_alloc.h
│ │ ├── ngx_atomic.h
│ │ ├── ngx_channel.c
│ │ ├── ngx_channel.h
│ │ ├── ngx_daemon.c
│ │ ├── ngx_darwin.h
│ │ ├── ngx_darwin_config.h
│ │ ├── ngx_darwin_init.c
│ │ ├── ngx_darwin_sendfile_chain.c
│ │ ├── ngx_dlopen.c
│ │ ├── ngx_dlopen.h
│ │ ├── ngx_errno.c
│ │ ├── ngx_errno.h
│ │ ├── ngx_file_aio_read.c
│ │ ├── ngx_files.c
│ │ ├── ngx_files.h
│ │ ├── ngx_freebsd.h
│ │ ├── ngx_freebsd_config.h
│ │ ├── ngx_freebsd_init.c
│ │ ├── ngx_freebsd_sendfile_chain.c
│ │ ├── ngx_gcc_atomic_amd64.h
│ │ ├── ngx_gcc_atomic_ppc.h
│ │ ├── ngx_gcc_atomic_sparc64.h
│ │ ├── ngx_gcc_atomic_x86.h
│ │ ├── ngx_linux.h
│ │ ├── ngx_linux_aio_read.c
│ │ ├── ngx_linux_config.h
│ │ ├── ngx_linux_init.c
│ │ ├── ngx_linux_sendfile_chain.c
│ │ ├── ngx_os.h
│ │ ├── ngx_pipe.c
│ │ ├── ngx_pipe.h
│ │ ├── ngx_posix_config.h
│ │ ├── ngx_posix_init.c
│ │ ├── ngx_process.c
│ │ ├── ngx_process.h
│ │ ├── ngx_process_cycle.c
│ │ ├── ngx_process_cycle.h
│ │ ├── ngx_readv_chain.c
│ │ ├── ngx_recv.c
│ │ ├── ngx_send.c
│ │ ├── ngx_setaffinity.c
│ │ ├── ngx_setaffinity.h
│ │ ├── ngx_setproctitle.c
│ │ ├── ngx_setproctitle.h
│ │ ├── ngx_shmem.c
│ │ ├── ngx_shmem.h
│ │ ├── ngx_socket.c
│ │ ├── ngx_socket.h
│ │ ├── ngx_solaris.h
│ │ ├── ngx_solaris_config.h
│ │ ├── ngx_solaris_init.c
│ │ ├── ngx_solaris_sendfilev_chain.c
│ │ ├── ngx_sunpro_amd64.il
│ │ ├── ngx_sunpro_atomic_sparc64.h
│ │ ├── ngx_sunpro_sparc64.il
│ │ ├── ngx_sunpro_x86.il
│ │ ├── ngx_sysinfo.c
│ │ ├── ngx_sysinfo.h
│ │ ├── ngx_thread.h
│ │ ├── ngx_thread_cond.c
│ │ ├── ngx_thread_id.c
│ │ ├── ngx_thread_mutex.c
│ │ ├── ngx_time.c
│ │ ├── ngx_time.h
│ │ ├── ngx_udp_recv.c
│ │ ├── ngx_udp_send.c
│ │ ├── ngx_udp_sendmsg_chain.c
│ │ ├── ngx_user.c
│ │ ├── ngx_user.h
│ │ └── ngx_writev_chain.c
│ ├── proc/
│ │ ├── ngx_proc.c
│ │ └── ngx_proc.h
│ └── stream/
│ ├── ngx_stream.c
│ ├── ngx_stream.h
│ ├── ngx_stream_access_module.c
│ ├── ngx_stream_core_module.c
│ ├── ngx_stream_geo_module.c
│ ├── ngx_stream_geoip_module.c
│ ├── ngx_stream_handler.c
│ ├── ngx_stream_limit_conn_module.c
│ ├── ngx_stream_log_module.c
│ ├── ngx_stream_map_module.c
│ ├── ngx_stream_proxy_module.c
│ ├── ngx_stream_realip_module.c
│ ├── ngx_stream_return_module.c
│ ├── ngx_stream_script.c
│ ├── ngx_stream_script.h
│ ├── ngx_stream_set_module.c
│ ├── ngx_stream_split_clients_module.c
│ ├── ngx_stream_ssl_module.c
│ ├── ngx_stream_ssl_module.h
│ ├── ngx_stream_ssl_preread_module.c
│ ├── ngx_stream_upstream.c
│ ├── ngx_stream_upstream.h
│ ├── ngx_stream_upstream_hash_module.c
│ ├── ngx_stream_upstream_least_conn_module.c
│ ├── ngx_stream_upstream_random_module.c
│ ├── ngx_stream_upstream_round_robin.c
│ ├── ngx_stream_upstream_round_robin.h
│ ├── ngx_stream_upstream_zone_module.c
│ ├── ngx_stream_variables.c
│ ├── ngx_stream_variables.h
│ └── ngx_stream_write_filter_module.c
└── tests/
├── nginx-tests/
│ ├── nginx-tests/
│ │ ├── LICENSE
│ │ ├── README
│ │ ├── access.t
│ │ ├── access_log.t
│ │ ├── access_log_variables.t
│ │ ├── addition.t
│ │ ├── addition_buffered.t
│ │ ├── auth_basic.t
│ │ ├── auth_delay.t
│ │ ├── auth_request.t
│ │ ├── auth_request_satisfy.t
│ │ ├── auth_request_set.t
│ │ ├── autoindex.t
│ │ ├── autoindex_format.t
│ │ ├── binary_upgrade.t
│ │ ├── body.t
│ │ ├── body_chunked.t
│ │ ├── charset.t
│ │ ├── charset_gzip_static.t
│ │ ├── config_dump.t
│ │ ├── dav.t
│ │ ├── dav_chunked.t
│ │ ├── dav_utf8.t
│ │ ├── debug_connection.t
│ │ ├── debug_connection_syslog.t
│ │ ├── debug_connection_unix.t
│ │ ├── empty_gif.t
│ │ ├── error_log.t
│ │ ├── fastcgi.t
│ │ ├── fastcgi_body.t
│ │ ├── fastcgi_body2.t
│ │ ├── fastcgi_buffering.t
│ │ ├── fastcgi_cache.t
│ │ ├── fastcgi_extra_data.t
│ │ ├── fastcgi_header_params.t
│ │ ├── fastcgi_keepalive.t
│ │ ├── fastcgi_merge_params.t
│ │ ├── fastcgi_merge_params2.t
│ │ ├── fastcgi_request_buffering.t
│ │ ├── fastcgi_request_buffering_chunked.t
│ │ ├── fastcgi_split.t
│ │ ├── fastcgi_unix.t
│ │ ├── fastcgi_variables.t
│ │ ├── geo.t
│ │ ├── geo_binary.t
│ │ ├── geo_ipv6.t
│ │ ├── geo_unix.t
│ │ ├── geoip.t
│ │ ├── grpc.t
│ │ ├── grpc_next_upstream.t
│ │ ├── grpc_pass.t
│ │ ├── grpc_request_buffering.t
│ │ ├── grpc_ssl.t
│ │ ├── gunzip.t
│ │ ├── gunzip_memcached.t
│ │ ├── gunzip_perl.t
│ │ ├── gunzip_ssi.t
│ │ ├── gunzip_static.t
│ │ ├── gzip.t
│ │ ├── gzip_flush.t
│ │ ├── h2.t
│ │ ├── h2_absolute_redirect.t
│ │ ├── h2_auth_request.t
│ │ ├── h2_error_page.t
│ │ ├── h2_fastcgi_request_buffering.t
│ │ ├── h2_headers.t
│ │ ├── h2_keepalive.t
│ │ ├── h2_limit_conn.t
│ │ ├── h2_limit_req.t
│ │ ├── h2_priority.t
│ │ ├── h2_proxy_cache.t
│ │ ├── h2_proxy_max_temp_file_size.t
│ │ ├── h2_proxy_protocol.t
│ │ ├── h2_proxy_request_buffering.t
│ │ ├── h2_proxy_request_buffering_redirect.t
│ │ ├── h2_proxy_request_buffering_ssl.t
│ │ ├── h2_proxy_ssl.t
│ │ ├── h2_request_body.t
│ │ ├── h2_request_body_extra.t
│ │ ├── h2_request_body_js.t
│ │ ├── h2_request_body_preread.t
│ │ ├── h2_server_push.t
│ │ ├── h2_server_tokens.t
│ │ ├── h2_ssl.t
│ │ ├── h2_ssl_proxy_cache.t
│ │ ├── h2_ssl_proxy_protocol.t
│ │ ├── h2_ssl_variables.t
│ │ ├── h2_ssl_verify_client.t
│ │ ├── h2_trailers.t
│ │ ├── h2_variables.t
│ │ ├── headers.t
│ │ ├── http_absolute_redirect.t
│ │ ├── http_disable_symlinks.t
│ │ ├── http_error_page.t
│ │ ├── http_expect_100_continue.t
│ │ ├── http_header_buffers.t
│ │ ├── http_headers_multi.t
│ │ ├── http_host.t
│ │ ├── http_include.t
│ │ ├── http_keepalive.t
│ │ ├── http_keepalive_shutdown.t
│ │ ├── http_listen.t
│ │ ├── http_listen_wildcard.t
│ │ ├── http_location.t
│ │ ├── http_location_auto.t
│ │ ├── http_location_win32.t
│ │ ├── http_method.t
│ │ ├── http_resolver.t
│ │ ├── http_resolver_aaaa.t
│ │ ├── http_resolver_cleanup.t
│ │ ├── http_resolver_cname.t
│ │ ├── http_resolver_ipv4.t
│ │ ├── http_server_name.t
│ │ ├── http_time_http_variable.t
│ │ ├── http_try_files.t
│ │ ├── http_uri.t
│ │ ├── http_variables.t
│ │ ├── ignore_invalid_headers.t
│ │ ├── image_filter.t
│ │ ├── image_filter_finalize.t
│ │ ├── image_filter_webp.t
│ │ ├── index.t
│ │ ├── js.t
│ │ ├── js_args.t
│ │ ├── js_async.t
│ │ ├── js_body_filter.t
│ │ ├── js_body_filter_if.t
│ │ ├── js_buffer.t
│ │ ├── js_dump.t
│ │ ├── js_fetch.t
│ │ ├── js_fetch_https.t
│ │ ├── js_fetch_resolver.t
│ │ ├── js_fetch_timeout.t
│ │ ├── js_fetch_verify.t
│ │ ├── js_header_filter.t
│ │ ├── js_header_filter_if.t
│ │ ├── js_headers.t
│ │ ├── js_import.t
│ │ ├── js_import2.t
│ │ ├── js_internal_redirect.t
│ │ ├── js_modules.t
│ │ ├── js_ngx.t
│ │ ├── js_object.t
│ │ ├── js_paths.t
│ │ ├── js_preload_object.t
│ │ ├── js_promise.t
│ │ ├── js_request_body.t
│ │ ├── js_return.t
│ │ ├── js_subrequests.t
│ │ ├── js_var.t
│ │ ├── js_var2.t
│ │ ├── js_variables.t
│ │ ├── lib/
│ │ │ ├── Test/
│ │ │ │ ├── Nginx/
│ │ │ │ │ ├── HTTP2.pm
│ │ │ │ │ ├── IMAP.pm
│ │ │ │ │ ├── POP3.pm
│ │ │ │ │ ├── SMTP.pm
│ │ │ │ │ └── Stream.pm
│ │ │ │ └── Nginx.pm
│ │ │ └── Time/
│ │ │ ├── Parse.pm
│ │ │ └── Zone.pm
│ │ ├── limit_conn.t
│ │ ├── limit_conn_complex.t
│ │ ├── limit_conn_dry_run.t
│ │ ├── limit_rate.t
│ │ ├── limit_req.t
│ │ ├── limit_req2.t
│ │ ├── limit_req_delay.t
│ │ ├── limit_req_dry_run.t
│ │ ├── mail_capability.t
│ │ ├── mail_error_log.t
│ │ ├── mail_imap.t
│ │ ├── mail_imap_ssl.t
│ │ ├── mail_max_errors.t
│ │ ├── mail_pop3.t
│ │ ├── mail_proxy_protocol.t
│ │ ├── mail_proxy_smtp_auth.t
│ │ ├── mail_resolver.t
│ │ ├── mail_smtp.t
│ │ ├── mail_smtp_greeting_delay.t
│ │ ├── mail_smtp_xclient.t
│ │ ├── mail_ssl.t
│ │ ├── mail_ssl_conf_command.t
│ │ ├── mail_ssl_session_reuse.t
│ │ ├── map.t
│ │ ├── map_complex.t
│ │ ├── map_volatile.t
│ │ ├── memcached.t
│ │ ├── memcached_fake.t
│ │ ├── memcached_fake_extra.t
│ │ ├── memcached_keepalive.t
│ │ ├── memcached_keepalive_stale.t
│ │ ├── merge_slashes.t
│ │ ├── mirror.t
│ │ ├── mirror_proxy.t
│ │ ├── mp4.t
│ │ ├── mp4_ssi.t
│ │ ├── mp4_start_key_frame.t
│ │ ├── msie_refresh.t
│ │ ├── not_modified.t
│ │ ├── not_modified_finalize.t
│ │ ├── not_modified_proxy.t
│ │ ├── perl.t
│ │ ├── perl_gzip.t
│ │ ├── perl_sleep.t
│ │ ├── perl_ssi.t
│ │ ├── post_action.t
│ │ ├── proxy.t
│ │ ├── proxy_available.t
│ │ ├── proxy_bind.t
│ │ ├── proxy_bind_transparent.t
│ │ ├── proxy_bind_transparent_capability.t
│ │ ├── proxy_cache.t
│ │ ├── proxy_cache_bypass.t
│ │ ├── proxy_cache_chunked.t
│ │ ├── proxy_cache_control.t
│ │ ├── proxy_cache_convert_head.t
│ │ ├── proxy_cache_error.t
│ │ ├── proxy_cache_lock.t
│ │ ├── proxy_cache_lock_age.t
│ │ ├── proxy_cache_lock_ssi.t
│ │ ├── proxy_cache_manager.t
│ │ ├── proxy_cache_max_range_offset.t
│ │ ├── proxy_cache_min_free.t
│ │ ├── proxy_cache_path.t
│ │ ├── proxy_cache_range.t
│ │ ├── proxy_cache_revalidate.t
│ │ ├── proxy_cache_use_stale.t
│ │ ├── proxy_cache_valid.t
│ │ ├── proxy_cache_variables.t
│ │ ├── proxy_cache_vary.t
│ │ ├── proxy_chunked.t
│ │ ├── proxy_chunked_extra.t
│ │ ├── proxy_cookie.t
│ │ ├── proxy_cookie_flags.t
│ │ ├── proxy_duplicate_headers.t
│ │ ├── proxy_extra_data.t
│ │ ├── proxy_force_ranges.t
│ │ ├── proxy_if.t
│ │ ├── proxy_implicit.t
│ │ ├── proxy_intercept_errors.t
│ │ ├── proxy_keepalive.t
│ │ ├── proxy_limit_rate.t
│ │ ├── proxy_max_temp_file_size.t
│ │ ├── proxy_merge_headers.t
│ │ ├── proxy_method.t
│ │ ├── proxy_next_upstream.t
│ │ ├── proxy_next_upstream_tries.t
│ │ ├── proxy_noclose.t
│ │ ├── proxy_non_idempotent.t
│ │ ├── proxy_pass_request.t
│ │ ├── proxy_protocol.t
│ │ ├── proxy_protocol2.t
│ │ ├── proxy_protocol2_port.t
│ │ ├── proxy_protocol2_server.t
│ │ ├── proxy_protocol2_tlv.t
│ │ ├── proxy_protocol_ipv6.t
│ │ ├── proxy_protocol_port.t
│ │ ├── proxy_protocol_server.t
│ │ ├── proxy_protocol_unix.t
│ │ ├── proxy_redirect.t
│ │ ├── proxy_request_buffering.t
│ │ ├── proxy_request_buffering_chunked.t
│ │ ├── proxy_request_buffering_keepalive.t
│ │ ├── proxy_request_buffering_ssl.t
│ │ ├── proxy_set_body.t
│ │ ├── proxy_ssi_body.t
│ │ ├── proxy_ssl.t
│ │ ├── proxy_ssl_certificate.t
│ │ ├── proxy_ssl_certificate_empty.t
│ │ ├── proxy_ssl_certificate_vars.t
│ │ ├── proxy_ssl_conf_command.t
│ │ ├── proxy_ssl_keepalive.t
│ │ ├── proxy_ssl_name.t
│ │ ├── proxy_ssl_verify.t
│ │ ├── proxy_store.t
│ │ ├── proxy_unfinished.t
│ │ ├── proxy_unix.t
│ │ ├── proxy_upgrade.t
│ │ ├── proxy_upstream_cookie.t
│ │ ├── proxy_variables.t
│ │ ├── proxy_websocket.t
│ │ ├── proxy_xar.t
│ │ ├── random_index.t
│ │ ├── range.t
│ │ ├── range_charset.t
│ │ ├── range_clearing.t
│ │ ├── range_flv.t
│ │ ├── range_if_range.t
│ │ ├── range_mp4.t
│ │ ├── realip.t
│ │ ├── realip_hostname.t
│ │ ├── realip_remote_addr.t
│ │ ├── realip_remote_port.t
│ │ ├── referer.t
│ │ ├── request_id.t
│ │ ├── rewrite.t
│ │ ├── rewrite_if.t
│ │ ├── rewrite_set.t
│ │ ├── rewrite_unescape.t
│ │ ├── scgi.t
│ │ ├── scgi_body.t
│ │ ├── scgi_cache.t
│ │ ├── scgi_extra_data.t
│ │ ├── scgi_gzip.t
│ │ ├── scgi_merge_params.t
│ │ ├── secure_link.t
│ │ ├── server_tokens.t
│ │ ├── slice.t
│ │ ├── split_clients.t
│ │ ├── ssi.t
│ │ ├── ssi_delayed.t
│ │ ├── ssi_if.t
│ │ ├── ssi_include_big.t
│ │ ├── ssi_waited.t
│ │ ├── ssl.t
│ │ ├── ssl_certificate.t
│ │ ├── ssl_certificate_chain.t
│ │ ├── ssl_certificate_perl.t
│ │ ├── ssl_certificates.t
│ │ ├── ssl_client_escaped_cert.t
│ │ ├── ssl_conf_command.t
│ │ ├── ssl_crl.t
│ │ ├── ssl_curve.t
│ │ ├── ssl_engine_keys.t
│ │ ├── ssl_password_file.t
│ │ ├── ssl_proxy_protocol.t
│ │ ├── ssl_proxy_upgrade.t
│ │ ├── ssl_reject_handshake.t
│ │ ├── ssl_session_reuse.t
│ │ ├── ssl_session_ticket_key.t
│ │ ├── ssl_sni.t
│ │ ├── ssl_sni_reneg.t
│ │ ├── ssl_sni_sessions.t
│ │ ├── ssl_stapling.t
│ │ ├── ssl_verify_client.t
│ │ ├── ssl_verify_depth.t
│ │ ├── stream_access.t
│ │ ├── stream_access_log.t
│ │ ├── stream_access_log_escape.t
│ │ ├── stream_access_log_none.t
│ │ ├── stream_error_log.t
│ │ ├── stream_geo.t
│ │ ├── stream_geo_binary.t
│ │ ├── stream_geo_ipv6.t
│ │ ├── stream_geo_unix.t
│ │ ├── stream_geoip.t
│ │ ├── stream_js.t
│ │ ├── stream_js_buffer.t
│ │ ├── stream_js_exit.t
│ │ ├── stream_js_fetch.t
│ │ ├── stream_js_fetch_https.t
│ │ ├── stream_js_import.t
│ │ ├── stream_js_import2.t
│ │ ├── stream_js_ngx.t
│ │ ├── stream_js_object.t
│ │ ├── stream_js_preload_object.t
│ │ ├── stream_js_var.t
│ │ ├── stream_js_var2.t
│ │ ├── stream_js_variables.t
│ │ ├── stream_limit_conn.t
│ │ ├── stream_limit_conn_complex.t
│ │ ├── stream_limit_conn_dry_run.t
│ │ ├── stream_limit_rate.t
│ │ ├── stream_limit_rate2.t
│ │ ├── stream_map.t
│ │ ├── stream_proxy.t
│ │ ├── stream_proxy_bind.t
│ │ ├── stream_proxy_complex.t
│ │ ├── stream_proxy_half_close.t
│ │ ├── stream_proxy_next_upstream.t
│ │ ├── stream_proxy_protocol.t
│ │ ├── stream_proxy_protocol2_tlv.t
│ │ ├── stream_proxy_protocol_ipv6.t
│ │ ├── stream_proxy_protocol_ssl.t
│ │ ├── stream_proxy_ssl.t
│ │ ├── stream_proxy_ssl_certificate.t
│ │ ├── stream_proxy_ssl_certificate_vars.t
│ │ ├── stream_proxy_ssl_conf_command.t
│ │ ├── stream_proxy_ssl_name.t
│ │ ├── stream_proxy_ssl_name_complex.t
│ │ ├── stream_proxy_ssl_verify.t
│ │ ├── stream_realip.t
│ │ ├── stream_realip_hostname.t
│ │ ├── stream_resolver.t
│ │ ├── stream_set.t
│ │ ├── stream_split_clients.t
│ │ ├── stream_ssl.t
│ │ ├── stream_ssl_alpn.t
│ │ ├── stream_ssl_certificate.t
│ │ ├── stream_ssl_conf_command.t
│ │ ├── stream_ssl_preread.t
│ │ ├── stream_ssl_preread_alpn.t
│ │ ├── stream_ssl_preread_protocol.t
│ │ ├── stream_ssl_realip.t
│ │ ├── stream_ssl_session_reuse.t
│ │ ├── stream_ssl_variables.t
│ │ ├── stream_ssl_verify_client.t
│ │ ├── stream_status_variable.t
│ │ ├── stream_tcp_nodelay.t
│ │ ├── stream_udp_limit_conn.t
│ │ ├── stream_udp_limit_rate.t
│ │ ├── stream_udp_proxy.t
│ │ ├── stream_udp_proxy_requests.t
│ │ ├── stream_udp_stream.t
│ │ ├── stream_udp_upstream.t
│ │ ├── stream_udp_upstream_hash.t
│ │ ├── stream_udp_upstream_least_conn.t
│ │ ├── stream_udp_wildcard.t
│ │ ├── stream_unix.t
│ │ ├── stream_upstream.t
│ │ ├── stream_upstream_hash.t
│ │ ├── stream_upstream_least_conn.t
│ │ ├── stream_upstream_max_conns.t
│ │ ├── stream_upstream_random.t
│ │ ├── stream_upstream_zone.t
│ │ ├── stream_upstream_zone_ssl.t
│ │ ├── stream_variables.t
│ │ ├── stub_status.t
│ │ ├── sub_filter.t
│ │ ├── sub_filter_buffering.t
│ │ ├── sub_filter_merge.t
│ │ ├── sub_filter_multi.t
│ │ ├── sub_filter_multi2.t
│ │ ├── sub_filter_perl.t
│ │ ├── sub_filter_slice.t
│ │ ├── sub_filter_ssi.t
│ │ ├── subrequest_output_buffer_size.t
│ │ ├── syslog.t
│ │ ├── trailers.t
│ │ ├── upstream.t
│ │ ├── upstream_hash.t
│ │ ├── upstream_hash_memcached.t
│ │ ├── upstream_ip_hash.t
│ │ ├── upstream_ip_hash_ipv6.t
│ │ ├── upstream_keepalive.t
│ │ ├── upstream_least_conn.t
│ │ ├── upstream_max_conns.t
│ │ ├── upstream_random.t
│ │ ├── upstream_zone.t
│ │ ├── upstream_zone_ssl.t
│ │ ├── userid.t
│ │ ├── userid_flags.t
│ │ ├── uwsgi.t
│ │ ├── uwsgi_body.t
│ │ ├── uwsgi_ssl.t
│ │ ├── uwsgi_ssl_certificate.t
│ │ ├── uwsgi_ssl_certificate_vars.t
│ │ ├── uwsgi_ssl_verify.t
│ │ ├── worker_shutdown_timeout.t
│ │ ├── worker_shutdown_timeout_h2.t
│ │ ├── worker_shutdown_timeout_mail.t
│ │ ├── worker_shutdown_timeout_proxy_upgrade.t
│ │ ├── worker_shutdown_timeout_stream.t
│ │ ├── xslt.t
│ │ └── xslt_params.t
│ └── tengine-tests/
│ ├── concat.t
│ ├── consistent_hash.t
│ ├── dynamic_resolve.t
│ ├── dynamic_resolve_aaaa.t
│ ├── dyups.t
│ ├── fastcgi_check.t
│ ├── gzip_clear_etag.t
│ ├── http_raw_uri_variable.t
│ ├── http_ssl_asynchronous_mode.t
│ ├── http_ssl_handshakd_time.t
│ ├── if_numeric_comparison.t
│ ├── iwrr.t
│ ├── limit_req_enhance.t
│ ├── ngx_dtls.t
│ ├── ngx_http_upstream_vnswrr.t
│ ├── reqstat.t
│ ├── resolver.t
│ ├── resolver_file.t
│ ├── server_banner.t
│ ├── session_sticky.t
│ ├── slice.t
│ ├── stream_sni.t
│ ├── stream_ssl_handshakd_time.t
│ ├── sysguard.t
│ ├── upstream.t
│ ├── upstream_keepalive_timeout.t
│ ├── variable.t
│ └── vnswrr4dynamic_ups.t
└── test-nginx/
├── README
├── cases/
│ ├── footer.t
│ ├── ngx_http_upstream_check_module/
│ │ ├── check_interface.t
│ │ ├── http_check.t
│ │ ├── ssl_hello_check.t
│ │ ├── tcp_check.t
│ │ └── websocket.t
│ ├── req-start-time-variable.t
│ ├── trim.t
│ └── user_agent.t
└── test-nginx/
├── .gitignore
├── Changes
├── MANIFEST
├── MANIFEST.SKIP
├── META.yml
├── Makefile.PL
├── README
├── inc/
│ ├── Module/
│ │ ├── AutoInstall.pm
│ │ ├── Install/
│ │ │ ├── AutoInstall.pm
│ │ │ ├── Base.pm
│ │ │ ├── Can.pm
│ │ │ ├── Fetch.pm
│ │ │ ├── Include.pm
│ │ │ ├── Makefile.pm
│ │ │ ├── Metadata.pm
│ │ │ ├── TestBase.pm
│ │ │ ├── Win32.pm
│ │ │ └── WriteAll.pm
│ │ └── Install.pm
│ ├── Spiffy.pm
│ └── Test/
│ ├── Base/
│ │ └── Filter.pm
│ ├── Base.pm
│ ├── Builder/
│ │ └── Module.pm
│ ├── Builder.pm
│ └── More.pm
├── lib/
│ └── Test/
│ ├── Nginx/
│ │ ├── LWP.pm
│ │ ├── Socket/
│ │ │ └── Lua.pm
│ │ ├── Socket.pm
│ │ └── Util.pm
│ └── Nginx.pm
└── t/
├── apply_moves.t
├── check_response_body.t
├── get_req_from_block.t
├── parse_request.t
├── pod-coverage.t
├── pod.t
└── syntax.t
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
### Ⅰ. Issue Description
### Ⅱ. Describe what happened
### Ⅲ. Describe what you expected to happen
### Ⅳ. How to reproduce it (as minimally and precisely as possible)
1.
2.
3.
### Ⅴ. Anything else we need to know?
1. If applicable, add nginx [debug log doc](http://nginx.org/en/docs/debugging_log.html).
2.
3.
### Ⅵ. Environment:
- Tengine version (use `sbin/nginx -V`):
- OS (e.g. from /etc/os-release):
- Kernel (e.g. `uname -a`):
- Others:
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
## Why you need it?
<!-- Is your feature request related to a problem? Please describe in details -->
## How it could be?
<!--A clear and concise description of what you want to happen. For a computer fan, you can explain more about input of the feature, and output of it.-->
## Other related information
<!-- Add any other context or screenshots about the feature request here.-->
================================================
FILE: .github/ISSUE_TEMPLATE/question-about-tengine.md
================================================
---
name: Question about Tengine
about: Ask whatever you want to know or confusion about Tengine
title: ''
labels: ''
assignees: chobits
---
## Question
<!-- You can ask any question about this project -->
================================================
FILE: .github/workflows/ci-arm64.yml
================================================
name: build tengine
on:
push:
branches: [ master ]
pull_request:
jobs:
build-arm64:
runs-on: "ubuntu-24.04"
strategy:
fail-fast: false
matrix:
compiler:
- { compiler: GNU, CC: gcc, CXX: g++}
- { compiler: LLVM, CC: clang, CXX: clang++}
steps:
- name: Checkout Tengine
uses: actions/checkout@v3
- name: 'checkout luajit2'
uses: actions/checkout@v3
with:
repository: openresty/luajit2
path: luajit2
- name: Compile with ${{ matrix.compiler.compiler }}
uses: uraimo/run-on-arch-action@v3
with:
arch: aarch64
distro: ubuntu24.04
githubToken: ${{ github.token }}
dockerRunArgs: |
--volume "${PWD}:/tengine"
install: |
set -x
apt-get update -q -y
apt-get install -q -y make gcc g++ clang libgd-dev libgeoip-dev libxslt1-dev libpcre3 libpcre3-dev liblua5.1-0-dev lua5.1 libperl-dev cpanminus libssl-dev file
run: |
set -x
cd /tengine
echo "Build luajit2"
cd luajit2
make -j4
make install
cd ..
echo "Build tengine"
export CC=${{ matrix.compiler.CC }}
export CXX=${{ matrix.compiler.CXX }}
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.1
./configure \
--with-ld-opt="-Wl,-lpcre,-rpath,/usr/local/lib" \
--with-ipv6 \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_addition_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_geoip_module \
--with-stream_ssl_preread_module \
--with-stream_sni \
--add-module=./modules/ngx_backtrace_module \
--add-module=./modules/ngx_debug_pool \
--add-module=./modules/ngx_debug_timer \
--add-module=./modules/ngx_debug_conn \
--add-module=./modules/ngx_http_concat_module \
--add-module=./modules/ngx_http_footer_filter_module \
--add-module=./modules/ngx_http_lua_module \
--add-module=./modules/ngx_http_proxy_connect_module \
--add-module=./modules/ngx_http_reqstat_module \
--add-module=./modules/ngx_http_slice_module \
--add-module=./modules/ngx_http_sysguard_module \
--add-module=./modules/ngx_http_trim_filter_module \
--add-module=./modules/ngx_http_upstream_check_module \
--add-module=./modules/ngx_http_upstream_consistent_hash_module \
--add-module=./modules/ngx_http_upstream_dynamic_module \
--add-module=./modules/ngx_http_upstream_dyups_module \
--add-module=./modules/ngx_http_upstream_iwrr_module \
--add-module=./modules/ngx_http_upstream_keepalive_module \
--add-module=./modules/ngx_http_upstream_session_sticky_module \
--add-module=./modules/ngx_http_upstream_vnswrr_module \
--add-module=./modules/ngx_http_user_agent_module \
--add-module=./modules/ngx_multi_upstream_module \
--add-module=./modules/ngx_slab_stat \
--without-http_upstream_keepalive_module
make -j4
make install
file /usr/local/nginx/sbin/nginx | grep aarch64
================================================
FILE: .github/workflows/ci.yml
================================================
name: test tengine
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build-and-test:
runs-on: "ubuntu-24.04"
strategy:
fail-fast: false
matrix:
compiler:
- { compiler: GNU, CC: gcc, CXX: g++}
- { compiler: LLVM, CC: clang, CXX: clang++}
steps:
- uses: actions/checkout@v3
- name: get dependencies
run: |
sudo apt update
sudo apt remove nginx libgd3
sudo apt install -y libgd-dev libgeoip-dev libxslt1-dev libpcre3 libpcre3-dev liblua5.1-0-dev lua5.1 libperl-dev cpanminus libssl-dev
- name: 'checkout luajit2'
uses: actions/checkout@v3
with:
repository: openresty/luajit2
path: luajit2
- name: 'build luajit2'
working-directory: luajit2
run: |
make
sudo make install
- name: 'checkout lua-resty-lrucache'
uses: actions/checkout@v3
with:
repository: openresty/lua-resty-lrucache
path: lua-resty-lrucache
- name: 'build lua-resty-lrucache'
working-directory: lua-resty-lrucache
run: |
sudo make install
- name: 'checkout lua-resty-core'
uses: actions/checkout@v3
with:
repository: openresty/lua-resty-core
ref: v0.1.27
path: lua-resty-core
- name: 'build lua-resty-core'
working-directory: lua-resty-core
run: |
sudo make install
# TODO: fix tests so they don't depend on /usr/local/nginx/logs/
# so we can run `make`, `make test`, `make install`.
- name: build
env:
CC: ${{ matrix.compiler.CC }}
CXX: ${{ matrix.compiler.CXX }}
LUAJIT_LIB: /usr/local/lib
LUAJIT_INC: /usr/local/include/luajit-2.1
run: |
./configure \
--with-debug \
--with-ld-opt="-Wl,-lpcre,-rpath,/usr/local/lib" \
--with-ipv6 \
--with-openssl-async \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_addition_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_geoip_module \
--with-stream_ssl_preread_module \
--with-stream_sni \
--add-module=./modules/ngx_backtrace_module \
--add-module=./modules/ngx_debug_pool \
--add-module=./modules/ngx_debug_timer \
--add-module=./modules/ngx_debug_conn \
--add-module=./modules/ngx_http_concat_module \
--add-module=./modules/ngx_http_footer_filter_module \
--add-module=./modules/ngx_http_lua_module \
--add-module=./modules/ngx_http_proxy_connect_module \
--add-module=./modules/ngx_http_reqstat_module \
--add-module=./modules/ngx_http_slice_module \
--add-module=./modules/ngx_http_sysguard_module \
--add-module=./modules/ngx_http_trim_filter_module \
--add-module=./modules/ngx_http_upstream_check_module \
--add-module=./modules/ngx_http_upstream_consistent_hash_module \
--add-module=./modules/ngx_http_upstream_dynamic_module \
--add-module=./modules/ngx_http_upstream_dyups_module \
--add-module=./modules/ngx_http_upstream_iwrr_module \
--add-module=./modules/ngx_http_upstream_keepalive_module \
--add-module=./modules/ngx_http_upstream_session_sticky_module \
--add-module=./modules/ngx_http_upstream_vnswrr_module \
--add-module=./modules/ngx_http_user_agent_module \
--add-module=./modules/ngx_multi_upstream_module \
--add-module=./modules/ngx_slab_stat \
--without-http_upstream_keepalive_module
make -j2
sudo make install
- name: tengine test cases using nginx-tests lib
working-directory: tests/nginx-tests
env:
TEST_NGINX_BINARY: /usr/local/nginx/sbin/nginx
run: |
sudo cpanm --notest Net::DNS::Nameserver > build.log 2>&1 || (cat build.log && exit 1)
prove -v -Inginx-tests/lib tengine-tests/
prove -v -Inginx-tests/lib ../../modules/ngx_http_proxy_connect_module/t
prove -v -Inginx-tests/lib ../../modules/ngx_debug_timer/t
prove -v -Inginx-tests/lib ../../modules/ngx_debug_conn/t
prove -v -Inginx-tests/lib ../../modules/ngx_slab_stat/t
- name: tengine test cases using test-nginx lib
working-directory: tests/test-nginx
run: |
sudo cpanm --notest Shell Test::Base Test::LongString List::MoreUtils LWP::UserAgent HTTP::Response > build.log 2>&1 || (cat build.log && exit 1)
mkdir t
PATH=/usr/local/nginx/sbin:$PATH \
prove -v -Itest-nginx/lib cases/
================================================
FILE: .github/workflows/test-nginx-core.yml
================================================
name: test nginx core
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build-and-test:
runs-on: "ubuntu-24.04"
strategy:
fail-fast: false
matrix:
compiler:
- { compiler: GNU, CC: gcc, CXX: g++}
- { compiler: LLVM, CC: clang, CXX: clang++}
steps:
- uses: actions/checkout@v3
- name: get dependencies
run: |
sudo apt update
sudo apt remove nginx libgd3
sudo apt install -y libgd-dev libgeoip-dev libxslt1-dev libpcre3 libpcre3-dev liblua5.1-0-dev lua5.1 libperl-dev cpanminus libssl-dev
# for building nginx core
sudo apt install -y libgoogle-perftools-dev
# for running cases in nginx-tests
sudo apt install -y uwsgi-plugin-python3 uwsgi ffmpeg memcached libsofthsm2-dev
- name: 'checkout luajit2'
uses: actions/checkout@v3
with:
repository: openresty/luajit2
path: luajit2
- name: 'build luajit2'
working-directory: luajit2
run: |
make
sudo make install
- name: 'checkout lua-resty-lrucache'
uses: actions/checkout@v3
with:
repository: openresty/lua-resty-lrucache
path: lua-resty-lrucache
- name: 'build lua-resty-lrucache'
working-directory: lua-resty-lrucache
run: |
sudo make install
- name: 'checkout lua-resty-core'
uses: actions/checkout@v3
with:
repository: openresty/lua-resty-core
ref: v0.1.27
path: lua-resty-core
- name: 'build lua-resty-core'
working-directory: lua-resty-core
run: |
sudo make install
- name: build
env:
CC: ${{ matrix.compiler.CC }}
CXX: ${{ matrix.compiler.CXX }}
LUAJIT_LIB: /usr/local/lib
LUAJIT_INC: /usr/local/include/luajit-2.1
run: |
# TODO: fix https://github.com/alibaba/tengine/issues/1720, then remove "-D T_NGX_HTTP_IMAGE_FILTER=0"
# NOTE:
# For "-D T_NGX_MODIFY_DEFAULT_VALUE=0", we dont compile the source included in this macro, otherwise some nginx-tests cases tests will fail.
# For "-D T_NGX_SERVER_INFO=0", it makes some cases pass, such as userid.t.
# For "-D T_NGX_HTTP_UPSTREAM_RANDOM=0", it makes some cases pass, such as image_filter_finalize.t.
./configure \
--with-cc-opt="-D T_NGX_MODIFY_DEFAULT_VALUE=0 -D T_NGX_HTTP_IMAGE_FILTER=0 -D T_NGX_SERVER_INFO=0 -D T_NGX_HTTP_UPSTREAM_RANDOM=0" \
--with-ld-opt="-Wl,-lpcre,-rpath,/usr/local/lib" \
--with-openssl-async \
--with-pcre \
--with-http_ssl_module \
--with-http_image_filter_module \
--with-http_v2_module \
--with-http_addition_module \
--with-http_mp4_module \
--with-http_realip_module \
--with-http_xslt_module \
--with-http_geoip_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_geoip_module \
--with-stream_ssl_preread_module \
--with-google_perftools_module \
--with-cpp_test_module \
--with-compat \
--add-module=modules/mod_config \
--add-module=modules/mod_dubbo \
--add-module=modules/ngx_backtrace_module \
--add-module=modules/ngx_debug_timer \
--add-module=modules/ngx_http_concat_module \
--add-module=modules/ngx_http_footer_filter_module \
--add-module=modules/ngx_http_lua_module \
--add-module=modules/ngx_http_proxy_connect_module \
--add-module=modules/ngx_http_reqstat_module \
--add-module=modules/ngx_http_sysguard_module \
--add-module=modules/ngx_http_trim_filter_module \
--add-module=modules/ngx_http_upstream_check_module \
--add-module=modules/ngx_http_upstream_consistent_hash_module \
--add-module=modules/ngx_http_upstream_dynamic_module \
--add-module=modules/ngx_http_upstream_session_sticky_module \
--add-module=modules/ngx_http_upstream_vnswrr_module \
--add-module=modules/ngx_http_user_agent_module \
--add-module=modules/ngx_multi_upstream_module \
--add-module=modules/ngx_slab_stat \
--add-module=modules/ngx_http_upstream_dyups_module \
--with-http_perl_module \
--with-stream_sni \
--with-openssl-async \
--with-debug
# skip ngx_debug_pool, it modified NGX_MIN_POOL_SIZE, which made some test case failed (http_header_buffers.t)
# skip tengine upstream keepalive module
#--without-http_upstream_keepalive_module \
#--add-module=modules/ngx_http_upstream_keepalive_module \
# skip tengine slice module
#--add-module=modules/ngx_http_slice_module \
make -j2
sudo make install
- name: run cases in nginx-tests
working-directory: tests/nginx-tests
env:
TEST_NGINX_BINARY: /usr/local/nginx/sbin/nginx
TEST_NGINX_UNSAFE: yes
run: |
# prepare perl library for test case
sudo cpanm --notest SCGI Protocol::WebSocket Net::SSLeay IO::Socket::SSL Cache::Memcached Cache::Memcached::Fast Net::DNS::Nameserver GD > build.log 2>&1 || (cat build.log && exit 1)
# fixed http_method.t for tengine proxy_connect module
sed -i -e "s+405 Not Allowed(?!.*200 OK)/s, 'connect'+400 Bad Request(?!.*200 OK)/s, 'connect'+" nginx-tests/http_method.t
# run cases in nginx-tests
prove -I nginx-tests/lib nginx-tests/
# It must be root for some cases.
sudo groupadd wheel # for proxy_bind_transparent.t
sudo TEST_NGINX_BINARY=/usr/local/nginx/sbin/nginx TEST_NGINX_UNSAFE=yes prove -I nginx-tests/lib nginx-tests/proxy_bind_transparent.t nginx-tests/proxy_bind_transparent_capability.t
================================================
FILE: .github/workflows/test-ntls.yml
================================================
name: test tengine ntls
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build-and-test:
runs-on: "ubuntu-24.04"
strategy:
fail-fast: false
matrix:
compiler:
- { compiler: GNU, CC: gcc, CXX: g++}
- { compiler: LLVM, CC: clang, CXX: clang++}
steps:
- uses: actions/checkout@v3
with:
path: tengine
- name: get dependencies
run: |
sudo apt install -y libpcre3 libpcre3-dev
- name: 'checkout luajit2'
uses: actions/checkout@v3
with:
repository: openresty/luajit2
path: luajit2
- name: 'build luajit2'
working-directory: luajit2
run: |
make
sudo make install
- name: 'checkout lua-resty-lrucache'
uses: actions/checkout@v3
with:
repository: openresty/lua-resty-lrucache
path: lua-resty-lrucache
- name: 'build lua-resty-lrucache'
working-directory: lua-resty-lrucache
run: |
sudo make install
- name: 'checkout lua-resty-core'
uses: actions/checkout@v3
with:
repository: openresty/lua-resty-core
ref: v0.1.27
path: lua-resty-core
- name: 'build lua-resty-core'
working-directory: lua-resty-core
run: |
sudo make install
- name: checkout Tongsuo
uses: actions/checkout@v3
with:
repository: Tongsuo-Project/Tongsuo
path: Tongsuo
- name: build Tongsuo
working-directory: Tongsuo
env:
CC: ${{ matrix.compiler.CC }}
run: |
./config --prefix=${RUNNER_TEMP}/tongsuo enable-ntls no-shared
make -s -j4
make install_sw
make clean
- name: build Tengine
working-directory: tengine
env:
CC: ${{ matrix.compiler.CC }}
CXX: ${{ matrix.compiler.CXX }}
LUAJIT_LIB: /usr/local/lib
LUAJIT_INC: /usr/local/include/luajit-2.1
run: |
./configure \
--with-ld-opt="-Wl,-lpcre,-rpath,/usr/local/lib" \
--with-pcre \
--add-module=modules/ngx_tongsuo_ntls \
--add-module=modules/ngx_http_lua_module \
--with-openssl=../Tongsuo \
--with-openssl-opt="--api=1.1.1 enable-ntls" \
--with-http_ssl_module \
--with-http_v2_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_sni
make -j2
sudo make install
- name: run test cases
working-directory: tengine
env:
TEST_OPENSSL_BINARY: ${{ runner.temp }}/tongsuo/bin/tongsuo
TEST_NGINX_BINARY: /usr/local/nginx/sbin/nginx
TEST_NGINX_LEAVE: 1
run: |
prove -Itests/nginx-tests/nginx-tests/lib/ modules/ngx_tongsuo_ntls/t
- name: debug
if: ${{ failure() }}
run: |
for file in `ls /tmp/nginx-test-*/error.log`; do cat $file; done
================================================
FILE: .gitignore
================================================
Makefile
objs/
tags
================================================
FILE: AUTHORS.te
================================================
Names are in alphabetical order:
António P. P. Almeida (appa [at] perusio [dot] net)
Charles Chen (weiyue [at] taobao [dot] com)
Xiaojiang Chen (zhongsheng.cxj [at] taobao [dot] com)
Yunxing Chen (yunxing.cyx [at] taobao [dot] com)
Zhen Chen (gongyuan.cz [at] taobao [dot] com)
Shanyuan Gao (kangbo [at] taobao [dot] com)
Steve Peng (jinglong.pq [at] taobao [dot] com)
Feibo Li (lizi [at] taobao [dot] com)
Simon Liu (diaoliang [at] taobao [dot] com)
Yang Tian (lieyuan [at] taobao [dot] com)
Xiaozhe "chaoslawful" Wang (chaoslawful [at] gmail [dot] com)
Xiaowei Wu (yixiao.wxw [at] taobao [dot] com)
Junmin Xiong (xiongjunmin.pt [at] taobao [dot] com)
Zhuo Yuan (yuanzhuo.pt [at] taobao [dot] com)
Weibin Yao (wenjing.ywb [at] taobao [dot] com)
Zhang "agentzh" Yichun (agentzh [at] gmail [dot] com)
Lanshun Zhou (zls.sogou [at] gmail [dot] com)
Joshua Zhu (shudu [at] taobao [dot] com)
Liang Li (lianglli [at] taobao [dot] com)
================================================
FILE: CHANGES
================================================
Changes with nginx 1.24.0 11 Apr 2023
*) 1.24.x stable branch.
Changes with nginx 1.23.4 28 Mar 2023
*) Change: now TLSv1.3 protocol is enabled by default.
*) Change: now nginx issues a warning if protocol parameters of a
listening socket are redefined.
*) Change: now nginx closes connections with lingering if pipelining was
used by the client.
*) Feature: byte ranges support in the ngx_http_gzip_static_module.
*) Bugfix: port ranges in the "listen" directive did not work; the bug
had appeared in 1.23.3.
Thanks to Valentin Bartenev.
*) Bugfix: incorrect location might be chosen to process a request if a
prefix location longer than 255 characters was used in the
configuration.
*) Bugfix: non-ASCII characters in file names on Windows were not
supported by the ngx_http_autoindex_module, the ngx_http_dav_module,
and the "include" directive.
*) Change: the logging level of the "data length too long", "length too
short", "bad legacy version", "no shared signature algorithms", "bad
digest length", "missing sigalgs extension", "encrypted length too
long", "bad length", "bad key update", "mixed handshake and non
handshake data", "ccs received early", "data between ccs and
finished", "packet length too long", "too many warn alerts", "record
too small", and "got a fin before a ccs" SSL errors has been lowered
from "crit" to "info".
*) Bugfix: a socket leak might occur when using HTTP/2 and the
"error_page" directive to redirect errors with code 400.
*) Bugfix: messages about logging to syslog errors did not contain
information that the errors happened while logging to syslog.
Thanks to Safar Safarly.
*) Workaround: "gzip filter failed to use preallocated memory" alerts
appeared in logs when using zlib-ng.
*) Bugfix: in the mail proxy server.
Changes with nginx 1.23.3 13 Dec 2022
*) Bugfix: an error might occur when reading PROXY protocol version 2
header with large number of TLVs.
*) Bugfix: a segmentation fault might occur in a worker process if SSI
was used to process subrequests created by other modules.
Thanks to Ciel Zhao.
*) Workaround: when a hostname used in the "listen" directive resolves
to multiple addresses, nginx now ignores duplicates within these
addresses.
*) Bugfix: nginx might hog CPU during unbuffered proxying if SSL
connections to backends were used.
Changes with nginx 1.23.2 19 Oct 2022
*) Security: processing of a specially crafted mp4 file by the
ngx_http_mp4_module might cause a worker process crash, worker
process memory disclosure, or might have potential other impact
(CVE-2022-41741, CVE-2022-41742).
*) Feature: the "$proxy_protocol_tlv_..." variables.
*) Feature: TLS session tickets encryption keys are now automatically
rotated when using shared memory in the "ssl_session_cache"
directive.
*) Change: the logging level of the "bad record type" SSL errors has
been lowered from "crit" to "info".
Thanks to Murilo Andrade.
*) Change: now when using shared memory in the "ssl_session_cache"
directive the "could not allocate new session" errors are logged at
the "warn" level instead of "alert" and not more often than once per
second.
*) Bugfix: nginx/Windows could not be built with OpenSSL 3.0.x.
*) Bugfix: in logging of the PROXY protocol errors.
Thanks to Sergey Brester.
*) Workaround: shared memory from the "ssl_session_cache" directive was
spent on sessions using TLS session tickets when using TLSv1.3 with
OpenSSL.
*) Workaround: timeout specified with the "ssl_session_timeout"
directive did not work when using TLSv1.3 with OpenSSL or BoringSSL.
Changes with nginx 1.23.1 19 Jul 2022
*) Feature: memory usage optimization in configurations with SSL
proxying.
*) Feature: looking up of IPv4 addresses while resolving now can be
disabled with the "ipv4=off" parameter of the "resolver" directive.
*) Change: the logging level of the "bad key share", "bad extension",
"bad cipher", and "bad ecpoint" SSL errors has been lowered from
"crit" to "info".
*) Bugfix: while returning byte ranges nginx did not remove the
"Content-Range" header line if it was present in the original backend
response.
*) Bugfix: a proxied response might be truncated during reconfiguration
on Linux; the bug had appeared in 1.17.5.
Changes with nginx 1.23.0 21 Jun 2022
*) Change in internal API: now header lines are represented as linked
lists.
*) Change: now nginx combines arbitrary header lines with identical
names when sending to FastCGI, SCGI, and uwsgi backends, in the
$r->header_in() method of the ngx_http_perl_module, and during lookup
of the "$http_...", "$sent_http_...", "$sent_trailer_...",
"$upstream_http_...", and "$upstream_trailer_..." variables.
*) Bugfix: if there were multiple "Vary" header lines in the backend
response, nginx only used the last of them when caching.
*) Bugfix: if there were multiple "WWW-Authenticate" header lines in the
backend response and errors with code 401 were intercepted or the
"auth_request" directive was used, nginx only sent the first of the
header lines to the client.
*) Change: the logging level of the "application data after close
notify" SSL errors has been lowered from "crit" to "info".
*) Bugfix: connections might hang if nginx was built on Linux 2.6.17 or
newer, but was used on systems without EPOLLRDHUP support, notably
with epoll emulation layers; the bug had appeared in 1.17.5.
Thanks to Marcus Ball.
*) Bugfix: nginx did not cache the response if the "Expires" response
header line disabled caching, but following "Cache-Control" header
line enabled caching.
Changes with nginx 1.21.6 25 Jan 2022
*) Bugfix: when using EPOLLEXCLUSIVE on Linux client connections were
unevenly distributed among worker processes.
*) Bugfix: nginx returned the "Connection: keep-alive" header line in
responses during graceful shutdown of old worker processes.
*) Bugfix: in the "ssl_session_ticket_key" when using TLSv1.3.
Changes with nginx 1.21.5 28 Dec 2021
*) Change: now nginx is built with the PCRE2 library by default.
*) Change: now nginx always uses sendfile(SF_NODISKIO) on FreeBSD.
*) Feature: support for sendfile(SF_NOCACHE) on FreeBSD.
*) Feature: the $ssl_curve variable.
*) Bugfix: connections might hang when using HTTP/2 without SSL with the
"sendfile" and "aio" directives.
Changes with nginx 1.21.4 02 Nov 2021
*) Change: support for NPN instead of ALPN to establish HTTP/2
connections has been removed.
*) Change: now nginx rejects SSL connections if ALPN is used by the
client, but no supported protocols can be negotiated.
*) Change: the default value of the "sendfile_max_chunk" directive was
changed to 2 megabytes.
*) Feature: the "proxy_half_close" directive in the stream module.
*) Feature: the "ssl_alpn" directive in the stream module.
*) Feature: the $ssl_alpn_protocol variable.
*) Feature: support for SSL_sendfile() when using OpenSSL 3.0.
*) Feature: the "mp4_start_key_frame" directive in the
ngx_http_mp4_module.
Thanks to Tracey Jaquith.
*) Bugfix: in the $content_length variable when using chunked transfer
encoding.
*) Bugfix: after receiving a response with incorrect length from a
proxied backend nginx might nevertheless cache the connection.
Thanks to Awdhesh Mathpal.
*) Bugfix: invalid headers from backends were logged at the "info" level
instead of "error"; the bug had appeared in 1.21.1.
*) Bugfix: requests might hang when using HTTP/2 and the "aio_write"
directive.
Changes with nginx 1.21.3 07 Sep 2021
*) Change: optimization of client request body reading when using
HTTP/2.
*) Bugfix: in request body filters internal API when using HTTP/2 and
buffering of the data being processed.
Changes with nginx 1.21.2 31 Aug 2021
*) Change: now nginx rejects HTTP/1.0 requests with the
"Transfer-Encoding" header line.
*) Change: export ciphers are no longer supported.
*) Feature: OpenSSL 3.0 compatibility.
*) Feature: the "Auth-SSL-Protocol" and "Auth-SSL-Cipher" header lines
are now passed to the mail proxy authentication server.
Thanks to Rob Mueller.
*) Feature: request body filters API now permits buffering of the data
being processed.
*) Bugfix: backend SSL connections in the stream module might hang after
an SSL handshake.
*) Bugfix: the security level, which is available in OpenSSL 1.1.0 or
newer, did not affect loading of the server certificates when set
with "@SECLEVEL=N" in the "ssl_ciphers" directive.
*) Bugfix: SSL connections with gRPC backends might hang if select,
poll, or /dev/poll methods were used.
*) Bugfix: when using HTTP/2 client request body was always written to
disk if the "Content-Length" header line was not present in the
request.
Changes with nginx 1.21.1 06 Jul 2021
*) Change: now nginx always returns an error for the CONNECT method.
*) Change: now nginx always returns an error if both "Content-Length"
and "Transfer-Encoding" header lines are present in the request.
*) Change: now nginx always returns an error if spaces or control
characters are used in the request line.
*) Change: now nginx always returns an error if spaces or control
characters are used in a header name.
*) Change: now nginx always returns an error if spaces or control
characters are used in the "Host" request header line.
*) Change: optimization of configuration testing when using many
listening sockets.
*) Bugfix: nginx did not escape """, "<", ">", "\", "^", "`", "{", "|",
and "}" characters when proxying with changed URI.
*) Bugfix: SSL variables might be empty when used in logs; the bug had
appeared in 1.19.5.
*) Bugfix: keepalive connections with gRPC backends might not be closed
after receiving a GOAWAY frame.
*) Bugfix: reduced memory consumption for long-lived requests when
proxying with more than 64 buffers.
Changes with nginx 1.21.0 25 May 2021
*) Security: 1-byte memory overwrite might occur during DNS server
response processing if the "resolver" directive was used, allowing an
attacker who is able to forge UDP packets from the DNS server to
cause worker process crash or, potentially, arbitrary code execution
(CVE-2021-23017).
*) Feature: variables support in the "proxy_ssl_certificate",
"proxy_ssl_certificate_key" "grpc_ssl_certificate",
"grpc_ssl_certificate_key", "uwsgi_ssl_certificate", and
"uwsgi_ssl_certificate_key" directives.
*) Feature: the "max_errors" directive in the mail proxy module.
*) Feature: the mail proxy module supports POP3 and IMAP pipelining.
*) Feature: the "fastopen" parameter of the "listen" directive in the
stream module.
Thanks to Anbang Wen.
*) Bugfix: special characters were not escaped during automatic redirect
with appended trailing slash.
*) Bugfix: connections with clients in the mail proxy module might be
closed unexpectedly when using SMTP pipelining.
Changes with nginx 1.19.10 13 Apr 2021
*) Change: the default value of the "keepalive_requests" directive was
changed to 1000.
*) Feature: the "keepalive_time" directive.
*) Feature: the $connection_time variable.
*) Workaround: "gzip filter failed to use preallocated memory" alerts
appeared in logs when using zlib-ng.
Changes with nginx 1.19.9 30 Mar 2021
*) Bugfix: nginx could not be built with the mail proxy module, but
without the ngx_mail_ssl_module; the bug had appeared in 1.19.8.
*) Bugfix: "upstream sent response body larger than indicated content
length" errors might occur when working with gRPC backends; the bug
had appeared in 1.19.1.
*) Bugfix: nginx might not close a connection till keepalive timeout
expiration if the connection was closed by the client while
discarding the request body.
*) Bugfix: nginx might not detect that a connection was already closed
by the client when waiting for auth_delay or limit_req delay, or when
working with backends.
*) Bugfix: in the eventport method.
Changes with nginx 1.19.8 09 Mar 2021
*) Feature: flags in the "proxy_cookie_flags" directive can now contain
variables.
*) Feature: the "proxy_protocol" parameter of the "listen" directive,
the "proxy_protocol" and "set_real_ip_from" directives in mail proxy.
*) Bugfix: HTTP/2 connections were immediately closed when using
"keepalive_timeout 0"; the bug had appeared in 1.19.7.
*) Bugfix: some errors were logged as unknown if nginx was built with
glibc 2.32.
*) Bugfix: in the eventport method.
Changes with nginx 1.19.7 16 Feb 2021
*) Change: connections handling in HTTP/2 has been changed to better
match HTTP/1.x; the "http2_recv_timeout", "http2_idle_timeout", and
"http2_max_requests" directives have been removed, the
"keepalive_timeout" and "keepalive_requests" directives should be
used instead.
*) Change: the "http2_max_field_size" and "http2_max_header_size"
directives have been removed, the "large_client_header_buffers"
directive should be used instead.
*) Feature: now, if free worker connections are exhausted, nginx starts
closing not only keepalive connections, but also connections in
lingering close.
*) Bugfix: "zero size buf in output" alerts might appear in logs if an
upstream server returned an incorrect response during unbuffered
proxying; the bug had appeared in 1.19.1.
*) Bugfix: HEAD requests were handled incorrectly if the "return"
directive was used with the "image_filter" or "xslt_stylesheet"
directives.
*) Bugfix: in the "add_trailer" directive.
Changes with nginx 1.19.6 15 Dec 2020
*) Bugfix: "no live upstreams" errors if a "server" inside "upstream"
block was marked as "down".
*) Bugfix: a segmentation fault might occur in a worker process if HTTPS
was used; the bug had appeared in 1.19.5.
*) Bugfix: nginx returned the 400 response on requests like
"GET http://example.com?args HTTP/1.0".
*) Bugfix: in the ngx_http_flv_module and ngx_http_mp4_module.
Thanks to Chris Newton.
Changes with nginx 1.19.5 24 Nov 2020
*) Feature: the -e switch.
*) Feature: the same source files can now be specified in different
modules while building addon modules.
*) Bugfix: SSL shutdown did not work when lingering close was used.
*) Bugfix: "upstream sent frame for closed stream" errors might occur
when working with gRPC backends.
*) Bugfix: in request body filters internal API.
Changes with nginx 1.19.4 27 Oct 2020
*) Feature: the "ssl_conf_command", "proxy_ssl_conf_command",
"grpc_ssl_conf_command", and "uwsgi_ssl_conf_command" directives.
*) Feature: the "ssl_reject_handshake" directive.
*) Feature: the "proxy_smtp_auth" directive in mail proxy.
Changes with nginx 1.19.3 29 Sep 2020
*) Feature: the ngx_stream_set_module.
*) Feature: the "proxy_cookie_flags" directive.
*) Feature: the "userid_flags" directive.
*) Bugfix: the "stale-if-error" cache control extension was erroneously
applied if backend returned a response with status code 500, 502,
503, 504, 403, 404, or 429.
*) Bugfix: "[crit] cache file ... has too long header" messages might
appear in logs if caching was used and the backend returned responses
with the "Vary" header line.
*) Workaround: "[crit] SSL_write() failed" messages might appear in logs
when using OpenSSL 1.1.1.
*) Bugfix: "SSL_shutdown() failed (SSL: ... bad write retry)" messages
might appear in logs; the bug had appeared in 1.19.2.
*) Bugfix: a segmentation fault might occur in a worker process when
using HTTP/2 if errors with code 400 were redirected to a proxied
location using the "error_page" directive.
*) Bugfix: socket leak when using HTTP/2 and subrequests in the njs
module.
Changes with nginx 1.19.2 11 Aug 2020
*) Change: now nginx starts closing keepalive connections before all
free worker connections are exhausted, and logs a warning about this
to the error log.
*) Change: optimization of client request body reading when using
chunked transfer encoding.
*) Bugfix: memory leak if the "ssl_ocsp" directive was used.
*) Bugfix: "zero size buf in output" alerts might appear in logs if a
FastCGI server returned an incorrect response; the bug had appeared
in 1.19.1.
*) Bugfix: a segmentation fault might occur in a worker process if
different large_client_header_buffers sizes were used in different
virtual servers.
*) Bugfix: SSL shutdown might not work.
*) Bugfix: "SSL_shutdown() failed (SSL: ... bad write retry)" messages
might appear in logs.
*) Bugfix: in the ngx_http_slice_module.
*) Bugfix: in the ngx_http_xslt_filter_module.
Changes with nginx 1.19.1 07 Jul 2020
*) Change: the "lingering_close", "lingering_time", and
"lingering_timeout" directives now work when using HTTP/2.
*) Change: now extra data sent by a backend are always discarded.
*) Change: now after receiving a too short response from a FastCGI
server nginx tries to send the available part of the response to the
client, and then closes the client connection.
*) Change: now after receiving a response with incorrect length from a
gRPC backend nginx stops response processing with an error.
*) Feature: the "min_free" parameter of the "proxy_cache_path",
"fastcgi_cache_path", "scgi_cache_path", and "uwsgi_cache_path"
directives.
Thanks to Adam Bambuch.
*) Bugfix: nginx did not delete unix domain listen sockets during
graceful shutdown on the SIGQUIT signal.
*) Bugfix: zero length UDP datagrams were not proxied.
*) Bugfix: proxying to uwsgi backends using SSL might not work.
Thanks to Guanzhong Chen.
*) Bugfix: in error handling when using the "ssl_ocsp" directive.
*) Bugfix: on XFS and NFS file systems disk cache size might be
calculated incorrectly.
*) Bugfix: "negative size buf in writer" alerts might appear in logs if
a memcached server returned a malformed response.
Changes with nginx 1.19.0 26 May 2020
*) Feature: client certificate validation with OCSP.
*) Bugfix: "upstream sent frame for closed stream" errors might occur
when working with gRPC backends.
*) Bugfix: OCSP stapling might not work if the "resolver" directive was
not specified.
*) Bugfix: connections with incorrect HTTP/2 preface were not logged.
Changes with nginx 1.17.10 14 Apr 2020
*) Feature: the "auth_delay" directive.
Changes with nginx 1.17.9 03 Mar 2020
*) Change: now nginx does not allow several "Host" request header lines.
*) Bugfix: nginx ignored additional "Transfer-Encoding" request header
lines.
*) Bugfix: socket leak when using HTTP/2.
*) Bugfix: a segmentation fault might occur in a worker process if OCSP
stapling was used.
*) Bugfix: in the ngx_http_mp4_module.
*) Bugfix: nginx used status code 494 instead of 400 if errors with code
494 were redirected with the "error_page" directive.
*) Bugfix: socket leak when using subrequests in the njs module and the
"aio" directive.
Changes with nginx 1.17.8 21 Jan 2020
*) Feature: variables support in the "grpc_pass" directive.
*) Bugfix: a timeout might occur while handling pipelined requests in an
SSL connection; the bug had appeared in 1.17.5.
*) Bugfix: in the "debug_points" directive when using HTTP/2.
Thanks to Daniil Bondarev.
Changes with nginx 1.17.7 24 Dec 2019
*) Bugfix: a segmentation fault might occur on start or during
reconfiguration if the "rewrite" directive with an empty replacement
string was used in the configuration.
*) Bugfix: a segmentation fault might occur in a worker process if the
"break" directive was used with the "alias" directive or with the
"proxy_pass" directive with a URI.
*) Bugfix: the "Location" response header line might contain garbage if
the request URI was rewritten to the one containing a null character.
*) Bugfix: requests with bodies were handled incorrectly when returning
redirections with the "error_page" directive; the bug had appeared in
0.7.12.
*) Bugfix: socket leak when using HTTP/2.
*) Bugfix: a timeout might occur while handling pipelined requests in an
SSL connection; the bug had appeared in 1.17.5.
*) Bugfix: in the ngx_http_dav_module.
Changes with nginx 1.17.6 19 Nov 2019
*) Feature: the $proxy_protocol_server_addr and
$proxy_protocol_server_port variables.
*) Feature: the "limit_conn_dry_run" directive.
*) Feature: the $limit_req_status and $limit_conn_status variables.
Changes with nginx 1.17.5 22 Oct 2019
*) Feature: now nginx uses ioctl(FIONREAD), if available, to avoid
reading from a fast connection for a long time.
*) Bugfix: incomplete escaped characters at the end of the request URI
were ignored.
*) Bugfix: "/." and "/.." at the end of the request URI were not
normalized.
*) Bugfix: in the "merge_slashes" directive.
*) Bugfix: in the "ignore_invalid_headers" directive.
Thanks to Alan Kemp.
*) Bugfix: nginx could not be built with MinGW-w64 gcc 8.1 or newer.
Changes with nginx 1.17.4 24 Sep 2019
*) Change: better detection of incorrect client behavior in HTTP/2.
*) Change: in handling of not fully read client request body when
returning errors in HTTP/2.
*) Bugfix: the "worker_shutdown_timeout" directive might not work when
using HTTP/2.
*) Bugfix: a segmentation fault might occur in a worker process when
using HTTP/2 and the "proxy_request_buffering" directive.
*) Bugfix: the ECONNABORTED error log level was "crit" instead of
"error" on Windows when using SSL.
*) Bugfix: nginx ignored extra data when using chunked transfer
encoding.
*) Bugfix: nginx always returned the 500 error if the "return" directive
was used and an error occurred during reading client request body.
*) Bugfix: in memory allocation error handling.
Changes with nginx 1.17.3 13 Aug 2019
*) Security: when using HTTP/2 a client might cause excessive memory
consumption and CPU usage (CVE-2019-9511, CVE-2019-9513,
CVE-2019-9516).
*) Bugfix: "zero size buf" alerts might appear in logs when using
gzipping; the bug had appeared in 1.17.2.
*) Bugfix: a segmentation fault might occur in a worker process if the
"resolver" directive was used in SMTP proxy.
Changes with nginx 1.17.2 23 Jul 2019
*) Change: minimum supported zlib version is 1.2.0.4.
Thanks to Ilya Leoshkevich.
*) Change: the $r->internal_redirect() embedded perl method now expects
escaped URIs.
*) Feature: it is now possible to switch to a named location using the
$r->internal_redirect() embedded perl method.
*) Bugfix: in error handling in embedded perl.
*) Bugfix: a segmentation fault might occur on start or during
reconfiguration if hash bucket size larger than 64 kilobytes was used
in the configuration.
*) Bugfix: nginx might hog CPU during unbuffered proxying and when
proxying WebSocket connections if the select, poll, or /dev/poll
methods were used.
*) Bugfix: in the ngx_http_xslt_filter_module.
*) Bugfix: in the ngx_http_ssi_filter_module.
Changes with nginx 1.17.1 25 Jun 2019
*) Feature: the "limit_req_dry_run" directive.
*) Feature: when using the "hash" directive inside the "upstream" block
an empty hash key now triggers round-robin balancing.
Thanks to Niklas Keller.
*) Bugfix: a segmentation fault might occur in a worker process if
caching was used along with the "image_filter" directive, and errors
with code 415 were redirected with the "error_page" directive; the
bug had appeared in 1.11.10.
*) Bugfix: a segmentation fault might occur in a worker process if
embedded perl was used; the bug had appeared in 1.7.3.
Changes with nginx 1.17.0 21 May 2019
*) Feature: variables support in the "limit_rate" and "limit_rate_after"
directives.
*) Feature: variables support in the "proxy_upload_rate" and
"proxy_download_rate" directives in the stream module.
*) Change: minimum supported OpenSSL version is 0.9.8.
*) Change: now the postpone filter is always built.
*) Bugfix: the "include" directive did not work inside the "if" and
"limit_except" blocks.
*) Bugfix: in byte ranges processing.
Changes with nginx 1.15.12 16 Apr 2019
*) Bugfix: a segmentation fault might occur in a worker process if
variables were used in the "ssl_certificate" or "ssl_certificate_key"
directives and OCSP stapling was enabled.
Changes with nginx 1.15.11 09 Apr 2019
*) Bugfix: in the "ssl_stapling_file" directive on Windows.
Changes with nginx 1.15.10 26 Mar 2019
*) Change: when using a hostname in the "listen" directive nginx now
creates listening sockets for all addresses the hostname resolves to
(previously, only the first address was used).
*) Feature: port ranges in the "listen" directive.
*) Feature: loading of SSL certificates and secret keys from variables.
*) Workaround: the $ssl_server_name variable might be empty when using
OpenSSL 1.1.1.
*) Bugfix: nginx/Windows could not be built with Visual Studio 2015 or
newer; the bug had appeared in 1.15.9.
Changes with nginx 1.15.9 26 Feb 2019
*) Feature: variables support in the "ssl_certificate" and
"ssl_certificate_key" directives.
*) Feature: the "poll" method is now available on Windows when using
Windows Vista or newer.
*) Bugfix: if the "select" method was used on Windows and an error
occurred while establishing a backend connection, nginx waited for
the connection establishment timeout to expire.
*) Bugfix: the "proxy_upload_rate" and "proxy_download_rate" directives
in the stream module worked incorrectly when proxying UDP datagrams.
Changes with nginx 1.15.8 25 Dec 2018
*) Feature: the $upstream_bytes_sent variable.
Thanks to Piotr Sikora.
*) Feature: new directives in vim syntax highlighting scripts.
Thanks to Gena Makhomed.
*) Bugfix: in the "proxy_cache_background_update" directive.
*) Bugfix: in the "geo" directive when using unix domain listen sockets.
*) Workaround: the "ignoring stale global SSL error ... bad length"
alerts might appear in logs when using the "ssl_early_data" directive
with OpenSSL.
*) Bugfix: in nginx/Windows.
*) Bugfix: in the ngx_http_autoindex_module on 32-bit platforms.
Changes with nginx 1.15.7 27 Nov 2018
*) Feature: the "proxy_requests" directive in the stream module.
*) Feature: the "delay" parameter of the "limit_req" directive.
Thanks to Vladislav Shabanov and Peter Shchuchkin.
*) Bugfix: memory leak on errors during reconfiguration.
*) Bugfix: in the $upstream_response_time, $upstream_connect_time, and
$upstream_header_time variables.
*) Bugfix: a segmentation fault might occur in a worker process if the
ngx_http_mp4_module was used on 32-bit platforms.
Changes with nginx 1.15.6 06 Nov 2018
*) Security: when using HTTP/2 a client might cause excessive memory
consumption (CVE-2018-16843) and CPU usage (CVE-2018-16844).
*) Security: processing of a specially crafted mp4 file with the
ngx_http_mp4_module might result in worker process memory disclosure
(CVE-2018-16845).
*) Feature: the "proxy_socket_keepalive", "fastcgi_socket_keepalive",
"grpc_socket_keepalive", "memcached_socket_keepalive",
"scgi_socket_keepalive", and "uwsgi_socket_keepalive" directives.
*) Bugfix: if nginx was built with OpenSSL 1.1.0 and used with OpenSSL
1.1.1, the TLS 1.3 protocol was always enabled.
*) Bugfix: working with gRPC backends might result in excessive memory
consumption.
Changes with nginx 1.15.5 02 Oct 2018
*) Bugfix: a segmentation fault might occur in a worker process when
using OpenSSL 1.1.0h or newer; the bug had appeared in 1.15.4.
*) Bugfix: of minor potential bugs.
Changes with nginx 1.15.4 25 Sep 2018
*) Feature: now the "ssl_early_data" directive can be used with OpenSSL.
*) Bugfix: in the ngx_http_uwsgi_module.
Thanks to Chris Caputo.
*) Bugfix: connections with some gRPC backends might not be cached when
using the "keepalive" directive.
*) Bugfix: a socket leak might occur when using the "error_page"
directive to redirect early request processing errors, notably errors
with code 400.
*) Bugfix: the "return" directive did not change the response code when
returning errors if the request was redirected by the "error_page"
directive.
*) Bugfix: standard error pages and responses of the
ngx_http_autoindex_module module used the "bgcolor" attribute, and
might be displayed incorrectly when using custom color settings in
browsers.
Thanks to Nova DasSarma.
*) Change: the logging level of the "no suitable key share" and "no
suitable signature algorithm" SSL errors has been lowered from "crit"
to "info".
Changes with nginx 1.15.3 28 Aug 2018
*) Feature: now TLSv1.3 can be used with BoringSSL.
*) Feature: the "ssl_early_data" directive, currently available with
BoringSSL.
*) Feature: the "keepalive_timeout" and "keepalive_requests" directives
in the "upstream" block.
*) Bugfix: the ngx_http_dav_module did not truncate destination file
when copying a file over an existing one with the COPY method.
*) Bugfix: the ngx_http_dav_module used zero access rights on the
destination file and did not preserve file modification time when
moving a file between different file systems with the MOVE method.
*) Bugfix: the ngx_http_dav_module used default access rights when
copying a file with the COPY method.
*) Workaround: some clients might not work when using HTTP/2; the bug
had appeared in 1.13.5.
*) Bugfix: nginx could not be built with LibreSSL 2.8.0.
Changes with nginx 1.15.2 24 Jul 2018
*) Feature: the $ssl_preread_protocol variable in the
ngx_stream_ssl_preread_module.
*) Feature: now when using the "reset_timedout_connection" directive
nginx will reset connections being closed with the 444 code.
*) Change: a logging level of the "http request", "https proxy request",
"unsupported protocol", and "version too low" SSL errors has been
lowered from "crit" to "info".
*) Bugfix: DNS requests were not resent if initial sending of a request
failed.
*) Bugfix: the "reuseport" parameter of the "listen" directive was
ignored if the number of worker processes was specified after the
"listen" directive.
*) Bugfix: when using OpenSSL 1.1.0 or newer it was not possible to
switch off "ssl_prefer_server_ciphers" in a virtual server if it was
switched on in the default server.
*) Bugfix: SSL session reuse with upstream servers did not work with the
TLS 1.3 protocol.
Changes with nginx 1.15.1 03 Jul 2018
*) Feature: the "random" directive inside the "upstream" block.
*) Feature: improved performance when using the "hash" and "ip_hash"
directives with the "zone" directive.
*) Feature: the "reuseport" parameter of the "listen" directive now uses
SO_REUSEPORT_LB on FreeBSD 12.
*) Bugfix: HTTP/2 server push did not work if SSL was terminated by a
proxy server in front of nginx.
*) Bugfix: the "tcp_nopush" directive was always used on backend
connections.
*) Bugfix: sending a disk-buffered request body to a gRPC backend might
fail.
Changes with nginx 1.15.0 05 Jun 2018
*) Change: the "ssl" directive is deprecated; the "ssl" parameter of the
"listen" directive should be used instead.
*) Change: now nginx detects missing SSL certificates during
configuration testing when using the "ssl" parameter of the "listen"
directive.
*) Feature: now the stream module can handle multiple incoming UDP
datagrams from a client within a single session.
*) Bugfix: it was possible to specify an incorrect response code in the
"proxy_cache_valid" directive.
*) Bugfix: nginx could not be built by gcc 8.1.
*) Bugfix: logging to syslog stopped on local IP address changes.
*) Bugfix: nginx could not be built by clang with CUDA SDK installed;
the bug had appeared in 1.13.8.
*) Bugfix: "getsockopt(TCP_FASTOPEN) ... failed" messages might appear
in logs during binary upgrade when using unix domain listen sockets
on FreeBSD.
*) Bugfix: nginx could not be built on Fedora 28 Linux.
*) Bugfix: request processing rate might exceed configured rate when
using the "limit_req" directive.
*) Bugfix: in handling of client addresses when using unix domain listen
sockets to work with datagrams on Linux.
*) Bugfix: in memory allocation error handling.
Changes with nginx 1.13.12 10 Apr 2018
*) Bugfix: connections with gRPC backends might be closed unexpectedly
when returning a large response.
Changes with nginx 1.13.11 03 Apr 2018
*) Feature: the "proxy_protocol" parameter of the "listen" directive now
supports the PROXY protocol version 2.
*) Bugfix: nginx could not be built with OpenSSL 1.1.1 statically on
Linux.
*) Bugfix: in the "http_404", "http_500", etc. parameters of the
"proxy_next_upstream" directive.
Changes with nginx 1.13.10 20 Mar 2018
*) Feature: the "set" parameter of the "include" SSI directive now
allows writing arbitrary responses to a variable; the
"subrequest_output_buffer_size" directive defines maximum response
size.
*) Feature: now nginx uses clock_gettime(CLOCK_MONOTONIC) if available,
to avoid timeouts being incorrectly triggered on system time changes.
*) Feature: the "escape=none" parameter of the "log_format" directive.
Thanks to Johannes Baiter and Calin Don.
*) Feature: the $ssl_preread_alpn_protocols variable in the
ngx_stream_ssl_preread_module.
*) Feature: the ngx_http_grpc_module.
*) Bugfix: in memory allocation error handling in the "geo" directive.
*) Bugfix: when using variables in the "auth_basic_user_file" directive
a null character might appear in logs.
Thanks to Vadim Filimonov.
Changes with nginx 1.13.9 20 Feb 2018
*) Feature: HTTP/2 server push support; the "http2_push" and
"http2_push_preload" directives.
*) Bugfix: "header already sent" alerts might appear in logs when using
cache; the bug had appeared in 1.9.13.
*) Bugfix: a segmentation fault might occur in a worker process if the
"ssl_verify_client" directive was used and no SSL certificate was
specified in a virtual server.
*) Bugfix: in the ngx_http_v2_module.
*) Bugfix: in the ngx_http_dav_module.
Changes with nginx 1.13.8 26 Dec 2017
*) Feature: now nginx automatically preserves the CAP_NET_RAW capability
in worker processes when using the "transparent" parameter of the
"proxy_bind", "fastcgi_bind", "memcached_bind", "scgi_bind", and
"uwsgi_bind" directives.
*) Feature: improved CPU cache line size detection.
Thanks to Debayan Ghosh.
*) Feature: new directives in vim syntax highlighting scripts.
Thanks to Gena Makhomed.
*) Bugfix: binary upgrade refused to work if nginx was re-parented to a
process with PID different from 1 after its parent process has
finished.
*) Bugfix: the ngx_http_autoindex_module incorrectly handled requests
with bodies.
*) Bugfix: in the "proxy_limit_rate" directive when used with the
"keepalive" directive.
*) Bugfix: some parts of a response might be buffered when using
"proxy_buffering off" if the client connection used SSL.
Thanks to Patryk Lesiewicz.
*) Bugfix: in the "proxy_cache_background_update" directive.
*) Bugfix: it was not possible to start a parameter with a variable in
the "${name}" form with the name in curly brackets without enclosing
the parameter into single or double quotes.
Changes with nginx 1.13.7 21 Nov 2017
*) Bugfix: in the $upstream_status variable.
*) Bugfix: a segmentation fault might occur in a worker process if a
backend returned a "101 Switching Protocols" response to a
subrequest.
*) Bugfix: a segmentation fault occurred in a master process if a shared
memory zone size was changed during a reconfiguration and the
reconfiguration failed.
*) Bugfix: in the ngx_http_fastcgi_module.
*) Bugfix: nginx returned the 500 error if parameters without variables
were specified in the "xslt_stylesheet" directive.
*) Workaround: "gzip filter failed to use preallocated memory" alerts
appeared in logs when using a zlib library variant from Intel.
*) Bugfix: the "worker_shutdown_timeout" directive did not work when
using mail proxy and when proxying WebSocket connections.
Changes with nginx 1.13.6 10 Oct 2017
*) Bugfix: switching to the next upstream server in the stream module
did not work when using the "ssl_preread" directive.
*) Bugfix: in the ngx_http_v2_module.
Thanks to Piotr Sikora.
*) Bugfix: nginx did not support dates after the year 2038 on 32-bit
platforms with 64-bit time_t.
*) Bugfix: in handling of dates prior to the year 1970 and after the
year 10000.
*) Bugfix: in the stream module timeouts waiting for UDP datagrams from
upstream servers were not logged or logged at the "info" level
instead of "error".
*) Bugfix: when using HTTP/2 nginx might return the 400 response without
logging the reason.
*) Bugfix: in processing of corrupted cache files.
*) Bugfix: cache control headers were ignored when caching errors
intercepted by error_page.
*) Bugfix: when using HTTP/2 client request body might be corrupted.
*) Bugfix: in handling of client addresses when using unix domain
sockets.
*) Bugfix: nginx hogged CPU when using the "hash ... consistent"
directive in the upstream block if large weights were used and all or
most of the servers were unavailable.
Changes with nginx 1.13.5 05 Sep 2017
*) Feature: the $ssl_client_escaped_cert variable.
*) Bugfix: the "ssl_session_ticket_key" directive and the "include"
parameter of the "geo" directive did not work on Windows.
*) Bugfix: incorrect response length was returned on 32-bit platforms
when requesting more than 4 gigabytes with multiple ranges.
*) Bugfix: the "expires modified" directive and processing of the
"If-Range" request header line did not use the response last
modification time if proxying without caching was used.
Changes with nginx 1.13.4 08 Aug 2017
*) Feature: the ngx_http_mirror_module.
*) Bugfix: client connections might be dropped during configuration
testing when using the "reuseport" parameter of the "listen"
directive on Linux.
*) Bugfix: request body might not be available in subrequests if it was
saved to a file and proxying was used.
*) Bugfix: cleaning cache based on the "max_size" parameter did not work
on Windows.
*) Bugfix: any shared memory allocation required 4096 bytes on Windows.
*) Bugfix: nginx worker might be terminated abnormally when using the
"zone" directive inside the "upstream" block on Windows.
Changes with nginx 1.13.3 11 Jul 2017
*) Security: a specially crafted request might result in an integer
overflow and incorrect processing of ranges in the range filter,
potentially resulting in sensitive information leak (CVE-2017-7529).
Changes with nginx 1.13.2 27 Jun 2017
*) Change: nginx now returns 200 instead of 416 when a range starting
with 0 is requested from an empty file.
*) Feature: the "add_trailer" directive.
Thanks to Piotr Sikora.
*) Bugfix: nginx could not be built on Cygwin and NetBSD; the bug had
appeared in 1.13.0.
*) Bugfix: nginx could not be built under MSYS2 / MinGW 64-bit.
Thanks to Orgad Shaneh.
*) Bugfix: a segmentation fault might occur in a worker process when
using SSI with many includes and proxy_pass with variables.
*) Bugfix: in the ngx_http_v2_module.
Thanks to Piotr Sikora.
Changes with nginx 1.13.1 30 May 2017
*) Feature: now a hostname can be used as the "set_real_ip_from"
directive parameter.
*) Feature: vim syntax highlighting scripts improvements.
*) Feature: the "worker_cpu_affinity" directive now works on DragonFly
BSD.
Thanks to Sepherosa Ziehau.
*) Bugfix: SSL renegotiation on backend connections did not work when
using OpenSSL before 1.1.0.
*) Workaround: nginx could not be built with Oracle Developer Studio
12.5.
*) Workaround: now cache manager ignores long locked cache entries when
cleaning cache based on the "max_size" parameter.
*) Bugfix: client SSL connections were immediately closed if deferred
accept and the "proxy_protocol" parameter of the "listen" directive
were used.
*) Bugfix: in the "proxy_cache_background_update" directive.
*) Workaround: now the "tcp_nodelay" directive sets the TCP_NODELAY
option before an SSL handshake.
Changes with nginx 1.13.0 25 Apr 2017
*) Change: SSL renegotiation is now allowed on backend connections.
*) Feature: the "rcvbuf" and "sndbuf" parameters of the "listen"
directives of the mail proxy and stream modules.
*) Feature: the "return" and "error_page" directives can now be used to
return 308 redirections.
Thanks to Simon Leblanc.
*) Feature: the "TLSv1.3" parameter of the "ssl_protocols" directive.
*) Feature: when logging signals nginx now logs PID of the process which
sent the signal.
*) Bugfix: in memory allocation error handling.
*) Bugfix: if a server in the stream module listened on a wildcard
address, the source address of a response UDP datagram could differ
from the original datagram destination address.
Changes with nginx 1.11.13 04 Apr 2017
*) Feature: the "http_429" parameter of the "proxy_next_upstream",
"fastcgi_next_upstream", "scgi_next_upstream", and
"uwsgi_next_upstream" directives.
Thanks to Piotr Sikora.
*) Bugfix: in memory allocation error handling.
*) Bugfix: requests might hang when using the "sendfile" and
"timer_resolution" directives on Linux.
*) Bugfix: requests might hang when using the "sendfile" and "aio_write"
directives with subrequests.
*) Bugfix: in the ngx_http_v2_module.
Thanks to Piotr Sikora.
*) Bugfix: a segmentation fault might occur in a worker process when
using HTTP/2.
*) Bugfix: requests might hang when using the "limit_rate",
"sendfile_max_chunk", "limit_req" directives, or the $r->sleep()
embedded perl method with subrequests.
*) Bugfix: in the ngx_http_slice_module.
Changes with nginx 1.11.12 24 Mar 2017
*) Bugfix: nginx might hog CPU; the bug had appeared in 1.11.11.
Changes with nginx 1.11.11 21 Mar 2017
*) Feature: the "worker_shutdown_timeout" directive.
*) Feature: vim syntax highlighting scripts improvements.
Thanks to Wei-Ko Kao.
*) Bugfix: a segmentation fault might occur in a worker process if the
$limit_rate variable was set to an empty string.
*) Bugfix: the "proxy_cache_background_update",
"fastcgi_cache_background_update", "scgi_cache_background_update",
and "uwsgi_cache_background_update" directives might work incorrectly
if the "if" directive was used.
*) Bugfix: a segmentation fault might occur in a worker process if
number of large_client_header_buffers in a virtual server was
different from the one in the default server.
*) Bugfix: in the mail proxy server.
Changes with nginx 1.11.10 14 Feb 2017
*) Change: cache header format has been changed, previously cached
responses will be invalidated.
*) Feature: support of "stale-while-revalidate" and "stale-if-error"
extensions in the "Cache-Control" backend response header line.
*) Feature: the "proxy_cache_background_update",
"fastcgi_cache_background_update", "scgi_cache_background_update",
and "uwsgi_cache_background_update" directives.
*) Feature: nginx is now able to cache responses with the "Vary" header
line up to 128 characters long (instead of 42 characters in previous
versions).
*) Feature: the "build" parameter of the "server_tokens" directive.
Thanks to Tom Thorogood.
*) Bugfix: "[crit] SSL_write() failed" messages might appear in logs
when handling requests with the "Expect: 100-continue" request header
line.
*) Bugfix: the ngx_http_slice_module did not work in named locations.
*) Bugfix: a segmentation fault might occur in a worker process when
using AIO after an "X-Accel-Redirect" redirection.
*) Bugfix: reduced memory consumption for long-lived requests using
gzipping.
Changes with nginx 1.11.9 24 Jan 2017
*) Bugfix: nginx might hog CPU when using the stream module; the bug had
appeared in 1.11.5.
*) Bugfix: EXTERNAL authentication mechanism in mail proxy was accepted
even if it was not enabled in the configuration.
*) Bugfix: a segmentation fault might occur in a worker process if the
"ssl_verify_client" directive of the stream module was used.
*) Bugfix: the "ssl_verify_client" directive of the stream module might
not work.
*) Bugfix: closing keepalive connections due to no free worker
connections might be too aggressive.
Thanks to Joel Cunningham.
*) Bugfix: an incorrect response might be returned when using the
"sendfile" directive on FreeBSD and macOS; the bug had appeared in
1.7.8.
*) Bugfix: a truncated response might be stored in cache when using the
"aio_write" directive.
*) Bugfix: a socket leak might occur when using the "aio_write"
directive.
Changes with nginx 1.11.8 27 Dec 2016
*) Feature: the "absolute_redirect" directive.
*) Feature: the "escape" parameter of the "log_format" directive.
*) Feature: client SSL certificates verification in the stream module.
*) Feature: the "ssl_session_ticket_key" directive supports AES256
encryption of TLS session tickets when used with 80-byte keys.
*) Feature: vim-commentary support in vim scripts.
Thanks to Armin Grodon.
*) Bugfix: recursion when evaluating variables was not limited.
*) Bugfix: in the ngx_stream_ssl_preread_module.
*) Bugfix: 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.
*) Bugfix: nginx/Windows could not be built with 64-bit Visual Studio.
*) Bugfix: nginx/Windows could not be built with OpenSSL 1.1.0.
Changes with nginx 1.11.7 13 Dec 2016
*) Change: 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".
*) Feature: the $ssl_ciphers, $ssl_curves, $ssl_client_v_start,
$ssl_client_v_end, and $ssl_client_v_remain variables.
*) Feature: the "volatile" parameter of the "map" directive.
*) Bugfix: dependencies specified for a module were ignored while
building dynamic modules.
*) Bugfix: 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.
*) Bugfix: a segmentation fault might occur in a worker process when
using HTTP/2; the bug had appeared in 1.11.3.
*) Bugfix: in the ngx_http_mp4_module.
Thanks to Congcong Hu.
*) Bugfix: in the ngx_http_perl_module.
Changes with nginx 1.11.6 15 Nov 2016
*) Change: format of the $ssl_client_s_dn and $ssl_client_i_dn variables
has been changed to follow RFC 2253 (RFC 4514); values in the old
format are available in the $ssl_client_s_dn_legacy and
$ssl_client_i_dn_legacy variables.
*) Change: when storing temporary files in a cache directory they will
be stored in the same subdirectories as corresponding cache files
instead of a separate subdirectory for temporary files.
*) Feature: EXTERNAL authentication mechanism support in mail proxy.
Thanks to Robert Norris.
*) Feature: WebP support in the ngx_http_image_filter_module.
*) Feature: variables support in the "proxy_method" directive.
Thanks to Dmitry Lazurkin.
*) Feature: the "http2_max_requests" directive in the
ngx_http_v2_module.
*) Feature: the "proxy_cache_max_range_offset",
"fastcgi_cache_max_range_offset", "scgi_cache_max_range_offset", and
"uwsgi_cache_max_range_offset" directives.
*) Bugfix: graceful shutdown of old worker processes might require
infinite time when using HTTP/2.
*) Bugfix: in the ngx_http_mp4_module.
*) Bugfix: "ignore long locked inactive cache entry" alerts might appear
in logs when proxying WebSocket connections with caching enabled.
*) Bugfix: nginx did not write anything to log and returned a response
with code 502 instead of 504 when a timeout occurred during an SSL
handshake to a backend.
Changes with nginx 1.11.5 11 Oct 2016
*) Change: the --with-ipv6 configure option was removed, now IPv6
support is configured automatically.
*) Change: now if there are no available servers in an upstream, nginx
will not reset number of failures of all servers as it previously
did, but will wait for fail_timeout to expire.
*) Feature: the ngx_stream_ssl_preread_module.
*) Feature: the "server" directive in the "upstream" context supports
the "max_conns" parameter.
*) Feature: the --with-compat configure option.
*) Feature: "manager_files", "manager_threshold", and "manager_sleep"
parameters of the "proxy_cache_path", "fastcgi_cache_path",
"scgi_cache_path", and "uwsgi_cache_path" directives.
*) Bugfix: flags passed by the --with-ld-opt configure option were not
used while building perl module.
*) Bugfix: in the "add_after_body" directive when used with the
"sub_filter" directive.
*) Bugfix: in the $realip_remote_addr variable.
*) Bugfix: the "dav_access", "proxy_store_access",
"fastcgi_store_access", "scgi_store_access", and "uwsgi_store_access"
directives ignored permissions specified for user.
*) Bugfix: unix domain listen sockets might not be inherited during
binary upgrade on Linux.
*) Bugfix: nginx returned the 400 response on requests with the "-"
character in the HTTP method.
Changes with nginx 1.11.4 13 Sep 2016
*) Feature: the $upstream_bytes_received variable.
*) Feature: the $bytes_received, $session_time, $protocol, $status,
$upstream_addr, $upstream_bytes_sent, $upstream_bytes_received,
$upstream_connect_time, $upstream_first_byte_time, and
$upstream_session_time variables in the stream module.
*) Feature: the ngx_stream_log_module.
*) Feature: the "proxy_protocol" parameter of the "listen" directive,
the $proxy_protocol_addr and $proxy_protocol_port variables in the
stream module.
*) Feature: the ngx_stream_realip_module.
*) Bugfix: nginx could not be built with the stream module and the
ngx_http_ssl_module, but without ngx_stream_ssl_module; the bug had
appeared in 1.11.3.
*) Feature: the IP_BIND_ADDRESS_NO_PORT socket option was not used; the
bug had appeared in 1.11.2.
*) Bugfix: in the "ranges" parameter of the "geo" directive.
*) Bugfix: an incorrect response might be returned when using the "aio
threads" and "sendfile" directives; the bug had appeared in 1.9.13.
Changes with nginx 1.11.3 26 Jul 2016
*) Change: now the "accept_mutex" directive is turned off by default.
*) Feature: now nginx uses EPOLLEXCLUSIVE on Linux.
*) Feature: the ngx_stream_geo_module.
*) Feature: the ngx_stream_geoip_module.
*) Feature: the ngx_stream_split_clients_module.
*) Feature: variables support in the "proxy_pass" and "proxy_ssl_name"
directives in the stream module.
*) Bugfix: socket leak when using HTTP/2.
*) Bugfix: in configure tests.
Thanks to Piotr Sikora.
Changes with nginx 1.11.2 05 Jul 2016
*) Change: now nginx always uses internal MD5 and SHA1 implementations;
the --with-md5 and --with-sha1 configure options were canceled.
*) Feature: variables support in the stream module.
*) Feature: the ngx_stream_map_module.
*) Feature: the ngx_stream_return_module.
*) Feature: a port can be specified in the "proxy_bind", "fastcgi_bind",
"memcached_bind", "scgi_bind", and "uwsgi_bind" directives.
*) Feature: now nginx uses the IP_BIND_ADDRESS_NO_PORT socket option
when available.
*) Bugfix: a segmentation fault might occur in a worker process when
using HTTP/2 and the "proxy_request_buffering" directive.
*) Bugfix: the "Content-Length" request header line was always added to
requests passed to backends, including requests without body, when
using HTTP/2.
*) Bugfix: "http request count is zero" alerts might appear in logs when
using HTTP/2.
*) Bugfix: unnecessary buffering might occur when using the "sub_filter"
directive; the issue had appeared in 1.9.4.
Changes with nginx 1.11.1 31 May 2016
*) Security: a segmentation fault might occur in a worker process while
writing a specially crafted request body to a temporary file
(CVE-2016-4450); the bug had appeared in 1.3.9.
Changes with nginx 1.11.0 24 May 2016
*) Feature: the "transparent" parameter of the "proxy_bind",
"fastcgi_bind", "memcached_bind", "scgi_bind", and "uwsgi_bind"
directives.
*) Feature: the $request_id variable.
*) Feature: the "map" directive supports combinations of multiple
variables as resulting values.
*) Feature: now nginx checks if EPOLLRDHUP events are supported by
kernel, and optimizes connection handling accordingly if the "epoll"
method is used.
*) Feature: the "ssl_certificate" and "ssl_certificate_key" directives
can be specified multiple times to load certificates of different
types (for example, RSA and ECDSA).
*) Feature: the "ssl_ecdh_curve" directive now allows specifying a list
of curves when using OpenSSL 1.0.2 or newer; by default a list built
into OpenSSL is used.
*) Change: to use DHE ciphers it is now required to specify parameters
using the "ssl_dhparam" directive.
*) Feature: the $proxy_protocol_port variable.
*) Feature: the $realip_remote_port variable in the
ngx_http_realip_module.
*) Feature: the ngx_http_realip_module is now able to set the client
port in addition to the address.
*) Change: the "421 Misdirected Request" response now used when
rejecting requests to a virtual server different from one negotiated
during an SSL handshake; this improves interoperability with some
HTTP/2 clients when using client certificates.
*) Change: HTTP/2 clients can now start sending request body
immediately; the "http2_body_preread_size" directive controls size of
the buffer used before nginx will start reading client request body.
*) Bugfix: cached error responses were not updated when using the
"proxy_cache_bypass" directive.
Changes with nginx 1.9.15 19 Apr 2016
*) Bugfix: "recv() failed" errors might occur when using HHVM as a
FastCGI server.
*) Bugfix: when using HTTP/2 and the "limit_req" or "auth_request"
directives a timeout or a "client violated flow control" error might
occur while reading client request body; the bug had appeared in
1.9.14.
*) Workaround: a response might not be shown by some browsers if HTTP/2
was used and client request body was not fully read; the bug had
appeared in 1.9.14.
*) Bugfix: connections might hang when using the "aio threads"
directive.
Thanks to Mindaugas Rasiukevicius.
Changes with nginx 1.9.14 05 Apr 2016
*) Feature: OpenSSL 1.1.0 compatibility.
*) Feature: the "proxy_request_buffering", "fastcgi_request_buffering",
"scgi_request_buffering", and "uwsgi_request_buffering" directives
now work with HTTP/2.
*) Bugfix: "zero size buf in output" alerts might appear in logs when
using HTTP/2.
*) Bugfix: the "client_max_body_size" directive might work incorrectly
when using HTTP/2.
*) Bugfix: of minor bugs in logging.
Changes with nginx 1.9.13 29 Mar 2016
*) Change: non-idempotent requests (POST, LOCK, PATCH) are no longer
passed to the next server by default if a request has been sent to a
backend; the "non_idempotent" parameter of the "proxy_next_upstream"
directive explicitly allows retrying such requests.
*) Feature: the ngx_http_perl_module can be built dynamically.
*) Feature: UDP support in the stream module.
*) Feature: the "aio_write" directive.
*) Feature: now cache manager monitors number of elements in caches and
tries to avoid cache keys zone overflows.
*) Bugfix: "task already active" and "second aio post" alerts might
appear in logs when using the "sendfile" and "aio" directives with
subrequests.
*) Bugfix: "zero size buf in output" alerts might appear in logs if
caching was used and a client closed a connection prematurely.
*) Bugfix: connections with clients might be closed needlessly if
caching was used.
Thanks to Justin Li.
*) Bugfix: nginx might hog CPU if the "sendfile" directive was used on
Linux or Solaris and a file being sent was changed during sending.
*) Bugfix: connections might hang when using the "sendfile" and "aio
threads" directives.
*) Bugfix: in the "proxy_pass", "fastcgi_pass", "scgi_pass", and
"uwsgi_pass" directives when using variables.
Thanks to Piotr Sikora.
*) Bugfix: in the ngx_http_sub_filter_module.
*) Bugfix: if an error occurred in a cached backend connection, the
request was passed to the next server regardless of the
proxy_next_upstream directive.
*) Bugfix: "CreateFile() failed" errors when creating temporary files on
Windows.
Changes with nginx 1.9.12 24 Feb 2016
*) Feature: Huffman encoding of response headers in HTTP/2.
Thanks to Vlad Krasnov.
*) Feature: the "worker_cpu_affinity" directive now supports more than
64 CPUs.
*) Bugfix: compatibility with 3rd party C++ modules; the bug had
appeared in 1.9.11.
Thanks to Piotr Sikora.
*) Bugfix: nginx could not be built statically with OpenSSL on Linux;
the bug had appeared in 1.9.11.
*) Bugfix: the "add_header ... always" directive with an empty value did
not delete "Last-Modified" and "ETag" header lines from error
responses.
*) Workaround: "called a function you should not call" and "shutdown
while in init" messages might appear in logs when using OpenSSL
1.0.2f.
*) Bugfix: invalid headers might be logged incorrectly.
*) Bugfix: socket leak when using HTTP/2.
*) Bugfix: in the ngx_http_v2_module.
Changes with nginx 1.9.11 09 Feb 2016
*) Feature: TCP support in resolver.
*) Feature: dynamic modules.
*) Bugfix: the $request_length variable did not include size of request
headers when using HTTP/2.
*) Bugfix: in the ngx_http_v2_module.
Changes with nginx 1.9.10 26 Jan 2016
*) Security: invalid pointer dereference might occur during DNS server
response processing if the "resolver" directive was used, allowing an
attacker who is able to forge UDP packets from the DNS server to
cause segmentation fault in a worker process (CVE-2016-0742).
*) Security: use-after-free condition might occur during CNAME response
processing if the "resolver" directive was used, allowing an attacker
who is able to trigger name resolution to cause segmentation fault in
a worker process, or might have potential other impact
(CVE-2016-0746).
*) Security: CNAME resolution was insufficiently limited if the
"resolver" directive was used, allowing an attacker who is able to
trigger arbitrary name resolution to cause excessive resource
consumption in worker processes (CVE-2016-0747).
*) Feature: the "auto" parameter of the "worker_cpu_affinity" directive.
*) Bugfix: the "proxy_protocol" parameter of the "listen" directive did
not work with IPv6 listen sockets.
*) Bugfix: connections to upstream servers might be cached incorrectly
when using the "keepalive" directive.
*) Bugfix: proxying used the HTTP method of the original request after
an "X-Accel-Redirect" redirection.
Changes with nginx 1.9.9 09 Dec 2015
*) Bugfix: proxying to unix domain sockets did not work when using
variables; the bug had appeared in 1.9.8.
Changes with nginx 1.9.8 08 Dec 2015
*) Feature: pwritev() support.
*) Feature: the "include" directive inside the "upstream" block.
*) Feature: the ngx_http_slice_module.
*) Bugfix: a segmentation fault might occur in a worker process when
using LibreSSL; the bug had appeared in 1.9.6.
*) Bugfix: nginx could not be built on OS X in some cases.
Changes with nginx 1.9.7 17 Nov 2015
*) Feature: the "nohostname" parameter of logging to syslog.
*) Feature: the "proxy_cache_convert_head" directive.
*) Feature: the $realip_remote_addr variable in the
ngx_http_realip_module.
*) Bugfix: the "expires" directive might not work when using variables.
*) Bugfix: a segmentation fault might occur in a worker process when
using HTTP/2; the bug had appeared in 1.9.6.
*) Bugfix: if nginx was built with the ngx_http_v2_module it was
possible to use the HTTP/2 protocol even if the "http2" parameter of
the "listen" directive was not specified.
*) Bugfix: in the ngx_http_v2_module.
Changes with nginx 1.9.6 27 Oct 2015
*) Bugfix: a segmentation fault might occur in a worker process when
using HTTP/2.
Thanks to Piotr Sikora and Denis Andzakovic.
*) Bugfix: the $server_protocol variable was empty when using HTTP/2.
*) Bugfix: backend SSL connections in the stream module might be timed
out unexpectedly.
*) Bugfix: a segmentation fault might occur in a worker process if
different ssl_session_cache settings were used in different virtual
servers.
*) Bugfix: nginx/Windows could not be built with MinGW gcc; the bug had
appeared in 1.9.4.
Thanks to Kouhei Sutou.
*) Bugfix: time was not updated when the timer_resolution directive was
used on Windows.
*) Miscellaneous minor fixes and improvements.
Thanks to Markus Linnala, Kurtis Nusbaum and Piotr Sikora.
Changes with nginx 1.9.5 22 Sep 2015
*) Feature: the ngx_http_v2_module (replaces ngx_http_spdy_module).
Thanks to Dropbox and Automattic for sponsoring this work.
*) Change: now the "output_buffers" directive uses two buffers by
default.
*) Change: now nginx limits subrequests recursion, not simultaneous
subrequests.
*) Change: now nginx checks the whole cache key when returning a
response from cache.
Thanks to Gena Makhomed and Sergey Brester.
*) Bugfix: "header already sent" alerts might appear in logs when using
cache; the bug had appeared in 1.7.5.
*) Bugfix: "writev() failed (4: Interrupted system call)" errors might
appear in logs when using CephFS and the "timer_resolution" directive
on Linux.
*) Bugfix: in invalid configurations handling.
Thanks to Markus Linnala.
*) Bugfix: a segmentation fault occurred in a worker process if the
"sub_filter" directive was used at http level; the bug had appeared
in 1.9.4.
Changes with nginx 1.9.4 18 Aug 2015
*) Change: the "proxy_downstream_buffer" and "proxy_upstream_buffer"
directives of the stream module are replaced with the
"proxy_buffer_size" directive.
*) Feature: the "tcp_nodelay" directive in the stream module.
*) Feature: multiple "sub_filter" directives can be used simultaneously.
*) Feature: variables support in the search string of the "sub_filter"
directive.
*) Workaround: configuration testing might fail under Linux OpenVZ.
Thanks to Gena Makhomed.
*) Bugfix: old worker processes might hog CPU after reconfiguration with
a large number of worker_connections.
*) Bugfix: a segmentation fault might occur in a worker process if the
"try_files" and "alias" directives were used inside a location given
by a regular expression; the bug had appeared in 1.7.1.
*) Bugfix: the "try_files" directive inside a nested location given by a
regular expression worked incorrectly if the "alias" directive was
used in the outer location.
*) Bugfix: in hash table initialization error handling.
*) Bugfix: nginx could not be built with Visual Studio 2015.
Changes with nginx 1.9.3 14 Jul 2015
*) Change: duplicate "http", "mail", and "stream" blocks are now
disallowed.
*) Feature: connection limiting in the stream module.
*) Feature: data rate limiting in the stream module.
*) Bugfix: the "zone" directive inside the "upstream" block did not work
on Windows.
*) Bugfix: compatibility with LibreSSL in the stream module.
Thanks to Piotr Sikora.
*) Bugfix: in the "--builddir" configure parameter.
Thanks to Piotr Sikora.
*) Bugfix: the "ssl_stapling_file" directive did not work; the bug had
appeared in 1.9.2.
Thanks to Faidon Liambotis and Brandon Black.
*) Bugfix: a segmentation fault might occur in a worker process if the
"ssl_stapling" directive was used; the bug had appeared in 1.9.2.
Thanks to Matthew Baldwin.
Changes with nginx 1.9.2 16 Jun 2015
*) Feature: the "backlog" parameter of the "listen" directives of the
mail proxy and stream modules.
*) Feature: the "allow" and "deny" directives in the stream module.
*) Feature: the "proxy_bind" directive in the stream module.
*) Feature: the "proxy_protocol" directive in the stream module.
*) Feature: the -T switch.
*) Feature: the REQUEST_SCHEME parameter added to the fastcgi.conf,
fastcgi_params, scgi_params, and uwsgi_params standard configuration
files.
*) Bugfix: the "reuseport" parameter of the "listen" directive of the
stream module did not work.
*) Bugfix: OCSP stapling might return an expired OCSP response in some
cases.
Changes with nginx 1.9.1 26 May 2015
*) Change: now SSLv3 protocol is disabled by default.
*) Change: some long deprecated directives are not supported anymore.
*) Feature: the "reuseport" parameter of the "listen" directive.
Thanks to Yingqi Lu at Intel and Sepherosa Ziehau.
*) Feature: the $upstream_connect_time variable.
*) Bugfix: in the "hash" directive on big-endian platforms.
*) Bugfix: nginx might fail to start on some old Linux variants; the bug
had appeared in 1.7.11.
*) Bugfix: in IP address parsing.
Thanks to Sergey Polovko.
Changes with nginx 1.9.0 28 Apr 2015
*) Change: obsolete aio and rtsig event methods have been removed.
*) Feature: the "zone" directive inside the "upstream" block.
*) Feature: the stream module.
*) Feature: byte ranges support in the ngx_http_memcached_module.
Thanks to Martin Mlynář.
*) Feature: shared memory can now be used on Windows versions with
address space layout randomization.
Thanks to Sergey Brester.
*) Feature: the "error_log" directive can now be used on mail and server
levels in mail proxy.
*) Bugfix: the "proxy_protocol" parameter of the "listen" directive did
not work if not specified in the first "listen" directive for a
listen socket.
Changes with nginx 1.7.12 07 Apr 2015
*) Feature: now the "tcp_nodelay" directive works with backend SSL
connections.
*) Feature: now thread pools can be used to read cache file headers.
*) Bugfix: in the "proxy_request_buffering" directive.
*) Bugfix: a segmentation fault might occur in a worker process when
using thread pools on Linux.
*) Bugfix: in error handling when using the "ssl_stapling" directive.
Thanks to Filipe da Silva.
*) Bugfix: in the ngx_http_spdy_module.
Changes with nginx 1.7.11 24 Mar 2015
*) Change: the "sendfile" parameter of the "aio" directive is
deprecated; now nginx automatically uses AIO to pre-load data for
sendfile if both "aio" and "sendfile" directives are used.
*) Feature: experimental thread pools support.
*) Feature: the "proxy_request_buffering", "fastcgi_request_buffering",
"scgi_request_buffering", and "uwsgi_request_buffering" directives.
*) Feature: request body filters experimental API.
*) Feature: client SSL certificates support in mail proxy.
Thanks to Sven Peter, Franck Levionnois, and Filipe Da Silva.
*) Feature: startup speedup when using the "hash ... consistent"
directive in the upstream block.
Thanks to Wai Keen Woon.
*) Feature: debug logging into a cyclic memory buffer.
*) Bugfix: in hash table handling.
Thanks to Chris West.
*) Bugfix: in the "proxy_cache_revalidate" directive.
*) Bugfix: SSL connections might hang if deferred accept or the
"proxy_protocol" parameter of the "listen" directive were used.
Thanks to James Hamlin.
*) Bugfix: the $upstream_response_time variable might contain a wrong
value if the "image_filter" directive was used.
*) Bugfix: in integer overflow handling.
Thanks to Régis Leroy.
*) Bugfix: it was not possible to enable SSLv3 with LibreSSL.
*) Bugfix: the "ignoring stale global SSL error ... called a function
you should not call" alerts appeared in logs when using LibreSSL.
*) Bugfix: certificates specified by the "ssl_client_certificate" and
"ssl_trusted_certificate" directives were inadvertently used to
automatically construct certificate chains.
Changes with nginx 1.7.10 10 Feb 2015
*) Feature: the "use_temp_path" parameter of the "proxy_cache_path",
"fastcgi_cache_path", "scgi_cache_path", and "uwsgi_cache_path"
directives.
*) Feature: the $upstream_header_time variable.
*) Workaround: now on disk overflow nginx tries to write error logs once
a second only.
*) Bugfix: the "try_files" directive did not ignore normal files while
testing directories.
Thanks to Damien Tournoud.
*) Bugfix: alerts "sendfile() failed" if the "sendfile" directive was
used on OS X; the bug had appeared in 1.7.8.
*) Bugfix: alerts "sem_post() failed" might appear in logs.
*) Bugfix: nginx could not be built with musl libc.
Thanks to James Taylor.
*) Bugfix: nginx could not be built on Tru64 UNIX.
Thanks to Goetz T. Fischer.
Changes with nginx 1.7.9 23 Dec 2014
*) Feature: variables support in the "proxy_cache", "fastcgi_cache",
"scgi_cache", and "uwsgi_cache" directives.
*) Feature: variables support in the "expires" directive.
*) Feature: loading of secret keys from hardware tokens with OpenSSL
engines.
Thanks to Dmitrii Pichulin.
*) Feature: the "autoindex_format" directive.
*) Bugfix: cache revalidation is now only used for responses with 200
and 206 status codes.
Thanks to Piotr Sikora.
*) Bugfix: the "TE" client request header line was passed to backends
while proxying.
*) Bugfix: the "proxy_pass", "fastcgi_pass", "scgi_pass", and
"uwsgi_pass" directives might not work correctly inside the "if" and
"limit_except" blocks.
*) Bugfix: the "proxy_store" directive with the "on" parameter was
ignored if the "proxy_store" directive with an explicitly specified
file path was used on a previous level.
*) Bugfix: nginx could not be built with BoringSSL.
Thanks to Lukas Tribus.
Changes with nginx 1.7.8 02 Dec 2014
*) Change: now the "If-Modified-Since", "If-Range", etc. client request
header lines are passed to a backend while caching if nginx knows in
advance that the response will not be cached (e.g., when using
proxy_cache_min_uses).
*) Change: now after proxy_cache_lock_timeout nginx sends a request to a
backend with caching disabled; the new directives
"proxy_cache_lock_age", "fastcgi_cache_lock_age",
"scgi_cache_lock_age", and "uwsgi_cache_lock_age" specify a time
after which the lock will be released and another attempt to cache a
response will be made.
*) Change: the "log_format" directive can now be used only at http
level.
*) Feature: the "proxy_ssl_certificate", "proxy_ssl_certificate_key",
"proxy_ssl_password_file", "uwsgi_ssl_certificate",
"uwsgi_ssl_certificate_key", and "uwsgi_ssl_password_file"
directives.
Thanks to Piotr Sikora.
*) Feature: it is now possible to switch to a named location using
"X-Accel-Redirect".
Thanks to Toshikuni Fukaya.
*) Feature: now the "tcp_nodelay" directive works with SPDY connections.
*) Feature: new directives in vim syntax highliting scripts.
Thanks to Peter Wu.
*) Bugfix: nginx ignored the "s-maxage" value in the "Cache-Control"
backend response header line.
Thanks to Piotr Sikora.
*) Bugfix: in the ngx_http_spdy_module.
Thanks to Piotr Sikora.
*) Bugfix: in the "ssl_password_file" directive when using OpenSSL
0.9.8zc, 1.0.0o, 1.0.1j.
*) Bugfix: alerts "header already sent" appeared in logs if the
"post_action" directive was used; the bug had appeared in 1.5.4.
*) Bugfix: alerts "the http output chain is empty" might appear in logs
if the "postpone_output 0" directive was used with SSI includes.
*) Bugfix: in the "proxy_cache_lock" directive with SSI subrequests.
Thanks to Yichun Zhang.
Changes with nginx 1.7.7 28 Oct 2014
*) Change: now nginx takes into account the "Vary" header line in a
backend response while caching.
*) Feature: the "proxy_force_ranges", "fastcgi_force_ranges",
"scgi_force_ranges", and "uwsgi_force_ranges" directives.
*) Feature: the "proxy_limit_rate", "fastcgi_limit_rate",
"scgi_limit_rate", and "uwsgi_limit_rate" directives.
*) Feature: the "Vary" parameter of the "proxy_ignore_headers",
"fastcgi_ignore_headers", "scgi_ignore_headers", and
"uwsgi_ignore_headers" directives.
*) Bugfix: the last part of a response received from a backend with
unbufferred proxy might not be sent to a client if "gzip" or "gunzip"
directives were used.
*) Bugfix: in the "proxy_cache_revalidate" directive.
Thanks to Piotr Sikora.
*) Bugfix: in error handling.
Thanks to Yichun Zhang and Daniil Bondarev.
*) Bugfix: in the "proxy_next_upstream_tries" and
"proxy_next_upstream_timeout" directives.
Thanks to Feng Gu.
*) Bugfix: nginx/Windows could not be built with MinGW-w64 gcc.
Thanks to Kouhei Sutou.
Changes with nginx 1.7.6 30 Sep 2014
*) Change: the deprecated "limit_zone" directive is not supported
anymore.
*) Feature: the "limit_conn_zone" and "limit_req_zone" directives now
can be used with combinations of multiple variables.
*) Bugfix: request body might be transmitted incorrectly when retrying a
FastCGI request to the next upstream server.
*) Bugfix: in logging to syslog.
Changes with nginx 1.7.5 16 Sep 2014
*) Security: it was possible to reuse SSL sessions in unrelated contexts
if a shared SSL session cache or the same TLS session ticket key was
used for multiple "server" blocks (CVE-2014-3616).
Thanks to Antoine Delignat-Lavaud.
*) Change: now the "stub_status" directive does not require a parameter.
*) Feature: the "always" parameter of the "add_header" directive.
*) Feature: the "proxy_next_upstream_tries",
"proxy_next_upstream_timeout", "fastcgi_next_upstream_tries",
"fastcgi_next_upstream_timeout", "memcached_next_upstream_tries",
"memcached_next_upstream_timeout", "scgi_next_upstream_tries",
"scgi_next_upstream_timeout", "uwsgi_next_upstream_tries", and
"uwsgi_next_upstream_timeout" directives.
*) Bugfix: in the "if" parameter of the "access_log" directive.
*) Bugfix: in the ngx_http_perl_module.
Thanks to Piotr Sikora.
*) Bugfix: the "listen" directive of the mail proxy module did not allow
to specify more than two parameters.
*) Bugfix: the "sub_filter" directive did not work with a string to
replace consisting of a single character.
*) Bugfix: requests might hang if resolver was used and a timeout
occurred during a DNS request.
*) Bugfix: in the ngx_http_spdy_module when using with AIO.
*) Bugfix: a segmentation fault might occur in a worker process if the
"set" directive was used to change the "$http_...", "$sent_http_...",
or "$upstream_http_..." variables.
*) Bugfix: in memory allocation error handling.
Thanks to Markus Linnala and Feng Gu.
Changes with nginx 1.7.4 05 Aug 2014
*) Security: pipelined commands were not discarded after STARTTLS
command in SMTP proxy (CVE-2014-3556); the bug had appeared in 1.5.6.
Thanks to Chris Boulton.
*) Change: URI escaping now uses uppercase hexadecimal digits.
Thanks to Piotr Sikora.
*) Feature: now nginx can be build with BoringSSL and LibreSSL.
Thanks to Piotr Sikora.
*) Bugfix: requests might hang if resolver was used and a DNS server
returned a malformed response; the bug had appeared in 1.5.8.
*) Bugfix: in the ngx_http_spdy_module.
Thanks to Piotr Sikora.
*) Bugfix: the $uri variable might contain garbage when returning errors
with code 400.
Thanks to Sergey Bobrov.
*) Bugfix: in error handling in the "proxy_store" directive and the
ngx_http_dav_module.
Thanks to Feng Gu.
*) Bugfix: a segmentation fault might occur if logging of errors to
syslog was used; the bug had appeared in 1.7.1.
*) Bugfix: the $geoip_latitude, $geoip_longitude, $geoip_dma_code, and
$geoip_area_code variables might not work.
Thanks to Yichun Zhang.
*) Bugfix: in memory allocation error handling.
Thanks to Tatsuhiko Kubo and Piotr Sikora.
Changes with nginx 1.7.3 08 Jul 2014
*) Feature: weak entity tags are now preserved on response
modifications, and strong ones are changed to weak.
*) Feature: cache revalidation now uses If-None-Match header if
possible.
*) Feature: the "ssl_password_file" directive.
*) Bugfix: the If-None-Match request header line was ignored if there
was no Last-Modified header in a response returned from cache.
*) Bugfix: "peer closed connection in SSL handshake" messages were
logged at "info" level instead of "error" while connecting to
backends.
*) Bugfix: in the ngx_http_dav_module module in nginx/Windows.
*) Bugfix: SPDY connections might be closed prematurely if caching was
used.
Changes with nginx 1.7.2 17 Jun 2014
*) Feature: the "hash" directive inside the "upstream" block.
*) Feature: defragmentation of free shared memory blocks.
Thanks to Wandenberg Peixoto and Yichun Zhang.
*) Bugfix: a segmentation fault might occur in a worker process if the
default value of the "access_log" directive was used; the bug had
appeared in 1.7.0.
Thanks to Piotr Sikora.
*) Bugfix: trailing slash was mistakenly removed from the last parameter
of the "try_files" directive.
*) Bugfix: nginx could not be built on OS X in some cases.
*) Bugfix: in the ngx_http_spdy_module.
Changes with nginx 1.7.1 27 May 2014
*) Feature: the "$upstream_cookie_..." variables.
*) Feature: the $ssl_client_fingerprint variable.
*) Feature: the "error_log" and "access_log" directives now support
logging to syslog.
*) Feature: the mail proxy now logs client port on connect.
*) Bugfix: memory leak if the "ssl_stapling" directive was used.
Thanks to Filipe da Silva.
*) Bugfix: the "alias" directive used inside a location given by a
regular expression worked incorrectly if the "if" or "limit_except"
directives were used.
*) Bugfix: the "charset" directive did not set a charset to encoded
backend responses.
*) Bugfix: a "proxy_pass" directive without URI part might use original
request after the $args variable was set.
Thanks to Yichun Zhang.
*) Bugfix: in the "none" parameter in the "smtp_auth" directive; the bug
had appeared in 1.5.6.
Thanks to Svyatoslav Nikolsky.
*) Bugfix: if sub_filter and SSI were used together, then responses
might be transferred incorrectly.
*) Bugfix: nginx could not be built with the --with-file-aio option on
Linux/aarch64.
Changes with nginx 1.7.0 24 Apr 2014
*) Feature: backend SSL certificate verification.
*) Feature: support for SNI while working with SSL backends.
*) Feature: the $ssl_server_name variable.
*) Feature: the "if" parameter of the "access_log" directive.
Changes with nginx 1.5.13 08 Apr 2014
*) Change: improved hash table handling; the default values of the
"variables_hash_max_size" and "types_hash_bucket_size" were changed
to 1024 and 64 respectively.
*) Feature: the ngx_http_mp4_module now supports the "end" argument.
*) Feature: byte ranges support in the ngx_http_mp4_module and while
saving responses to cache.
*) Bugfix: alerts "ngx_slab_alloc() failed: no memory" no longer logged
when using shared memory in the "ssl_session_cache" directive and in
the ngx_http_limit_req_module.
*) Bugfix: the "underscores_in_headers" directive did not allow
underscore as a first character of a header.
Thanks to Piotr Sikora.
*) Bugfix: cache manager might hog CPU on exit in nginx/Windows.
*) Bugfix: nginx/Windows terminated abnormally if the
"ssl_session_cache" directive was used with the "shared" parameter.
*) Bugfix: in the ngx_http_spdy_module.
Changes with nginx 1.5.12 18 Mar 2014
*) Security: a heap memory buffer overflow might occur in a worker
process while handling a specially crafted request by
ngx_http_spdy_module, potentially resulting in arbitrary code
execution (CVE-2014-0133).
Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr.
Manuel Sadosky, Buenos Aires, Argentina.
*) Feature: the "proxy_protocol" parameters of the "listen" and
"real_ip_header" directives, the $proxy_protocol_addr variable.
*) Bugfix: in the "fastcgi_next_upstream" directive.
Thanks to Lucas Molas.
Changes with nginx 1.5.11 04 Mar 2014
*) Security: memory corruption might occur in a worker process on 32-bit
platforms while handling a specially crafted request by
ngx_http_spdy_module, potentially resulting in arbitrary code
execution (CVE-2014-0088); the bug had appeared in 1.5.10.
Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr.
Manuel Sadosky, Buenos Aires, Argentina.
*) Feature: the $ssl_session_reused variable.
*) Bugfix: the "client_max_body_size" directive might not work when
reading a request body using chunked transfer encoding; the bug had
appeared in 1.3.9.
Thanks to Lucas Molas.
*) Bugfix: a segmentation fault might occur in a worker process when
proxying WebSocket connections.
*) Bugfix: a segmentation fault might occur in a worker process if the
ngx_http_spdy_module was used on 32-bit platforms; the bug had
appeared in 1.5.10.
*) Bugfix: the $upstream_status variable might contain wrong data if the
"proxy_cache_use_stale" or "proxy_cache_revalidate" directives were
used.
Thanks to Piotr Sikora.
*) Bugfix: a segmentation fault might occur in a worker process if
errors with code 400 were redirected to a named location using the
"error_page" directive.
*) Bugfix: nginx/Windows could not be built with Visual Studio 2013.
Changes with nginx 1.5.10 04 Feb 2014
*) Feature: the ngx_http_spdy_module now uses SPDY 3.1 protocol.
Thanks to Automattic and MaxCDN for sponsoring this work.
*) Feature: the ngx_http_mp4_module now skips tracks too short for a
seek requested.
*) Bugfix: a segmentation fault might occur in a worker process if the
$ssl_session_id variable was used in logs; the bug had appeared in
1.5.9.
*) Bugfix: the $date_local and $date_gmt variables used wrong format
outside of the ngx_http_ssi_filter_module.
*) Bugfix: client connections might be immediately closed if deferred
accept was used; the bug had appeared in 1.3.15.
*) Bugfix: alerts "getsockopt(TCP_FASTOPEN) ... failed" appeared in logs
during binary upgrade on Linux; the bug had appeared in 1.5.8.
Thanks to Piotr Sikora.
Changes with nginx 1.5.9 22 Jan 2014
*) Change: now nginx expects escaped URIs in "X-Accel-Redirect" headers.
*) Feature: the "ssl_buffer_size" directive.
*) Feature: the "limit_rate" directive can now be used to rate limit
responses sent in SPDY connections.
*) Feature: the "spdy_chunk_size" directive.
*) Feature: the "ssl_session_tickets" directive.
Thanks to Dirkjan Bussink.
*) Bugfix: the $ssl_session_id variable contained full session
serialized instead of just a session id.
Thanks to Ivan Ristić.
*) Bugfix: nginx incorrectly handled escaped "?" character in the
"include" SSI command.
*) Bugfix: the ngx_http_dav_module did not unescape destination URI of
the COPY and MOVE methods.
*) Bugfix: resolver did not understand domain names with a trailing dot.
Thanks to Yichun Zhang.
*) Bugfix: alerts "zero size buf in output" might appear in logs while
proxying; the bug had appeared in 1.3.9.
*) Bugfix: a segmentation fault might occur in a worker process if the
ngx_http_spdy_module was used.
*) Bugfix: proxied WebSocket connections might hang right after
handshake if the select, poll, or /dev/poll methods were used.
*) Bugfix: the "xclient" directive of the mail proxy module incorrectly
handled IPv6 client addresses.
Changes with nginx 1.5.8 17 Dec 2013
*) Feature: IPv6 support in resolver.
*) Feature: the "listen" directive supports the "fastopen" parameter.
Thanks to Mathew Rodley.
*) Feature: SSL support in the ngx_http_uwsgi_module.
Thanks to Roberto De Ioris.
*) Feature: vim syntax highlighting scripts were added to contrib.
Thanks to Evan Miller.
*) Bugfix: a timeout might occur while reading client request body in an
SSL connection using chunked transfer encoding.
*) Bugfix: the "master_process" directive did not work correctly in
nginx/Windows.
*) Bugfix: the "setfib" parameter of the "listen" directive might not
work.
*) Bugfix: in the ngx_http_spdy_module.
Changes with nginx 1.5.7 19 Nov 2013
*) Security: a character following an unescaped space in a request line
was handled incorrectly (CVE-2013-4547); the bug had appeared in
0.8.41.
Thanks to Ivan Fratric of the Google Security Team.
*) Change: a logging level of auth_basic errors about no user/password
provided has been lowered from "error" to "info".
*) Feature: the "proxy_cache_revalidate", "fastcgi_cache_revalidate",
"scgi_cache_revalidate", and "uwsgi_cache_revalidate" directives.
*) Feature: the "ssl_session_ticket_key" directive.
Thanks to Piotr Sikora.
*) Bugfix: the directive "add_header Cache-Control ''" added a
"Cache-Control" response header line with an empty value.
*) Bugfix: the "satisfy any" directive might return 403 error instead of
401 if auth_request and auth_basic directives were used.
Thanks to Jan Marc Hoffmann.
*) Bugfix: the "accept_filter" and "deferred" parameters of the "listen"
directive were ignored for listen sockets created during binary
upgrade.
Thanks to Piotr Sikora.
*) Bugfix: some data received from a backend with unbufferred proxy
might not be sent to a client immediately if "gzip" or "gunzip"
directives were used.
Thanks to Yichun Zhang.
*) Bugfix: in error handling in ngx_http_gunzip_filter_module.
*) Bugfix: responses might hang if the ngx_http_spdy_module was used
with the "auth_request" directive.
*) Bugfix: memory leak in nginx/Windows.
Changes with nginx 1.5.6 01 Oct 2013
*) Feature: the "fastcgi_buffering" directive.
*) Feature: the "proxy_ssl_protocols" and "proxy_ssl_ciphers"
directives.
Thanks to Piotr Sikora.
*) Feature: optimization of SSL handshakes when using long certificate
chains.
*) Feature: the mail proxy supports SMTP pipelining.
*) Bugfix: in the ngx_http_auth_basic_module when using "$apr1$"
password encryption method.
Thanks to Markus Linnala.
*) Bugfix: in MacOSX, Cygwin, and nginx/Windows incorrect location might
be used to process a request if locations were given using characters
in different cases.
*) Bugfix: automatic redirect with appended trailing slash for proxied
locations might not work.
*) Bugfix: in the mail proxy server.
*) Bugfix: in the ngx_http_spdy_module.
Changes with nginx 1.5.5 17 Sep 2013
*) Change: now nginx assumes HTTP/1.0 by default if it is not able to
detect protocol reliably.
*) Feature: the "disable_symlinks" directive now uses O_PATH on Linux.
*) Feature: now nginx uses EPOLLRDHUP events to detect premature
connection close by clients if the "epoll" method is used.
*) Bugfix: in the "valid_referers" directive if the "server_names"
parameter was used.
*) Bugfix: the $request_time variable did not work in nginx/Windows.
*) Bugfix: in the "image_filter" directive.
Thanks to Lanshun Zhou.
*) Bugfix: OpenSSL 1.0.1f compatibility.
Thanks to Piotr Sikora.
Changes with nginx 1.5.4 27 Aug 2013
*) Change: the "js" extension MIME type has been changed to
"application/javascript"; default value of the "charset_types"
directive was changed accordingly.
*) Change: now the "image_filter" directive with the "size" parameter
returns responses with the "application/json" MIME type.
*) Feature: the ngx_http_auth_request_module.
*) Bugfix: a segmentation fault might occur on start or during
reconfiguration if the "try_files" directive was used with an empty
parameter.
*) Bugfix: memory leak if relative paths were specified using variables
in the "root" or "auth_basic_user_file" directives.
*) Bugfix: the "valid_referers" directive incorrectly executed regular
expressions if a "Referer" header started with "https://".
Thanks to Liangbin Li.
*) Bugfix: responses might hang if subrequests were used and an SSL
handshake error happened during subrequest processing.
Thanks to Aviram Cohen.
*) Bugfix: in the ngx_http_autoindex_module.
*) Bugfix: in the ngx_http_spdy_module.
Changes with nginx 1.5.3 30 Jul 2013
*) Change in internal API: now u->length defaults to -1 if working with
backends in unbuffered mode.
*) Change: now after receiving an incomplete response from a backend
server nginx tries to send an available part of the response to a
client, and then closes client connection.
*) Bugfix: a segmentation fault might occur in a worker process if the
ngx_http_spdy_module was used with the "client_body_in_file_only"
directive.
*) Bugfix: the "so_keepalive" parameter of the "listen" directive might
be handled incorrectly on DragonFlyBSD.
Thanks to Sepherosa Ziehau.
*) Bugfix: in the ngx_http_xslt_filter_module.
*) Bugfix: in the ngx_http_sub_filter_module.
Changes with nginx 1.5.2 02 Jul 2013
*) Feature: now several "error_log" directives can be used.
*) Bugfix: the $r->header_in() embedded perl method did not return value
of the "Cookie" and "X-Forwarded-For" request header lines; the bug
had appeared in 1.3.14.
*) Bugfix: in the ngx_http_spdy_module.
Thanks to Jim Radford.
*) Bugfix: nginx could not be built on Linux with x32 ABI.
Thanks to Serguei Ivantsov.
Changes with nginx 1.5.1 04 Jun 2013
*) Feature: the "ssi_last_modified", "sub_filter_last_modified", and
"xslt_last_modified" directives.
Thanks to Alexey Kolpakov.
*) Feature: the "http_403" parameter of the "proxy_next_upstream",
"fastcgi_next_upstream", "scgi_next_upstream", and
"uwsgi_next_upstream" directives.
*) Feature: the "allow" and "deny" directives now support unix domain
sockets.
*) Bugfix: nginx could not be built with the ngx_mail_ssl_module, but
without ngx_http_ssl_module; the bug had appeared in 1.3.14.
*) Bugfix: in the "proxy_set_body" directive.
Thanks to Lanshun Zhou.
*) Bugfix: in the "lingering_time" directive.
Thanks to Lanshun Zhou.
*) Bugfix: the "fail_timeout" parameter of the "server" directive in the
"upstream" context might not work if "max_fails" parameter was used;
the bug had appeared in 1.3.0.
*) Bugfix: a segmentation fault might occur in a worker process if the
"ssl_stapling" directive was used.
Thanks to Piotr Sikora.
*) Bugfix: in the mail proxy server.
Thanks to Filipe Da Silva.
*) Bugfix: nginx/Windows might stop accepting connections if several
worker processes were used.
Changes with nginx 1.5.0 07 May 2013
*) Security: a stack-based buffer overflow might occur in a worker
process while handling a specially crafted request, potentially
resulting in arbitrary code execution (CVE-2013-2028); the bug had
appeared in 1.3.9.
Thanks to Greg MacManus, iSIGHT Partners Labs.
Changes with nginx 1.4.0 24 Apr 2013
*) Bugfix: nginx could not be built with the ngx_http_perl_module if the
--with-openssl option was used; the bug had appeared in 1.3.16.
*) Bugfix: in a request body handling in the ngx_http_perl_module; the
bug had appeared in 1.3.9.
Changes with nginx 1.3.16 16 Apr 2013
*) Bugfix: a segmentation fault might occur in a worker process if
subrequests were used; the bug had appeared in 1.3.9.
*) Bugfix: the "tcp_nodelay" directive caused an error if a WebSocket
connection was proxied into a unix domain socket.
*) Bugfix: the $upstream_response_length variable has an incorrect value
"0" if buffering was not used.
Thanks to Piotr Sikora.
*) Bugfix: in the eventport and /dev/poll methods.
Changes with nginx 1.3.15 26 Mar 2013
*) Change: opening and closing a connection without sending any data in
it is no longer logged to access_log with error code 400.
*) Feature: the ngx_http_spdy_module.
Thanks to Automattic for sponsoring this work.
*) Feature: the "limit_req_status" and "limit_conn_status" directives.
Thanks to Nick Marden.
*) Feature: the "image_filter_interlace" directive.
Thanks to Ian Babrou.
*) Feature: $connections_waiting variable in the
ngx_http_stub_status_module.
*) Feature: the mail proxy module now supports IPv6 backends.
*) Bugfix: request body might be transmitted incorrectly when retrying a
request to the next upstream server; the bug had appeared in 1.3.9.
Thanks to Piotr Sikora.
*) Bugfix: in the "client_body_in_file_only" directive; the bug had
appeared in 1.3.9.
*) Bugfix: responses might hang if subrequests were used and a DNS error
happened during subrequest processing.
Thanks to Lanshun Zhou.
*) Bugfix: in backend usage accounting.
Changes with nginx 1.3.14 05 Mar 2013
*) Feature: $connections_active, $connections_reading, and
$connections_writing variables in the ngx_http_stub_status_module.
*) Feature: support of WebSocket connections in the
ngx_http_uwsgi_module and ngx_http_scgi_module.
*) Bugfix: in virtual servers handling with SNI.
*) Bugfix: new sessions were not always stored if the "ssl_session_cache
shared" directive was used and there was no free space in shared
memory.
Thanks to Piotr Sikora.
*) Bugfix: multiple X-Forwarded-For headers were handled incorrectly.
Thanks to Neal Poole for sponsoring this work.
*) Bugfix: in the ngx_http_mp4_module.
Thanks to Gernot Vormayr.
Changes with nginx 1.3.13 19 Feb 2013
*) Change: a compiler with name "cc" is now used by default.
*) Feature: support for proxying of WebSocket connections.
Thanks to Apcera and CloudBees for sponsoring this work.
*) Feature: the "auth_basic_user_file" directive supports "{SHA}"
password encryption method.
Thanks to Louis Opter.
Changes with nginx 1.3.12 05 Feb 2013
*) Feature: variables support in the "proxy_bind", "fastcgi_bind",
"memcached_bind", "scgi_bind", and "uwsgi_bind" directives.
*) Feature: the $pipe, $request_length, $time_iso8601, and $time_local
variables can now be used not only in the "log_format" directive.
Thanks to Kiril Kalchev.
*) Feature: IPv6 support in the ngx_http_geoip_module.
Thanks to Gregor Kališnik.
*) Bugfix: in the "proxy_method" directive.
*) Bugfix: a segmentation fault might occur in a worker process if
resolver was used with the poll method.
*) Bugfix: nginx might hog CPU during SSL handshake with a backend if
the select, poll, or /dev/poll methods were used.
*) Bugfix: the "[crit] SSL_write() failed (SSL:)" error.
*) Bugfix: in the "client_body_in_file_only" directive; the bug had
appeared in 1.3.9.
*) Bugfix: in the "fastcgi_keep_conn" directive.
Changes with nginx 1.3.11 10 Jan 2013
*) Bugfix: a segmentation fault might occur if logging was used; the bug
had appeared in 1.3.10.
*) Bugfix: the "proxy_pass" directive did not work with IP addresses
without port specified; the bug had appeared in 1.3.10.
*) Bugfix: a segmentation fault occurred on start or during
reconfiguration if the "keepalive" directive was specified more than
once in a single upstream block.
*) Bugfix: parameter "default" of the "geo" directive did not set
default value for IPv6 addresses.
Changes with nginx 1.3.10 25 Dec 2012
*) Change: domain names specified in configuration file are now resolved
to IPv6 addresses as well as IPv4 ones.
*) Change: now if the "include" directive with mask is used on Unix
systems, included files are sorted in alphabetical order.
*) Change: the "add_header" directive adds headers to 201 responses.
*) Feature: the "geo" directive now supports IPv6 addresses in CIDR
notation.
*) Feature: the "flush" and "gzip" parameters of the "access_log"
directive.
*) Feature: variables support in the "auth_basic" directive.
*) Bugfix: nginx could not be built with the ngx_http_perl_module in
some cases.
*) Bugfix: a segmentation fault might occur in a worker process if the
ngx_http_xslt_module was used.
*) Bugfix: nginx could not be built on MacOSX in some cases.
Thanks to Piotr Sikora.
*) Bugfix: the "limit_rate" directive with high rates might result in
truncated responses on 32-bit platforms.
Thanks to Alexey Antropov.
*) Bugfix: a segmentation fault might occur in a worker process if the
"if" directive was used.
Thanks to Piotr Sikora.
*) Bugfix: a "100 Continue" response was issued with "413 Request Entity
Too Large" responses.
*) Bugfix: the "image_filter", "image_filter_jpeg_quality" and
"image_filter_sharpen" directives might be inherited incorrectly.
Thanks to Ian Babrou.
*) Bugfix: "crypt_r() failed" errors might appear if the "auth_basic"
directive was used on Linux.
*) Bugfix: in backup servers handling.
Thanks to Thomas Chen.
*) Bugfix: proxied HEAD requests might return incorrect response if the
"gzip" directive was used.
Changes with nginx 1.3.9 27 Nov 2012
*) Feature: support for chunked transfer encoding while reading client
request body.
*) Feature: the $request_time and $msec variables can now be used not
only in the "log_format" directive.
*) Bugfix: cache manager and cache loader processes might not be able to
start if more than 512 listen sockets were used.
*) Bugfix: in the ngx_http_dav_module.
Changes with nginx 1.3.8 30 Oct 2012
*) Feature: the "optional_no_ca" parameter of the "ssl_verify_client"
directive.
Thanks to Mike Kazantsev and Eric O'Connor.
*) Feature: the $bytes_sent, $connection, and $connection_requests
variables can now be used not only in the "log_format" directive.
Thanks to Benjamin Grössing.
*) Feature: the "auto" parameter of the "worker_processes" directive.
*) Bugfix: "cache file ... has md5 collision" alert.
*) Bugfix: in the ngx_http_gunzip_filter_module.
*) Bugfix: in the "ssl_stapling" directive.
Changes with nginx 1.3.7 02 Oct 2012
*) Feature: OCSP stapling support.
Thanks to Comodo, DigiCert and GlobalSign for sponsoring this work.
*) Feature: the "ssl_trusted_certificate" directive.
*) Feature: resolver now randomly rotates addresses returned from cache.
Thanks to Anton Jouline.
*) Bugfix: OpenSSL 0.9.7 compatibility.
Changes with nginx 1.3.6 12 Sep 2012
*) Feature: the ngx_http_gunzip_filter_module.
*) Feature: the "memcached_gzip_flag" directive.
*) Feature: the "always" parameter of the "gzip_static" directive.
*) Bugfix: in the "limit_req" directive; the bug had appeared in 1.1.14.
Thanks to Charles Chen.
*) Bugfix: nginx could not be built by gcc 4.7 with -O2 optimization if
the --with-ipv6 option was used.
Changes with nginx 1.3.5 21 Aug 2012
*) Change: the ngx_http_mp4_module module no longer skips tracks in
formats other than H.264 and AAC.
*) Bugfix: a segmentation fault might occur in a worker process if the
"map" directive was used with variables as values.
*) Bugfix: a segmentation fault might occur in a worker process if the
"geo" directive was used with the "ranges" parameter but without the
"default" parameter; the bug had appeared in 0.8.43.
Thanks to Zhen Chen and Weibin Yao.
*) Bugfix: in the -p command-line parameter handling.
*) Bugfix: in the mail proxy server.
*) Bugfix: of minor potential bugs.
Thanks to Coverity.
*) Bugfix: nginx/Windows could not be built with Visual Studio 2005
Express.
Thanks to HAYASHI Kentaro.
Changes with nginx 1.3.4 31 Jul 2012
*) Change: the "ipv6only" parameter is now turned on by default for
listening IPv6 sockets.
*) Feature: the Clang compiler support.
*) Bugfix: extra listening sockets might be created.
Thanks to Roman Odaisky.
*) Bugfix: nginx/Windows might hog CPU if a worker process failed to
start.
Thanks to Ricardo Villalobos Guevara.
*) Bugfix: the "proxy_pass_header", "fastcgi_pass_header",
"scgi_pass_header", "uwsgi_pass_header", "proxy_hide_header",
"fastcgi_hide_header", "scgi_hide_header", and "uwsgi_hide_header"
directives might be inherited incorrectly.
Changes with nginx 1.3.3 10 Jul 2012
*) Feature: entity tags support and the "etag" directive.
*) Bugfix: trailing dot in a source value was not ignored if the "map"
directive was used with the "hostnames" parameter.
*) Bugfix: incorrect location might be used to process a request if a
URI was changed via a "rewrite" directive before an internal redirect
to a named location.
Changes with nginx 1.3.2 26 Jun 2012
*) Change: the "single" parameter of the "keepalive" directive is now
ignored.
*) Change: SSL compression is now disabled when using all versions of
OpenSSL, including ones prior to 1.0.0.
*) Feature: it is now possible to use the "ip_hash" directive to balance
IPv6 clients.
*) Feature: the $status variable can now be used not only in the
"log_format" directive.
*) Bugfix: a segmentation fault might occur in a worker process on
shutdown if the "resolver" directive was used.
*) Bugfix: a segmentation fault might occur in a worker process if the
ngx_http_mp4_module was used.
*) Bugfix: in the ngx_http_mp4_module.
*) Bugfix: a segmentation fault might occur in a worker process if
conflicting wildcard server names were used.
*) Bugfix: nginx might be terminated abnormally on a SIGBUS signal on
ARM platform.
*) Bugfix: an alert "sendmsg() failed (9: Bad file number)" on HP-UX
while reconfiguration.
Changes with nginx 1.3.1 05 Jun 2012
*) Security: now nginx/Windows ignores trailing dot in URI path
component, and does not allow URIs with ":$" in it.
Thanks to Vladimir Kochetkov, Positive Research Center.
*) Feature: the "proxy_pass", "fastcgi_pass", "scgi_pass", "uwsgi_pass"
directives, and the "server" directive inside the "upstream" block,
now support IPv6 addresses.
*) Feature: the "resolver" directive now supports IPv6 addresses and an
optional port specification.
*) Feature: the "least_conn" directive inside the "upstream" block.
*) Feature: it is now possible to specify a weight for servers while
using the "ip_hash" directive.
*) Bugfix: a segmentation fault might occur in a worker process if the
"image_filter" directive was used; the bug had appeared in 1.3.0.
*) Bugfix: nginx could not be built with ngx_cpp_test_module; the bug
had appeared in 1.1.12.
*) Bugfix: access to variables from SSI and embedded perl module might
not work after reconfiguration.
Thanks to Yichun Zhang.
*) Bugfix: in the ngx_http_xslt_filter_module.
Thanks to Kuramoto Eiji.
*) Bugfix: memory leak if $geoip_org variable was used.
Thanks to Denis F. Latypoff.
*) Bugfix: in the "proxy_cookie_domain" and "proxy_cookie_path"
directives.
Changes with nginx 1.3.0 15 May 2012
*) Feature: the "debug_connection" directive now supports IPv6 addresses
and the "unix:" parameter.
*) Feature: the "set_real_ip_from" directive and the "proxy" parameter
of the "geo" directive now support IPv6 addresses.
*) Feature: the "real_ip_recursive", "geoip_proxy", and
"geoip_proxy_recursive" directives.
*) Feature: the "proxy_recursive" parameter of the "geo" directive.
*) Bugfix: a segmentation fault might occur in a worker process if the
"resolver" directive was used.
*) Bugfix: a segmentation fault might occur in a worker process if the
"fastcgi_pass", "scgi_pass", or "uwsgi_pass" directives were used and
backend returned incorrect response.
*) Bugfix: a segmentation fault might occur in a worker process if the
"rewrite" directive was used and new request arguments in a
replacement used variables.
*) Bugfix: nginx might hog CPU if the open file resource limit was
reached.
*) Bugfix: nginx might loop infinitely over backends if the
"proxy_next_upstream" directive with the "http_404" parameter was
used and there were backup servers specified in an upstream block.
*) Bugfix: adding the "down" parameter of the "server" directive might
cause unneeded client redistribution among backend servers if the
"ip_hash" directive was used.
*) Bugfix: socket leak.
Thanks to Yichun Zhang.
*) Bugfix: in the ngx_http_fastcgi_module.
Changes with nginx 1.2.0 23 Apr 2012
*) Bugfix: a segmentation fault might occur in a worker process if the
"try_files" directive was used; the bug had appeared in 1.1.19.
*) Bugfix: response might be truncated if there were more than IOV_MAX
buffers used.
*) Bugfix: in the "crop" parameter of the "image_filter" directive.
Thanks to Maxim Bublis.
Changes with nginx 1.1.19 12 Apr 2012
*) Security: specially crafted mp4 file might allow to overwrite memory
locations in a worker process if the ngx_http_mp4_module was used,
potentially resulting in arbitrary code execution (CVE-2012-2089).
Thanks to Matthew Daley.
*) Bugfix: nginx/Windows might be terminated abnormally.
Thanks to Vincent Lee.
*) Bugfix: nginx hogged CPU if all servers in an upstream were marked as
"backup".
*) Bugfix: the "allow" and "deny" directives might be inherited
incorrectly if they were used with IPv6 addresses.
*) Bugfix: the "modern_browser" and "ancient_browser" directives might
be inherited incorrectly.
*) Bugfix: timeouts might be handled incorrectly on Solaris/SPARC.
*) Bugfix: in the ngx_http_mp4_module.
Changes with nginx 1.1.18 28 Mar 2012
*) Change: keepalive connections are no longer disabled for Safari by
default.
*) Feature: the $connection_requests variable.
*) Feature: $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd and
$tcpinfo_rcv_space variables.
*) Feature: the "worker_cpu_affinity" directive now works on FreeBSD.
*) Feature: the "xslt_param" and "xslt_string_param" directives.
Thanks to Samuel Behan.
*) Bugfix: in configure tests.
Thanks to Piotr Sikora.
*) Bugfix: in the ngx_http_xslt_filter_module.
*) Bugfix: nginx could not be built on Debian GNU/Hurd.
Changes with nginx 1.1.17 15 Mar 2012
*) Security: content of previously freed memory might be sent to a
client if backend returned specially crafted response.
Thanks to Matthew Daley.
*) Bugfix: in the embedded perl module if used from SSI.
Thanks to Matthew Daley.
*) Bugfix: in the ngx_http_uwsgi_module.
Changes with nginx 1.1.16 29 Feb 2012
*) Change: the simultaneous subrequest limit has been raised to 200.
*) Feature: the "from" parameter of the "disable_symlinks" directive.
*) Feature: the "return" and "error_page" directives can now be used to
return 307 redirections.
*) Bugfix: a segmentation fault might occur in a worker process if the
"resolver" directive was used and there was no "error_log" directive
specified at global level.
Thanks to Roman Arutyunyan.
*) Bugfix: a segmentation fault might occur in a worker process if the
"proxy_http_version 1.1" or "fastcgi_keep_conn on" directives were
used.
*) Bugfix: memory leaks.
Thanks to Lanshun Zhou.
*) Bugfix: in the "disable_symlinks" directive.
*) Bugfix: on ZFS filesystem disk cache size might be calculated
incorrectly; the bug had appeared in 1.0.1.
*) Bugfix: nginx could not be built by the icc 12.1 compiler.
*) Bugfix: nginx could not be built by gcc on Solaris; the bug had
appeared in 1.1.15.
Changes with nginx 1.1.15 15 Feb 2012
*) Feature: the "disable_symlinks" directive.
*) Feature: the "proxy_cookie_domain" and "proxy_cookie_path"
directives.
*) Bugfix: nginx might log incorrect error "upstream prematurely closed
connection" instead of correct "upstream sent too big header" one.
Thanks to Feibo Li.
*) Bugfix: nginx could not be built with the ngx_http_perl_module if the
--with-openssl option was used.
*) Bugfix: the number of internal redirects to named locations was not
limited.
*) Bugfix: calling $r->flush() multiple times might cause errors in the
ngx_http_gzip_filter_module.
*) Bugfix: temporary files might be not removed if the "proxy_store"
directive was used with SSI includes.
*) Bugfix: in some cases non-cacheable variables (such as the $args
variable) returned old empty cached value.
*) Bugfix: a segmentation fault might occur in a worker process if too
many SSI subrequests were issued simultaneously; the bug had appeared
in 0.7.25.
Changes with nginx 1.1.14 30 Jan 2012
*) Feature: multiple "limit_req" limits may be used simultaneously.
*) Bugfix: in error handling while connecting to a backend.
Thanks to Piotr Sikora.
*) Bugfix: in AIO error handling on FreeBSD.
*) Bugfix: in the OpenSSL library initialization.
*) Bugfix: the "proxy_redirect" directives might be inherited
incorrectly.
*) Bugfix: memory leak during reconfiguration if the "pcre_jit"
directive was used.
Changes with nginx 1.1.13 16 Jan 2012
*) Feature: the "TLSv1.1" and "TLSv1.2" parameters of the
"ssl_protocols" directive.
*) Bugfix: the "limit_req" directive parameters were not inherited
correctly; the bug had appeared in 1.1.12.
*) Bugfix: the "proxy_redirect" directive incorrectly processed
"Refresh" header if regular expression were used.
*) Bugfix: the "proxy_cache_use_stale" directive with "error" parameter
did not return answer from cache if there were no live upstreams.
*) Bugfix: the "worker_cpu_affinity" directive might not work.
*) Bugfix: nginx could not be built on Solaris; the bug had appeared in
1.1.12.
*) Bugfix: in the ngx_http_mp4_module.
Changes with nginx 1.1.12 26 Dec 2011
*) Change: a "proxy_pass" directive without URI part now uses changed
URI after redirection with the "error_page" directive.
Thanks to Lanshun Zhou.
*) Feature: the "proxy/fastcgi/scgi/uwsgi_cache_lock",
"proxy/fastcgi/scgi/uwsgi_cache_lock_timeout" directives.
*) Feature: the "pcre_jit" directive.
*) Feature: the "if" SSI command supports captures in regular
expressions.
*) Bugfix: the "if" SSI command did not work inside the "block" command.
*) Bugfix: the "limit_conn_log_level" and "limit_req_log_level"
directives might not work.
*) Bugfix: the "limit_rate" directive did not allow to use full
throughput, even if limit value was very high.
*) Bugfix: the "sendfile_max_chunk" directive did not work, if the
"limit_rate" directive was used.
*) Bugfix: a "proxy_pass" directive without URI part always used
original request URI if variables were used.
*) Bugfix: a "proxy_pass" directive without URI part might use original
request after redirection with the "try_files" directive.
Thanks to Lanshun Zhou.
*) Bugfix: in the ngx_http_scgi_module.
*) Bugfix: in the ngx_http_mp4_module.
*) Bugfix: nginx could not be built on Solaris; the bug had appeared in
1.1.9.
Changes with nginx 1.1.11 12 Dec 2011
*) Feature: the "so_keepalive" parameter of the "listen" directive.
Thanks to Vsevolod Stakhov.
*) Feature: the "if_not_empty" parameter of the
"fastcgi/scgi/uwsgi_param" directives.
*) Feature: the $https variable.
*) Feature: the "proxy_redirect" directive supports variables in the
first parameter.
*) Feature: the "proxy_redirect" directive supports regular expressions.
*) Bugfix: the $sent_http_cache_control variable might contain a wrong
value if the "expires" directive was used.
Thanks to Yichun Zhang.
*) Bugfix: the "read_ahead" directive might not work combined with
"try_files" and "open_file_cache".
*) Bugfix: a segmentation fault might occur in a worker process if small
time was used in the "inactive" parameter of the "proxy_cache_path"
directive.
*) Bugfix: responses from cache might hang.
Changes with nginx 1.1.10 30 Nov 2011
*) Bugfix: a segmentation fault occurred in a worker process if AIO was
used on Linux; the bug had appeared in 1.1.9.
Changes with nginx 1.1.9 28 Nov 2011
*) Change: now double quotes are encoded in an "echo" SSI-command
output.
Thanks to Zaur Abasmirzoev.
*) Feature: the "valid" parameter of the "resolver" directive. By
default TTL returned by a DNS server is used.
Thanks to Kirill A. Korinskiy.
*) Bugfix: nginx might hang after a worker process abnormal termination.
*) Bugfix: a segmentation fault might occur in a worker process if SNI
was used; the bug had appeared in 1.1.2.
*) Bugfix: in the "keepalive_disable" directive; the bug had appeared in
1.1.8.
Thanks to Alexander Usov.
*) Bugfix: SIGWINCH signal did not work after first binary upgrade; the
bug had appeared in 1.1.1.
*) Bugfix: backend responses with length not matching "Content-Length"
header line are no longer cached.
*) Bugfix: in the "scgi_param" directive, if complex parameters were
used.
*) Bugfix: in the "epoll" event method.
Thanks to Yichun Zhang.
*) Bugfix: in the ngx_http_flv_module.
Thanks to Piotr Sikora.
*) Bugfix: in the ngx_http_mp4_module.
*) Bugfix: IPv6 addresses are now handled properly in a request line and
in a "Host" request header line.
*) Bugfix: "add_header" and "expires" directives did not work if a
request was proxied and response status code was 206.
*) Bugfix: nginx could not be built on FreeBSD 10.
*) Bugfix: nginx could not be built on AIX.
Changes with nginx 1.1.8 14 Nov 2011
*) Change: the ngx_http_limit_zone_module was renamed to the
ngx_http_limit_conn_module.
*) Change: the "limit_zone" directive was superseded by the
"limit_conn_zone" directive with a new syntax.
*) Feature: support for multiple "limit_conn" limits on the same level.
*) Feature: the "image_filter_sharpen" directive.
*) Bugfix: a segmentation fault might occur in a worker process if
resolver got a big DNS response.
Thanks to Ben Hawkes.
*) Bugfix: in cache key calculation if internal MD5 implementation was
used; the bug had appeared in 1.0.4.
*) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
header lines might be passed to backend while caching; or not passed
without caching if caching was enabled in another part of the
configuration.
*) Bugfix: the module ngx_http_mp4_module sent incorrect
"Content-Length" response header line if the "start" argument was
used.
Thanks to Piotr Sikora.
Changes with nginx 1.1.7 31 Oct 2011
*) Feature: support of several DNS servers in the "resolver" directive.
Thanks to Kirill A. Korinskiy.
*) Bugfix: a segmentation fault occurred on start or during
reconfiguration if the "ssl" directive was used at http level and
there was no "ssl_certificate" defined.
*) Bugfix: reduced memory consumption while proxying big files if they
were buffered to disk.
*) Bugfix: a segmentation fault might occur in a worker process if
"proxy_http_version 1.1" directive was used.
*) Bugfix: in the "expires @time" directive.
Changes with nginx 1.1.6 17 Oct 2011
*) Change in internal API: now module context data are cleared while
internal redirect to named location.
Requested by Yichun Zhang.
*) Change: if a server in an upstream failed, only one request will be
sent to it after fail_timeout; the server will be considered alive if
it will successfully respond to the request.
*) Change: now the 0x7F-0xFF characters are escaped as \xXX in an
access_log.
*) Feature: "proxy/fastcgi/scgi/uwsgi_ignore_headers" directives support
the following additional values: X-Accel-Limit-Rate,
X-Accel-Buffering, X-Accel-Charset.
*) Feature: decrease of memory consumption if SSL is used.
*) Bugfix: some UTF-8 characters were processed incorrectly.
Thanks to Alexey Kuts.
*) Bugfix: the ngx_http_rewrite_module directives specified at "server"
level were executed twice if no matching locations were defined.
*) Bugfix: a socket leak might occurred if "aio sendfile" was used.
*) Bugfix: connections with fast clients might be closed after
send_timeout if file AIO was used.
*) Bugfix: in the ngx_http_autoindex_module.
*) Bugfix: the module ngx_http_mp4_module did not support seeking on
32-bit platforms.
Changes with nginx 1.1.5 05 Oct 2011
*) Feature: the "uwsgi_buffering" and "scgi_buffering" directives.
Thanks to Peter Smit.
*) Bugfix: non-cacheable responses might be cached if
"proxy_cache_bypass" directive was used.
Thanks to John Ferlito.
*) Bugfix: in HTTP/1.1 support in the ngx_http_proxy_module.
*) Bugfix: cached responses with an empty body were returned
incorrectly; the bug had appeared in 0.8.31.
*) Bugfix: 201 responses of the ngx_http_dav_module were incorrect; the
bug had appeared in 0.8.32.
*) Bugfix: in the "return" directive.
*) Bugfix: the "ssl_session_cache builtin" directive caused segmentation
fault; the bug had appeared in 1.1.1.
Changes with nginx 1.1.4 20 Sep 2011
*) Feature: the ngx_http_upstream_keepalive module.
*) Feature: the "proxy_http_version" directive.
*) Feature: the "fastcgi_keep_conn" directive.
*) Feature: the "worker_aio_requests" directive.
*) Bugfix: if nginx was built --with-file-aio it could not be run on
Linux kernel which did not support AIO.
*) Bugfix: in Linux AIO error processing.
Thanks to Hagai Avrahami.
*) Bugfix: reduced memory consumption for long-lived requests.
*) Bugfix: the module ngx_http_mp4_module did not support 64-bit MP4
"co64" atom.
Changes with nginx 1.1.3 14 Sep 2011
*) Feature: the module ngx_http_mp4_module.
*) Bugfix: in Linux AIO combined with open_file_cache.
*) Bugfix: open_file_cache did not update file info on retest if file
was not atomically changed.
*) Bugfix: nginx could not be built on MacOSX 10.7.
Changes with nginx 1.1.2 05 Sep 2011
*) Change: now if total size of all ranges is greater than source
response size, then nginx disables ranges and returns just the source
response.
*) Feature: the "max_ranges" directive.
*) Bugfix: the "ssl_verify_client", "ssl_verify_depth", and
"ssl_prefer_server_ciphers" directives might work incorrectly if SNI
was used.
*) Bugfix: in the "proxy/fastcgi/scgi/uwsgi_ignore_client_abort"
directives.
Changes with nginx 1.1.1 22 Aug 2011
*) Change: now cache loader processes either as many files as specified
by "loader_files" parameter or works no longer than time specified by
the "loader_threshold" parameter during each iteration.
*) Change: now SIGWINCH signal works only in daemon mode.
*) Feature: now shared zones and caches use POSIX semaphores on Solaris.
Thanks to Den Ivanov.
*) Feature: accept filters are now supported on NetBSD.
*) Bugfix: nginx could not be built on Linux 3.0.
*) Bugfix: nginx did not use gzipping in some cases; the bug had
appeared in 1.1.0.
*) Bugfix: request body might be processed incorrectly if client used
pipelining.
*) Bugfix: in the "request_body_in_single_buf" directive.
*) Bugfix: in "proxy_set_body" and "proxy_pass_request_body" directives
if SSL connection to backend was used.
*) Bugfix: nginx hogged CPU if all servers in an upstream were marked as
"down".
*) Bugfix: a segmentation fault might occur during reconfiguration if
ssl_session_cache was defined but not used in previous configuration.
*) Bugfix: a segmentation fault might occur in a worker process if many
backup servers were used in an upstream.
*) Bugfix: a segmentation fault might occur in a worker process if
"fastcgi/scgi/uwsgi_param" directives were used with values starting
with "HTTP_"; the bug had appeared in 0.8.40.
Changes with nginx 1.1.0 01 Aug 2011
*) Feature: cache loader run time decrease.
*) Feature: "loader_files", "loader_sleep", and "loader_threshold"
options of the "proxy/fastcgi/scgi/uwsgi_cache_path" directives.
*) Feature: loading time decrease of configuration with large number of
HTTPS sites.
*) Feature: now nginx supports ECDHE key exchange ciphers.
Thanks to Adrian Kotelba.
*) Feature: the "lingering_close" directive.
Thanks to Maxim Dounin.
*) Bugfix: in closing connection for pipelined requests.
Thanks to Maxim Dounin.
*) Bugfix: nginx did not disable gzipping if client sent "gzip;q=0" in
"Accept-Encoding" request header line.
*) Bugfix: in timeout in unbuffered proxied mode.
Thanks to Maxim Dounin.
*) Bugfix: memory leaks when a "proxy_pass" directive contains variables
and proxies to an HTTPS backend.
Thanks to Maxim Dounin.
*) Bugfix: in parameter validation of a "proxy_pass" directive with
variables.
Thanks to Lanshun Zhou.
*) Bugfix: SSL did not work on QNX.
Thanks to Maxim Dounin.
*) Bugfix: SSL modules could not be built by gcc 4.6 without
--with-debug option.
Changes with nginx 1.0.5 19 Jul 2011
*) Change: now default SSL ciphers are "HIGH:!aNULL:!MD5".
Thanks to Rob Stradling.
*) Feature: the "referer_hash_max_size" and "referer_hash_bucket_size"
directives.
Thanks to Witold Filipczyk.
*) Feature: $uid_reset variable.
*) Bugfix: a segmentation fault might occur in a worker process, if a
caching was used.
Thanks to Lanshun Zhou.
*) Bugfix: worker processes may got caught in an endless loop during
reconfiguration, if a caching was used; the bug had appeared in
0.8.48.
Thanks to Maxim Dounin.
*) Bugfix: "stalled cache updating" alert.
Thanks to Maxim Dounin.
Changes with nginx 1.0.4 01 Jun 2011
*) Change: now regular expressions case sensitivity in the "map"
directive is given by prefixes "~" or "~*".
*) Feature: now shared zones and caches use POSIX semaphores on Linux.
Thanks to Denis F. Latypoff.
*) Bugfix: "stalled cache updating" alert.
*) Bugfix: nginx could not be built --without-http_auth_basic_module;
the bug had appeared in 1.0.3.
Changes with nginx 1.0.3 25 May 2011
*) Feature: the "auth_basic_user_file" directive supports "$apr1",
"{PLAIN}", and "{SSHA}" password encryption methods.
Thanks to Maxim Dounin.
*) Feature: the "geoip_org" directive and $geoip_org variable.
Thanks to Alexander Uskov, Arnaud Granal, and Denis F. Latypoff.
*) Feature: ngx_http_geo_module and ngx_http_geoip_module support IPv4
addresses mapped to IPv6 addresses.
*) Bugfix: a segmentation fault occurred in a worker process during
testing IPv4 address mapped to IPv6 address, if access or deny rules
were defined only for IPv6; the bug had appeared in 0.8.22.
*) Bugfix: a cached response may be broken if "proxy/fastcgi/scgi/
uwsgi_cache_bypass" and "proxy/fastcgi/scgi/uwsgi_no_cache" directive
values were different; the bug had appeared in 0.8.46.
Changes with nginx 1.0.2 10 May 2011
*) Feature: now shared zones and caches use POSIX semaphores.
*) Bugfix: in the "rotate" parameter of the "image_filter" directive.
Thanks to Adam Bocim.
*) Bugfix: nginx could not be built on Solaris; the bug had appeared in
1.0.1.
Changes with nginx 1.0.1 03 May 2011
*) Change: now the "split_clients" directive uses MurmurHash2 algorithm
because of better distribution.
Thanks to Oleg Mamontov.
*) Change: now long strings starting with zero are not considered as
false values.
Thanks to Maxim Dounin.
*) Change: now nginx uses a default listen backlog value 511 on Linux.
*) Feature: the $upstream_... variables may be used in the SSI and perl
modules.
*) Bugfix: now nginx limits better disk cache size.
Thanks to Oleg Mamontov.
*) Bugfix: a segmentation fault might occur while parsing incorrect IPv4
address; the bug had appeared in 0.9.3.
Thanks to Maxim Dounin.
*) Bugfix: nginx could not be built by gcc 4.6 without --with-debug
option.
*) Bugfix: nginx could not be built on Solaris 9 and earlier; the bug
had appeared in 0.9.3.
Thanks to Dagobert Michelsen.
*) Bugfix: $request_time variable had invalid values if subrequests were
used; the bug had appeared in 0.8.47.
Thanks to Igor A. Valcov.
Changes with nginx 1.0.0 12 Apr 2011
*) Bugfix: a cache manager might hog CPU after reload.
Thanks to Maxim Dounin.
*) Bugfix: an "image_filter crop" directive worked incorrectly coupled
with an "image_filter rotate 180" directive.
*) Bugfix: a "satisfy any" directive disabled custom 401 error page.
Changes with nginx 0.9.7 04 Apr 2011
*) Feature: now keepalive connections may be closed premature, if there
are no free worker connections.
Thanks to Maxim Dounin.
*) Feature: the "rotate" parameter of the "image_filter" directive.
Thanks to Adam Bocim.
*) Bugfix: a case when a backend in "fastcgi_pass", "scgi_pass", or
"uwsgi_pass" directives is given by expression and refers to a
defined upstream.
Changes with nginx 0.9.6 21 Mar 2011
*) Feature: the "map" directive supports regular expressions as value of
the first parameter.
*) Feature: $time_iso8601 access_log variable.
Thanks to Michael Lustfield.
Changes with nginx 0.9.5 21 Feb 2011
*) Change: now nginx uses a default listen backlog value -1 on Linux.
Thanks to Andrei Nigmatulin.
*) Feature: the "utf8" parameter of "geoip_country" and "geoip_city"
directives.
Thanks to Denis F. Latypoff.
*) Bugfix: in a default "proxy_redirect" directive if "proxy_pass"
directive has no URI part.
Thanks to Maxim Dounin.
*) Bugfix: an "error_page" directive did not work with nonstandard error
codes; the bug had appeared in 0.8.53.
Thanks to Maxim Dounin.
Changes with nginx 0.9.4 21 Jan 2011
*) Feature: the "server_name" directive supports the $hostname variable.
*) Feature: 494 code for "Request Header Too Large" error.
Changes with nginx 0.9.3 13 Dec 2010
*) Bugfix: if there was a single server for given IPv6 address:port
pair, then captures in regular expressions in a "server_name"
directive did not work.
*) Bugfix: nginx could not be built on Solaris; the bug had appeared in
0.9.0.
Changes with nginx 0.9.2 06 Dec 2010
*) Feature: the "If-Unmodified-Since" client request header line
support.
*) Workaround: fallback to accept() syscall if accept4() was not
implemented; the issue had appeared in 0.9.0.
*) Bugfix: nginx could not be built on Cygwin; the bug had appeared in
0.9.0.
*) Bugfix: for OpenSSL vulnerability CVE-2010-4180.
Thanks to Maxim Dounin.
Changes with nginx 0.9.1 30 Nov 2010
*) Bugfix: "return CODE message" directives did not work; the bug had
appeared in 0.9.0.
Changes with nginx 0.9.0 29 Nov 2010
*) Feature: the "keepalive_disable" directive.
*) Feature: the "map" directive supports variables as value of a defined
variable.
*) Feature: the "map" directive supports empty strings as value of the
first parameter.
*) Feature: the "map" directive supports expressions as the first
parameter.
*) Feature: nginx(8) manual page.
Thanks to Sergey Osokin.
*) Feature: Linux accept4() support.
Thanks to Simon Liu.
*) Workaround: elimination of Linux linker warning about "sys_errlist"
and "sys_nerr"; the warning had appeared in 0.8.35.
*) Bugfix: a segmentation fault might occur in a worker process, if the
"auth_basic" directive was used.
Thanks to Michail Laletin.
*) Bugfix: compatibility with ngx_http_eval_module; the bug had appeared
in 0.8.42.
Changes with nginx 0.8.53 18 Oct 2010
*) Feature: now the "error_page" directive allows to change a status
code in a redirect.
*) Feature: the "gzip_disable" directive supports special "degradation"
mask.
*) Bugfix: a socket leak might occurred if file AIO was used.
Thanks to Maxim Dounin.
*) Bugfix: if the first server had no "listen" directive and there was
no explicit default server, then a next server with a "listen"
directive became the default server; the bug had appeared in 0.8.21.
Changes with nginx 0.8.52 28 Sep 2010
*) Bugfix: nginx used SSL mode for a listen socket if any listen option
was set; the bug had appeared in 0.8.51.
Changes with nginx 0.8.51 27 Sep 2010
*) Change: the "secure_link_expires" directive has been canceled.
*) Change: a logging level of resolver errors has been lowered from
"alert" to "error".
*) Feature: now a listen socket "ssl" parameter may be set several
times.
Changes with nginx 0.8.50 02 Sep 2010
*) Feature: the "secure_link", "secure_link_md5", and
"secure_link_expires" directives of the ngx_http_secure_link_module.
*) Feature: the -q switch.
Thanks to Gena Makhomed.
*) Bugfix: worker processes may got caught in an endless loop during
reconfiguration, if a caching was used; the bug had appeared in
0.8.48.
*) Bugfix: in the "gzip_disable" directive.
Thanks to Derrick Petzold.
*) Bugfix: nginx/Windows could not send stop, quit, reopen, and reload
signals to a process run in other session.
Changes with nginx 0.8.49 09 Aug 2010
*) Feature: the "image_filter_jpeg_quality" directive supports
variables.
*) Bugfix: a segmentation fault might occur in a worker process, if the
$geoip_region_name variables was used; the bug had appeared in
0.8.48.
*) Bugfix: errors intercepted by error_page were cached only for next
request; the bug had appeared in 0.8.48.
Changes with nginx 0.8.48 03 Aug 2010
*) Change: now the "server_name" directive default value is an empty
name "".
Thanks to Gena Makhomed.
*) Change: now the "server_name_in_redirect" directive default value is
"off".
*) Feature: the $geoip_dma_code, $geoip_area_code, and
$geoip_region_name variables.
Thanks to Christine McGonagle.
*) Bugfix: the "proxy_pass", "fastcgi_pass", "uwsgi_pass", and
"scgi_pass" directives were not inherited inside "limit_except"
blocks.
*) Bugfix: the "proxy_cache_min_uses", "fastcgi_cache_min_uses"
"uwsgi_cache_min_uses", and "scgi_cache_min_uses" directives did not
work; the bug had appeared in 0.8.46.
*) Bugfix: the "fastcgi_split_path_info" directive used incorrectly
captures, if only parts of an URI were captured.
Thanks to Yuriy Taraday and Frank Enderle.
*) Bugfix: the "rewrite" directive did not escape a ";" character during
copying from URI to query string.
Thanks to Daisuke Murase.
*) Bugfix: the ngx_http_image_filter_module closed a connection, if an
image was larger than "image_filter_buffer" size.
Changes with nginx 0.8.47 28 Jul 2010
*) Bugfix: $request_time variable had invalid values for subrequests.
*) Bugfix: errors intercepted by error_page could not be cached.
*) Bugfix: a cache manager process may got caught in an endless loop, if
max_size parameter was used; the bug had appeared in 0.8.46.
Changes with nginx 0.8.46 19 Jul 2010
*) Change: now the "proxy_no_cache", "fastcgi_no_cache",
"uwsgi_no_cache", and "scgi_no_cache" directives affect on a cached
response saving only.
*) Feature: the "proxy_cache_bypass", "fastcgi_cache_bypass",
"uwsgi_cache_bypass", and "scgi_cache_bypass" directives.
*) Bugfix: nginx did not free memory in cache keys zones if there was an
error during working with backend: the memory was freed only after
inactivity time or on memory low condition.
Changes with nginx 0.8.45 13 Jul 2010
*) Feature: ngx_http_xslt_filter improvements.
Thanks to Laurence Rowe.
*) Bugfix: SSI response might be truncated after include with
wait="yes"; the bug had appeared in 0.7.25.
Thanks to Maxim Dounin.
*) Bugfix: the "listen" directive did not support the "setfib=0"
parameter.
Changes with nginx 0.8.44 05 Jul 2010
*) Change: now nginx does not cache by default backend responses, if
they have a "Set-Cookie" header line.
*) Feature: the "listen" directive supports the "setfib" parameter.
Thanks to Andrew Filonov.
*) Bugfix: the "sub_filter" directive might change character case on
partial match.
*) Bugfix: compatibility with HP/UX.
*) Bugfix: compatibility with AIX xlC_r compiler.
*) Bugfix: nginx treated large SSLv2 packets as plain requests.
Thanks to Miroslaw Jaworski.
Changes with nginx 0.8.43 30 Jun 2010
*) Feature: large geo ranges base loading speed-up.
*) Bugfix: an error_page redirection to "location /zero {return 204;}"
without changing status code kept the error body; the bug had
appeared in 0.8.42.
*) Bugfix: nginx might close IPv6 listen socket during reconfiguration.
Thanks to Maxim Dounin.
*) Bugfix: the $uid_set variable may be used at any request processing
stage.
Changes with nginx 0.8.42 21 Jun 2010
*) Change: now nginx tests locations given by regular expressions, if
request was matched exactly by a location given by a prefix string.
The previous behavior has been introduced in 0.7.1.
*) Feature: the ngx_http_scgi_module.
Thanks to Manlio Perillo.
*) Feature: a text answer may be added to a "return" directive.
Changes with nginx 0.8.41 15 Jun 2010
*) Security: nginx/Windows worker might be terminated abnormally if a
requested file name has invalid UTF-8 encoding.
*) Change: now nginx allows to use spaces in a request line.
*) Bugfix: the "proxy_redirect" directive changed incorrectly a backend
"Refresh" response header line.
Thanks to Andrey Andreew and Max Sogin.
*) Bugfix: nginx did not support path without host name in "Destination"
request header line.
Changes with nginx 0.8.40 07 Jun 2010
*) Security: now nginx/Windows ignores default file stream name.
Thanks to Jose Antonio Vazquez Gonzalez.
*) Feature: the ngx_http_uwsgi_module.
Thanks to Roberto De Ioris.
*) Feature: a "fastcgi_param" directive with value starting with "HTTP_"
overrides a client request header line.
*) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
header lines were passed to FastCGI-server while caching.
*) Bugfix: listen unix domain socket could not be changed during
reconfiguration.
Thanks to Maxim Dounin.
Changes with nginx 0.8.39 31 May 2010
*) Bugfix: an inherited "alias" directive worked incorrectly in
inclusive location.
*) Bugfix: in "alias" with variables and "try_files" directives
combination.
*) Bugfix: listen unix domain and IPv6 sockets did not inherit while
online upgrade.
Thanks to Maxim Dounin.
Changes with nginx 0.8.38 24 May 2010
*) Feature: the "proxy_no_cache" and "fastcgi_no_cache" directives.
*) Feature: now the "rewrite" directive does a redirect automatically if
the $scheme variable is used.
Thanks to Piotr Sikora.
*) Bugfix: now "limit_req" delay directive conforms to the described
algorithm.
Thanks to Maxim Dounin.
*) Bugfix: the $uid_got variable might not be used in the SSI and perl
modules.
Changes with nginx 0.8.37 17 May 2010
*) Feature: the ngx_http_split_clients_module.
*) Feature: the "map" directive supports keys more than 255 characters.
*) Bugfix: nginx ignored the "private" and "no-store" values in the
"Cache-Control" backend response header line.
*) Bugfix: a "stub" parameter of an "include" SSI directive was not
used, if empty response has 200 status code.
*) Bugfix: if a proxied or FastCGI request was internally redirected to
another proxied or FastCGI location, then a segmentation fault might
occur in a worker process; the bug had appeared in 0.8.33.
Thanks to Yichun Zhang.
*) Bugfix: IMAP connections may hang until they timed out while talking
to Zimbra server.
Thanks to Alan Batie.
Changes with nginx 0.8.36 22 Apr 2010
*) Bugfix: the ngx_http_dav_module handled incorrectly the DELETE, COPY,
and MOVE methods for symlinks.
*) Bugfix: values of the $query_string, $arg_..., etc. variables cached
in main request were used by the SSI module in subrequests.
*) Bugfix: a variable value was repeatedly encoded after each an "echo"
SSI-command output; the bug had appeared in 0.6.14.
*) Bugfix: a worker process hung if a FIFO file was requested.
Thanks to Vicente Aguilar and Maxim Dounin.
*) Bugfix: OpenSSL-1.0.0 compatibility on 64-bit Linux.
Thanks to Maxim Dounin.
*) Bugfix: nginx could not be built --without-http-cache; the bug had
appeared in 0.8.35.
Changes with nginx 0.8.35 01 Apr 2010
*) Change: now the charset filter runs before the SSI filter.
*) Feature: the "chunked_transfer_encoding" directive.
*) Bugfix: an "&" character was not escaped when it was copied in
arguments part in a rewrite rule.
*) Bugfix: nginx might be terminated abnormally while a signal
processing or if the directive "timer_resolution" was used on
platforms which do not support kqueue or eventport notification
methods.
Thanks to George Xie and Maxim Dounin.
*) Bugfix: if temporary files and permanent storage area resided at
different file systems, then permanent file modification times were
incorrect.
Thanks to Maxim Dounin.
*) Bugfix: ngx_http_memcached_module might issue the error message
"memcached sent invalid trailer".
Thanks to Maxim Dounin.
*) Bugfix: nginx could not built zlib-1.2.4 library using the library
sources.
Thanks to Maxim Dounin.
*) Bugfix: a segmentation fault occurred in a worker process, if there
was large stderr output before FastCGI response; the bug had appeared
in 0.8.34.
Thanks to Maxim Dounin.
Changes with nginx 0.8.34 03 Mar 2010
*) Bugfix: nginx did not support all ciphers and digests used in client
certificates.
Thanks to Innocenty Enikeew.
*) Bugfix: nginx cached incorrectly FastCGI responses if there was large
stderr output before response.
*) Bugfix: nginx did not support HTTPS referrers.
*) Bugfix: nginx/Windows might not find file if path in configuration
was given in other character case; the bug had appeared in 0.8.33.
*) Bugfix: the $date_local variable has an incorrect value, if the "%s"
format was used.
Thanks to Maxim Dounin.
*) Bugfix: if ssl_session_cache was not set or was set to "none", then
during client certificate verify the error "session id context
uninitialized" might occur; the bug had appeared in 0.7.1.
*) Bugfix: a geo range returned default value if the range included two
or more /16 networks and did not begin at /16 network boundary.
*) Bugfix: a block used in a "stub" parameter of an "include" SSI
directive was output with "text/plain" MIME type.
*) Bugfix: $r->sleep() did not work; the bug had appeared in 0.8.11.
Changes with nginx 0.8.33 01 Feb 2010
*) Security: now nginx/Windows ignores trailing spaces in URI.
Thanks to Dan Crowley, Core Security Technologies.
*) Security: now nginx/Windows ignores short files names.
Thanks to Dan Crowley, Core Security Technologies.
*) Change: now keepalive connections after POST requests are not
disabled for MSIE 7.0+.
Thanks to Adam Lounds.
*) Workaround: now keepalive connections are disabled for Safari.
Thanks to Joshua Sierles.
*) Bugfix: if a proxied or FastCGI request was internally redirected to
another proxied or FastCGI location, then $upstream_response_time
variable may have abnormally large value; the bug had appeared in
0.8.7.
*) Bugfix: a segmentation fault might occur in a worker process, while
discarding a request body; the bug had appeared in 0.8.11.
Changes with nginx 0.8.32 11 Jan 2010
*) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module.
Thanks to Maxim Dounin.
*) Bugfix: regular expression named captures worked for two names only.
Thanks to Maxim Dounin.
*) Bugfix: now the "localhost" name is used in the "Host" request header
line, if an unix domain socket is defined in the "auth_http"
directive.
Thanks to Maxim Dounin.
*) Bugfix: nginx did not support chunked transfer encoding for 201
responses.
Thanks to Julian Reich.
*) Bugfix: if the "expires modified" set date in the past, then a
negative number was set in the "Cache-Control" response header line.
Thanks to Alex Kapranoff.
Changes with nginx 0.8.31 23 Dec 2009
*) Feature: now the "error_page" directive may redirect the 301 and 302
responses.
*) Feature: the $geoip_city_continent_code, $geoip_latitude, and
$geoip_longitude variables.
Thanks to Arvind Sundararajan.
*) Feature: now the ngx_http_image_filter_module deletes always EXIF and
other application specific data if the data consume more than 5% of a
JPEG file.
*) Bugfix: nginx closed a connection if a cached response had an empty
body.
Thanks to Piotr Sikora.
*) Bugfix: nginx might not be built by gcc 4.x if the -O2 or higher
optimization option was used.
Thanks to Maxim Dounin and Denis F. Latypoff.
*) Bugfix: regular expressions in location were always tested in
case-sensitive mode; the bug had appeared in 0.8.25.
*) Bugfix: nginx cached a 304 response if there was the "If-None-Match"
header line in a proxied request.
Thanks to Tim Dettrick and David Kostal.
*) Bugfix: nginx/Windows tried to delete a temporary file twice if the
file should replace an already existent file.
Changes with nginx 0.8.30 15 Dec 2009
*) Change: now the default buffer size of the
"large_client_header_buffers" directive is 8K.
Thanks to Andrew Cholakian.
*) Feature: the conf/fastcgi.conf for simple FastCGI configurations.
*) Bugfix: nginx/Windows tried to rename a temporary file twice if the
file should replace an already existent file.
*) Bugfix: of "double free or corruption" error issued if host could not
be resolved; the bug had appeared in 0.8.22.
Thanks to Konstantin Svist.
*) Bugfix: in libatomic usage on some platforms.
Thanks to W-Mark Kubacki.
Changes with nginx 0.8.29 30 Nov 2009
*) Change: now the "009" status code is written to an access log for
proxied HTTP/0.9 responses.
*) Feature: the "addition_types", "charset_types", "gzip_types",
"ssi_types", "sub_filter_types", and "xslt_types" directives support
an "*" parameter.
*) Feature: GCC 4.1+ built-in atomic operations usage.
Thanks to W-Mark Kubacki.
*) Feature: the --with-libatomic[=DIR] option in the configure.
Thanks to W-Mark Kubacki.
*) Bugfix: listen unix domain socket had limited access rights.
*) Bugfix: cached HTTP/0.9 responses were handled incorrectly.
*) Bugfix: regular expression named captures given by "?P<...>" did not
work in a "server_name" directive.
Thanks to Maxim Dounin.
Changes with nginx 0.8.28 23 Nov 2009
*) Bugfix: nginx could not be built with the --without-pcre parameter;
the bug had appeared in 0.8.25.
Changes with nginx 0.8.27 17 Nov 2009
*) Bugfix: regular expressions did not work in nginx/Windows; the bug
had appeared in 0.8.25.
Changes with nginx 0.8.26 16 Nov 2009
*) Bugfix: in captures usage in "rewrite" directive; the bug had
appeared in 0.8.25.
*) Bugfix: nginx could not be built without the --with-debug option; the
bug had appeared in 0.8.25.
Changes with nginx 0.8.25 16 Nov 2009
*) Change: now no message is written in an error log if a variable is
not found by $r->variable() method.
*) Feature: the ngx_http_degradation_module.
*) Feature: regular expression named captures.
*) Feature: now URI part is not required a "proxy_pass" directive if
variables are used.
*) Feature: now the "msie_padding" directive works for Chrome too.
*) Bugfix: a segmentation fault occurred in a worker process on low
memory condition; the bug had appeared in 0.8.18.
*) Bugfix: nginx sent gzipped responses to clients those do not support
gzip, if "gzip_static on" and "gzip_vary off"; the bug had appeared
in 0.8.16.
Changes with nginx 0.8.24 11 Nov 2009
*) Bugfix: nginx always added "Content-Encoding: gzip" response header
line in 304 responses sent by ngx_http_gzip_static_module.
*) Bugfix: nginx could not be built without the --with-debug option; the
bug had appeared in 0.8.23.
*) Bugfix: the "unix:" parameter of the "set_real_ip_from" directive
inherited incorrectly from previous level.
*) Bugfix: in resolving empty name.
Changes with nginx 0.8.23 11 Nov 2009
*) Security: now SSL/TLS renegotiation is disabled.
Thanks to Maxim Dounin.
*) Bugfix: listen unix domain socket did not inherit while online
upgrade.
*) Bugfix: the "unix:" parameter of the "set_real_ip_from" directive did
not without yet another directive with any IP address.
*) Bugfix: segmentation fault and infinite looping in resolver.
*) Bugfix: in resolver.
Thanks to Artem Bokhan.
Changes with nginx 0.8.22 03 Nov 2009
*) Feature: the "proxy_bind", "fastcgi_bind", and "memcached_bind"
directives.
*) Feature: the "access" and the "deny" directives support IPv6.
*) Feature: the "set_real_ip_from" directive supports IPv6 addresses in
request headers.
*) Feature: the "unix:" parameter of the "set_real_ip_from" directive.
*) Bugfix: nginx did not delete unix domain socket after configuration
testing.
*) Bugfix: nginx deleted unix domain socket while online upgrade.
*) Bugfix: the "!-x" operator did not work.
Thanks to Maxim Dounin.
*) Bugfix: a segmentation fault might occur in a worker process, if
limit_rate was used in HTTPS server.
Thanks to Maxim Dounin.
*) Bugfix: a segmentation fault might occur in a worker process while
$limit_rate logging.
Thanks to Maxim Dounin.
*) Bugfix: a segmentation fault might occur in a worker process, if
there was no "listen" directive in "server" block; the bug had
appeared in 0.8.21.
Changes with nginx 0.8.21 26 Oct 2009
*) Feature: now the "-V" switch shows TLS SNI support.
*) Feature: the "listen" directive of the HTTP module supports unix
domain sockets.
Thanks to Hongli Lai.
*) Feature: the "default_server" parameter of the "listen" directive.
*) Feature: now a "default" parameter is not required to set listen
socket options.
*) Bugfix: nginx did not support dates in 2038 year on 32-bit platforms;
*) Bugfix: socket leak; the bug had appeared in 0.8.11.
Changes with nginx 0.8.20 14 Oct 2009
*) Change: now default SSL ciphers are "HIGH:!ADH:!MD5".
*) Bugfix: the ngx_http_autoindex_module did not show the trailing slash
in links to a directory; the bug had appeared in 0.7.15.
*) Bugfix: nginx did not close a log file set by the --error-log-path
configuration option; the bug had appeared in 0.7.53.
*) Bugfix: nginx did not treat a comma as separator in the
"Cache-Control" backend response header line.
*) Bugfix: nginx/Windows might not create temporary file, a cache file,
or "proxy/fastcgi_store"d file if a worker had no enough access
rights for top level directories.
*) Bugfix: the "Set-Cookie" and "P3P" FastCGI response header lines were
not hidden while caching if no "fastcgi_hide_header" directives were
used with any parameters.
*) Bugfix: nginx counted incorrectly disk cache size.
Changes with nginx 0.8.19 06 Oct 2009
*) Change: now SSLv2 protocol is disabled by default.
*) Change: now default SSL ciphers are "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM".
*) Bugfix: a "limit_req" directive did not work; the bug had appeared in
0.8.18.
Changes with nginx 0.8.18 06 Oct 2009
*) Feature: the "read_ahead" directive.
*) Feature: now several "perl_modules" directives may be used.
*) Feature: the "limit_req_log_level" and "limit_conn_log_level"
directives.
*) Bugfix: now "limit_req" directive conforms to the leaky bucket
algorithm.
Thanks to Maxim Dounin.
*) Bugfix: nginx did not work on Linux/sparc.
Thanks to Marcus Ramberg.
*) Bugfix: nginx sent '\0' in a "Location" response header line on MKCOL
request.
Thanks to Xie Zhenye.
*) Bugfix: zero status code was logged instead of 499 status code; the
bug had appeared in 0.8.11.
*) Bugfix: socket leak; the bug had appeared in 0.8.11.
Changes with nginx 0.8.17 28 Sep 2009
*) Security: now "/../" are disabled in "Destination" request header
line.
*) Change: now $host variable value is always low case.
*) Feature: the $ssl_session_id variable.
*) Bugfix: socket leak; the bug had appeared in 0.8.11.
Changes with nginx 0.8.16 22 Sep 2009
*) Feature: the "image_filter_transparency" directive.
*) Bugfix: "addition_types" directive was incorrectly named
"addtion_types".
*) Bugfix: resolver cache poisoning.
Thanks to Matthew Dempsky.
*) Bugfix: memory leak in resolver.
Thanks to Matthew Dempsky.
*) Bugfix: invalid request line in $request variable was written in
access_log only if error_log was set to "info" or "debug" level.
*) Bugfix: in PNG alpha-channel support in the
ngx_http_image_filter_module.
*) Bugfix: nginx always added "Vary: Accept-Encoding" response header
line, if both "gzip_static" and "gzip_vary" were on.
*) Bugfix: in UTF-8 encoding support by "try_files" directive in
nginx/Windows.
*) Bugfix: in "post_action" directive usage; the bug had appeared in
0.8.11.
Thanks to Igor Artemiev.
Changes with nginx 0.8.15 14 Sep 2009
*) Security: a segmentation fault might occur in worker process while
specially crafted request handling.
Thanks to Chris Ries.
*) Bugfix: if names .domain.tld, .sub.domain.tld, and .domain-some.tld
were defined, then the name .sub.domain.tld was matched by
.domain.tld.
*) Bugfix: in transparency support in the ngx_http_image_filter_module.
*) Bugfix: in file AIO.
*) Bugfix: in X-Accel-Redirect usage; the bug had appeared in 0.8.11.
*) Bugfix: in embedded perl module; the bug had appeared in 0.8.11.
Changes with nginx 0.8.14 07 Sep 2009
*) Bugfix: an expired cached response might stick in the "UPDATING"
state.
*) Bugfix: a segmentation fault might occur in worker process, if
error_log was set to info or debug level.
Thanks to Sergey Bochenkov.
*) Bugfix: in embedded perl module; the bug had appeared in 0.8.11.
*) Bugfix: an "error_page" directive did not redirect a 413 error; the
bug had appeared in 0.6.10.
Changes with nginx 0.8.13 31 Aug 2009
*) Bugfix: in the "aio sendfile" directive; the bug had appeared in
0.8.12.
*) Bugfix: nginx could not be built without the --with-file-aio option
on FreeBSD; the bug had appeared in 0.8.12.
Changes with nginx 0.8.12 31 Aug 2009
*) Feature: the "sendfile" parameter in the "aio" directive on FreeBSD.
*) Bugfix: in try_files; the bug had appeared in 0.8.11.
*) Bugfix: in memcached; the bug had appeared in 0.8.11.
Changes with nginx 0.8.11 28 Aug 2009
*) Change: now directive "gzip_disable msie6" does not disable gzipping
for MSIE 6.0 SV1.
*) Feature: file AIO support on FreeBSD and Linux.
*) Feature: the "directio_alignment" directive.
Changes with nginx 0.8.10 24 Aug 2009
*) Bugfix: memory leaks if GeoIP City database was used.
*) Bugfix: in copying temporary files to permanent storage area; the bug
had appeared in 0.8.9.
Changes with nginx 0.8.9 17 Aug 2009
*) Feature: now the start cache loader runs in a separate process; this
should improve large caches handling.
*) Feature: now temporary files and permanent storage area may reside at
different file systems.
Changes with nginx 0.8.8 10 Aug 2009
*) Bugfix: in handling FastCGI headers split in records.
*) Bugfix: a segmentation fault occurred in worker process, if a request
was handled in two proxied or FastCGIed locations and a caching was
enabled in the first location; the bug had appeared in 0.8.7.
Changes with nginx 0.8.7 27 Jul 2009
*) Change: minimum supported OpenSSL version is 0.9.7.
*) Change: the "ask" parameter of the "ssl_verify_client" directive was
changed to the "optional" parameter and now it checks a client
certificate if it was offered.
Thanks to Brice Figureau.
*) Feature: the $ssl_client_verify variable.
Thanks to Brice Figureau.
*) Feature: the "ssl_crl" directive.
Thanks to Brice Figureau.
*) Feature: the "proxy" parameter of the "geo" directive.
*) Feature: the "image_filter" directive supports variables for setting
size.
*) Bugfix: the $ssl_client_cert variable usage corrupted memory; the bug
had appeared in 0.7.7.
Thanks to Sergey Zhuravlev.
*) Bugfix: "proxy_pass_header" and "fastcgi_pass_header" directives did
not pass to a client the "X-Accel-Redirect", "X-Accel-Limit-Rate",
"X-Accel-Buffering", and "X-Accel-Charset" lines from backend
response header.
Thanks to Maxim Dounin.
*) Bugfix: in handling "Last-Modified" and "Accept-Ranges" backend
response header lines; the bug had appeared in 0.7.44.
Thanks to Maxim Dounin.
*) Bugfix: the "[alert] zero size buf" error if subrequest returns an
empty response; the bug had appeared in 0.8.5.
Changes with nginx 0.8.6 20 Jul 2009
*) Feature: the ngx_http_geoip_module.
*) Bugfix: XSLT filter may fail with message "not well formed XML
document" for valid XML document.
Thanks to Kuramoto Eiji.
*) Bugfix: now in MacOSX, Cygwin, and nginx/Windows locations given by a
regular expression are always tested in case insensitive mode.
*) Bugfix: now nginx/Windows ignores trailing dots in URI.
Thanks to Hugo Leisink.
*) Bugfix: name of file specified in --conf-path was not honored during
installation; the bug had appeared in 0.6.6.
Thanks to Maxim Dounin.
Changes with nginx 0.8.5 13 Jul 2009
*) Bugfix: now nginx allows underscores in a request method.
*) Bugfix: a 500 error code was returned for invalid login/password
while HTTP Basic authentication on Windows.
*) Bugfix: ngx_http_perl_module responses did not work in subrequests.
*) Bugfix: in ngx_http_limit_req_module.
Thanks to Maxim Dounin.
Changes with nginx 0.8.4 22 Jun 2009
*) Bugfix: nginx could not be built --without-http-cache; the bug had
appeared in 0.8.3.
Changes with nginx 0.8.3 19 Jun 2009
*) Feature: the $upstream_cache_status variable.
*) Bugfix: nginx could not be built on MacOSX 10.6.
*) Bugfix: nginx could not be built --without-http-cache; the bug had
appeared in 0.8.2.
*) Bugfix: a segmentation fault occurred in worker process, if a backend
401 error was intercepted and the backend did not set the
"WWW-Authenticate" response header line.
Thanks to Eugene Mychlo.
Changes with nginx 0.8.2 15 Jun 2009
*) Bugfix: in open_file_cache and proxy/fastcgi cache interaction on
start up.
*) Bugfix: open_file_cache might cache open file descriptors too long;
the bug had appeared in 0.7.4.
Changes with nginx 0.8.1 08 Jun 2009
*) Feature: the "updating" parameter in "proxy_cache_use_stale" and
"fastcgi_cache_use_stale" directives.
*) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
header lines were passed to backend while caching if no
"proxy_set_header" directive was used with any parameters.
*) Bugfix: the "Set-Cookie" and "P3P" response header lines were not
hidden while caching if no "proxy_hide_header/fastcgi_hide_header"
directives were used with any parameters.
*) Bugfix: the ngx_http_image_filter_module did not support GIF87a
format.
Thanks to Denis Ilyinyh.
*) Bugfix: nginx could not be built modules on Solaris 10 and early; the
bug had appeared in 0.7.56.
Changes with nginx 0.8.0 02 Jun 2009
*) Feature: the "keepalive_requests" directive.
*) Feature: the "limit_rate_after" directive.
Thanks to Ivan Debnar.
*) Bugfix: XLST filter did not work in subrequests.
*) Bugfix: in relative paths handling in nginx/Windows.
*) Bugfix: in proxy_store, fastcgi_store, proxy_cache, and fastcgi_cache
in nginx/Windows.
*) Bugfix: in memory allocation error handling.
Thanks to Maxim Dounin and Kirill A. Korinskiy.
Changes with nginx 0.7.59 25 May 2009
*) Feature: the "proxy_cache_methods" and "fastcgi_cache_methods"
directives.
*) Bugfix: socket leak; the bug had appeared in 0.7.25.
Thanks to Maxim Dounin.
*) Bugfix: a segmentation fault occurred in worker process, if a request
had no body and the $request_body variable was used;
the bug had appeared in 0.7.58.
*) Bugfix: the SSL modules might not built on Solaris and Linux;
the bug had appeared in 0.7.56.
*) Bugfix: ngx_http_xslt_filter_module responses were not handled by
SSI, charset, and gzip filters.
*) Bugfix: a "charset" directive did not set a charset to
ngx_http_gzip_static_module responses.
Changes with nginx 0.7.58 18 May 2009
*) Feature: a "listen" directive of the mail proxy module supports IPv6.
*) Feature: the "image_filter_jpeg_quality" directive.
*) Feature: the "client_body_in_single_buffer" directive.
*) Feature: the $request_body variable.
*) Bugfix: in ngx_http_autoindex_module in file name links having a ":"
symbol in the name.
*) Bugfix: "make upgrade" procedure did not work; the bug had appeared
in 0.7.53.
Thanks to Denis F. Latypoff.
Changes with nginx 0.7.57 12 May 2009
*) Bugfix: a floating-point fault occurred in worker process, if the
ngx_http_image_filter_module errors were redirected to named
location; the bug had appeared in 0.7.56.
Changes with nginx 0.7.56 11 May 2009
*) Feature: nginx/Windows supports IPv6 in a "listen" directive of the
HTTP module.
*) Bugfix: in ngx_http_image_filter_module.
Changes with nginx 0.7.55 06 May 2009
*) Bugfix: the http_XXX parameters in "proxy_cache_use_stale" and
"fastcgi_cache_use_stale" directives did not work.
*) Bugfix: fastcgi cache did not cache header only responses.
*) Bugfix: of "select() failed (9: Bad file descriptor)" error in
nginx/Unix and "select() failed (10038: ...)" error in nginx/Windows.
*) Bugfix: a segmentation fault might occur in worker process, if an
"debug_connection" directive was used; the bug had appeared in
0.7.54.
*) Bugfix: fix ngx_http_image_filter_module building errors.
*) Bugfix: the files bigger than 2G could not be transferred using
$r->sendfile.
Thanks to Maxim Dounin.
Changes with nginx 0.7.54 01 May 2009
*) Feature: the ngx_http_image_filter_module.
*) Feature: the "proxy_ignore_headers" and "fastcgi_ignore_headers"
directives.
*) Bugfix: a segmentation fault might occur in worker process, if an
"open_file_cache_errors off" directive was used; the bug had appeared
in 0.7.53.
*) Bugfix: the "port_in_redirect o
gitextract_yjuswt18/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── feature_request.md
│ │ └── question-about-tengine.md
│ └── workflows/
│ ├── ci-arm64.yml
│ ├── ci.yml
│ ├── test-nginx-core.yml
│ └── test-ntls.yml
├── .gitignore
├── AUTHORS.te
├── CHANGES
├── CHANGES.cn
├── CHANGES.te
├── LICENSE
├── README.markdown
├── THANKS.te
├── auto/
│ ├── cc/
│ │ ├── acc
│ │ ├── bcc
│ │ ├── ccc
│ │ ├── clang
│ │ ├── conf
│ │ ├── gcc
│ │ ├── icc
│ │ ├── msvc
│ │ ├── name
│ │ ├── owc
│ │ └── sunc
│ ├── configure
│ ├── define
│ ├── endianness
│ ├── feature
│ ├── have
│ ├── have_headers
│ ├── headers
│ ├── include
│ ├── init
│ ├── install
│ ├── lib/
│ │ ├── conf
│ │ ├── geoip/
│ │ │ └── conf
│ │ ├── google-perftools/
│ │ │ └── conf
│ │ ├── jemalloc/
│ │ │ ├── conf
│ │ │ └── make
│ │ ├── libatomic/
│ │ │ ├── conf
│ │ │ └── make
│ │ ├── libgd/
│ │ │ └── conf
│ │ ├── libxslt/
│ │ │ └── conf
│ │ ├── make
│ │ ├── openssl/
│ │ │ ├── conf
│ │ │ ├── make
│ │ │ ├── makefile.bcc
│ │ │ └── makefile.msvc
│ │ ├── pcre/
│ │ │ ├── conf
│ │ │ ├── make
│ │ │ ├── makefile.bcc
│ │ │ ├── makefile.msvc
│ │ │ └── makefile.owc
│ │ ├── perl/
│ │ │ ├── conf
│ │ │ └── make
│ │ └── zlib/
│ │ ├── conf
│ │ ├── make
│ │ ├── makefile.bcc
│ │ ├── makefile.msvc
│ │ └── makefile.owc
│ ├── make
│ ├── module
│ ├── modules
│ ├── nohave
│ ├── options
│ ├── os/
│ │ ├── conf
│ │ ├── darwin
│ │ ├── freebsd
│ │ ├── linux
│ │ ├── solaris
│ │ └── win32
│ ├── sources
│ ├── stubs
│ ├── summary
│ ├── threads
│ ├── types/
│ │ ├── sizeof
│ │ ├── typedef
│ │ ├── uintptr_t
│ │ └── value
│ └── unix
├── conf/
│ ├── browsers
│ ├── fastcgi.conf
│ ├── fastcgi_params
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types
│ ├── nginx.conf
│ ├── scgi_params
│ ├── uwsgi_params
│ └── win-utf
├── configure
├── contrib/
│ ├── README
│ ├── dso.in
│ ├── geo2nginx.pl
│ ├── stylechecker.py
│ ├── unicode2nginx/
│ │ ├── koi-utf
│ │ ├── unicode-to-nginx.pl
│ │ └── win-utf
│ └── vim/
│ ├── ftdetect/
│ │ └── nginx.vim
│ ├── ftplugin/
│ │ └── nginx.vim
│ ├── indent/
│ │ └── nginx.vim
│ └── syntax/
│ └── nginx.vim
├── docs/
│ ├── core.md
│ ├── core_cn.md
│ └── modules/
│ ├── TFS_RESTful_API.md
│ ├── TFS_RESTful_API_cn.md
│ ├── ngx_backtrace_module.md
│ ├── ngx_debug_pool.md
│ ├── ngx_debug_pool_cn.md
│ ├── ngx_dso_module.md
│ ├── ngx_dso_module_cn.md
│ ├── ngx_http_concat_cn.md
│ ├── ngx_http_core_module.md
│ ├── ngx_http_core_module_cn.md
│ ├── ngx_http_dubbo_module.md
│ ├── ngx_http_dubbo_module_cn.md
│ ├── ngx_http_limit_req_module.md
│ ├── ngx_http_proxy_connect_module.md
│ ├── ngx_http_proxy_connect_module_cn.md
│ ├── ngx_http_reqstat_module.md
│ ├── ngx_http_reqstat_module_cn.md
│ ├── ngx_http_spdy_module.md
│ ├── ngx_http_spdy_module_cn.md
│ ├── ngx_http_ssl_asynchronous_mode.md
│ ├── ngx_http_ssl_asynchronous_mode_cn.md
│ ├── ngx_http_sysguard.md
│ ├── ngx_http_sysguard_cn.md
│ ├── ngx_http_tfs_module.md
│ ├── ngx_http_tfs_module_cn.md
│ ├── ngx_http_trim_filter_module.md
│ ├── ngx_http_trim_filter_module_cn.md
│ ├── ngx_http_upstream_check_module.md
│ ├── ngx_http_upstream_check_module_cn.md
│ ├── ngx_http_upstream_consistent_hash_module.md
│ ├── ngx_http_upstream_consistent_hash_module_cn.md
│ ├── ngx_http_upstream_dynamic.md
│ ├── ngx_http_upstream_dynamic_cn.md
│ ├── ngx_http_upstream_dyups_module.md
│ ├── ngx_http_upstream_iwrr_module.md
│ ├── ngx_http_upstream_iwrr_module_cn.md
│ ├── ngx_http_upstream_session_sticky_module.md
│ ├── ngx_http_upstream_session_sticky_module_cn.md
│ ├── ngx_http_upstream_vnswrr_module.md
│ ├── ngx_http_upstream_vnswrr_module_cn.md
│ ├── ngx_http_user_agent.md
│ ├── ngx_limit_upstream.md
│ ├── ngx_limit_upstream_cn.md
│ ├── ngx_log_pipe.md
│ ├── ngx_log_pipe_cn.md
│ ├── ngx_procs_module.md
│ └── ngx_procs_module_cn.md
├── html/
│ ├── 50x.html
│ └── index.html
├── man/
│ └── nginx.8
├── modules/
│ ├── mod_common/
│ │ ├── config
│ │ ├── ngx_comm_encrypt.c
│ │ ├── ngx_comm_encrypt.h
│ │ ├── ngx_comm_serialize.c
│ │ ├── ngx_comm_serialize.h
│ │ ├── ngx_comm_shm.c
│ │ ├── ngx_comm_shm.h
│ │ ├── ngx_comm_string.c
│ │ └── ngx_comm_string.h
│ ├── mod_config/
│ │ └── config
│ ├── mod_dubbo/
│ │ ├── README.md
│ │ ├── config
│ │ ├── hessian2/
│ │ │ ├── hessian2_ext.cc
│ │ │ ├── hessian2_ext.h
│ │ │ ├── hessian2_input.cc
│ │ │ ├── hessian2_input.h
│ │ │ ├── hessian2_output.cc
│ │ │ └── hessian2_output.h
│ │ ├── ngx_dubbo.c
│ │ ├── ngx_dubbo.h
│ │ ├── ngx_dubbo_util.cpp
│ │ ├── ngx_http_dubbo_module.c
│ │ ├── ngx_http_dubbo_module.h
│ │ └── utils/
│ │ ├── exceptions.h
│ │ ├── objects.cc
│ │ ├── objects.h
│ │ ├── utils.cc
│ │ └── utils.h
│ ├── mod_strategy/
│ │ ├── config
│ │ ├── ngx_http_strategy_module.c
│ │ ├── ngx_proc_strategy_module.c
│ │ └── ngx_proc_strategy_module.h
│ ├── mod_xudp/
│ │ ├── config
│ │ ├── ngx_xudp.c
│ │ ├── ngx_xudp.h
│ │ ├── ngx_xudp_inc.h
│ │ ├── ngx_xudp_internal.h
│ │ ├── ngx_xudp_module.c
│ │ ├── ngx_xudp_module.h
│ │ └── xquic-xdp/
│ │ ├── dispatch_xquic.c
│ │ ├── readme.md
│ │ ├── test.c
│ │ └── xquic_xdp.h
│ ├── ngx_backtrace_module/
│ │ ├── config
│ │ └── ngx_backtrace_module.c
│ ├── ngx_debug_conn/
│ │ ├── README.cn
│ │ ├── README.md
│ │ ├── config
│ │ ├── ngx_http_debug_conn_module.c
│ │ └── t/
│ │ └── test.t
│ ├── ngx_debug_pool/
│ │ ├── config
│ │ ├── debug_pool.gdb
│ │ ├── ngx_http_debug_pool_module.c
│ │ ├── ngx_palloc.c
│ │ ├── ngx_palloc.h
│ │ └── t/
│ │ └── test.t
│ ├── ngx_debug_timer/
│ │ ├── README.cn
│ │ ├── README.md
│ │ ├── config
│ │ ├── ngx_http_debug_timer_module.c
│ │ └── t/
│ │ └── test.t
│ ├── ngx_http_concat_module/
│ │ ├── config
│ │ └── ngx_http_concat_module.c
│ ├── ngx_http_footer_filter_module/
│ │ ├── config
│ │ └── ngx_http_footer_filter_module.c
│ ├── ngx_http_lua_module/
│ │ ├── .mergify.yml
│ │ ├── .travis.yml
│ │ ├── README.markdown
│ │ ├── config
│ │ ├── doc/
│ │ │ └── HttpLuaModule.wiki
│ │ ├── dtrace/
│ │ │ └── ngx_lua_provider.d
│ │ ├── misc/
│ │ │ └── recv-until-pm/
│ │ │ ├── lib/
│ │ │ │ └── RecvUntil.pm
│ │ │ └── t/
│ │ │ └── sanity.t
│ │ ├── src/
│ │ │ ├── api/
│ │ │ │ └── ngx_http_lua_api.h
│ │ │ ├── ddebug.h
│ │ │ ├── ngx_http_lua_accessby.c
│ │ │ ├── ngx_http_lua_accessby.h
│ │ │ ├── ngx_http_lua_api.c
│ │ │ ├── ngx_http_lua_args.c
│ │ │ ├── ngx_http_lua_args.h
│ │ │ ├── ngx_http_lua_balancer.c
│ │ │ ├── ngx_http_lua_balancer.h
│ │ │ ├── ngx_http_lua_bodyfilterby.c
│ │ │ ├── ngx_http_lua_bodyfilterby.h
│ │ │ ├── ngx_http_lua_cache.c
│ │ │ ├── ngx_http_lua_cache.h
│ │ │ ├── ngx_http_lua_capturefilter.c
│ │ │ ├── ngx_http_lua_capturefilter.h
│ │ │ ├── ngx_http_lua_clfactory.c
│ │ │ ├── ngx_http_lua_clfactory.h
│ │ │ ├── ngx_http_lua_common.h
│ │ │ ├── ngx_http_lua_config.c
│ │ │ ├── ngx_http_lua_config.h
│ │ │ ├── ngx_http_lua_consts.c
│ │ │ ├── ngx_http_lua_consts.h
│ │ │ ├── ngx_http_lua_contentby.c
│ │ │ ├── ngx_http_lua_contentby.h
│ │ │ ├── ngx_http_lua_control.c
│ │ │ ├── ngx_http_lua_control.h
│ │ │ ├── ngx_http_lua_coroutine.c
│ │ │ ├── ngx_http_lua_coroutine.h
│ │ │ ├── ngx_http_lua_ctx.c
│ │ │ ├── ngx_http_lua_ctx.h
│ │ │ ├── ngx_http_lua_directive.c
│ │ │ ├── ngx_http_lua_directive.h
│ │ │ ├── ngx_http_lua_exception.c
│ │ │ ├── ngx_http_lua_exception.h
│ │ │ ├── ngx_http_lua_exitworkerby.c
│ │ │ ├── ngx_http_lua_exitworkerby.h
│ │ │ ├── ngx_http_lua_headerfilterby.c
│ │ │ ├── ngx_http_lua_headerfilterby.h
│ │ │ ├── ngx_http_lua_headers.c
│ │ │ ├── ngx_http_lua_headers.h
│ │ │ ├── ngx_http_lua_headers_in.c
│ │ │ ├── ngx_http_lua_headers_in.h
│ │ │ ├── ngx_http_lua_headers_out.c
│ │ │ ├── ngx_http_lua_headers_out.h
│ │ │ ├── ngx_http_lua_initby.c
│ │ │ ├── ngx_http_lua_initby.h
│ │ │ ├── ngx_http_lua_initworkerby.c
│ │ │ ├── ngx_http_lua_initworkerby.h
│ │ │ ├── ngx_http_lua_input_filters.c
│ │ │ ├── ngx_http_lua_input_filters.h
│ │ │ ├── ngx_http_lua_lex.c
│ │ │ ├── ngx_http_lua_lex.h
│ │ │ ├── ngx_http_lua_log.c
│ │ │ ├── ngx_http_lua_log.h
│ │ │ ├── ngx_http_lua_log_ringbuf.c
│ │ │ ├── ngx_http_lua_log_ringbuf.h
│ │ │ ├── ngx_http_lua_logby.c
│ │ │ ├── ngx_http_lua_logby.h
│ │ │ ├── ngx_http_lua_misc.c
│ │ │ ├── ngx_http_lua_misc.h
│ │ │ ├── ngx_http_lua_module.c
│ │ │ ├── ngx_http_lua_ndk.c
│ │ │ ├── ngx_http_lua_ndk.h
│ │ │ ├── ngx_http_lua_output.c
│ │ │ ├── ngx_http_lua_output.h
│ │ │ ├── ngx_http_lua_pcrefix.c
│ │ │ ├── ngx_http_lua_pcrefix.h
│ │ │ ├── ngx_http_lua_phase.c
│ │ │ ├── ngx_http_lua_phase.h
│ │ │ ├── ngx_http_lua_pipe.c
│ │ │ ├── ngx_http_lua_pipe.h
│ │ │ ├── ngx_http_lua_probe.h
│ │ │ ├── ngx_http_lua_regex.c
│ │ │ ├── ngx_http_lua_regex.h
│ │ │ ├── ngx_http_lua_req_body.c
│ │ │ ├── ngx_http_lua_req_body.h
│ │ │ ├── ngx_http_lua_req_method.c
│ │ │ ├── ngx_http_lua_req_method.h
│ │ │ ├── ngx_http_lua_rewriteby.c
│ │ │ ├── ngx_http_lua_rewriteby.h
│ │ │ ├── ngx_http_lua_script.c
│ │ │ ├── ngx_http_lua_script.h
│ │ │ ├── ngx_http_lua_semaphore.c
│ │ │ ├── ngx_http_lua_semaphore.h
│ │ │ ├── ngx_http_lua_server_rewriteby.c
│ │ │ ├── ngx_http_lua_server_rewriteby.h
│ │ │ ├── ngx_http_lua_setby.c
│ │ │ ├── ngx_http_lua_setby.h
│ │ │ ├── ngx_http_lua_shdict.c
│ │ │ ├── ngx_http_lua_shdict.h
│ │ │ ├── ngx_http_lua_sleep.c
│ │ │ ├── ngx_http_lua_sleep.h
│ │ │ ├── ngx_http_lua_socket_tcp.c
│ │ │ ├── ngx_http_lua_socket_tcp.h
│ │ │ ├── ngx_http_lua_socket_udp.c
│ │ │ ├── ngx_http_lua_socket_udp.h
│ │ │ ├── ngx_http_lua_ssl.c
│ │ │ ├── ngx_http_lua_ssl.h
│ │ │ ├── ngx_http_lua_ssl_certby.c
│ │ │ ├── ngx_http_lua_ssl_certby.h
│ │ │ ├── ngx_http_lua_ssl_client_helloby.c
│ │ │ ├── ngx_http_lua_ssl_client_helloby.h
│ │ │ ├── ngx_http_lua_ssl_ocsp.c
│ │ │ ├── ngx_http_lua_ssl_session_fetchby.c
│ │ │ ├── ngx_http_lua_ssl_session_fetchby.h
│ │ │ ├── ngx_http_lua_ssl_session_storeby.c
│ │ │ ├── ngx_http_lua_ssl_session_storeby.h
│ │ │ ├── ngx_http_lua_string.c
│ │ │ ├── ngx_http_lua_string.h
│ │ │ ├── ngx_http_lua_subrequest.c
│ │ │ ├── ngx_http_lua_subrequest.h
│ │ │ ├── ngx_http_lua_time.c
│ │ │ ├── ngx_http_lua_time.h
│ │ │ ├── ngx_http_lua_timer.c
│ │ │ ├── ngx_http_lua_timer.h
│ │ │ ├── ngx_http_lua_uri.c
│ │ │ ├── ngx_http_lua_uri.h
│ │ │ ├── ngx_http_lua_uthread.c
│ │ │ ├── ngx_http_lua_uthread.h
│ │ │ ├── ngx_http_lua_util.c
│ │ │ ├── ngx_http_lua_util.h
│ │ │ ├── ngx_http_lua_variable.c
│ │ │ ├── ngx_http_lua_variable.h
│ │ │ ├── ngx_http_lua_worker.c
│ │ │ ├── ngx_http_lua_worker.h
│ │ │ ├── ngx_http_lua_worker_thread.c
│ │ │ └── ngx_http_lua_worker_thread.h
│ │ ├── t/
│ │ │ ├── .gitignore
│ │ │ ├── 000--init.t
│ │ │ ├── 000-sanity.t
│ │ │ ├── 001-set.t
│ │ │ ├── 002-content.t
│ │ │ ├── 003-errors.t
│ │ │ ├── 004-require.t
│ │ │ ├── 005-exit.t
│ │ │ ├── 006-escape.t
│ │ │ ├── 007-md5.t
│ │ │ ├── 008-today.t
│ │ │ ├── 009-log.t
│ │ │ ├── 010-request_body.t
│ │ │ ├── 011-md5_bin.t
│ │ │ ├── 012-now.t
│ │ │ ├── 013-base64.t
│ │ │ ├── 014-bugs.t
│ │ │ ├── 015-status.t
│ │ │ ├── 016-resp-header.t
│ │ │ ├── 017-exec.t
│ │ │ ├── 018-ndk.t
│ │ │ ├── 019-const.t
│ │ │ ├── 020-subrequest.t
│ │ │ ├── 021-cookie-time.t
│ │ │ ├── 022-redirect.t
│ │ │ ├── 023-rewrite/
│ │ │ │ ├── client-abort.t
│ │ │ │ ├── exec.t
│ │ │ │ ├── exit.t
│ │ │ │ ├── mixed.t
│ │ │ │ ├── multi-capture.t
│ │ │ │ ├── on-abort.t
│ │ │ │ ├── redirect.t
│ │ │ │ ├── req-body.t
│ │ │ │ ├── req-socket.t
│ │ │ │ ├── request_body.t
│ │ │ │ ├── sanity.t
│ │ │ │ ├── sleep.t
│ │ │ │ ├── socket-keepalive.t
│ │ │ │ ├── subrequest.t
│ │ │ │ ├── tcp-socket-timeout.t
│ │ │ │ ├── tcp-socket.t
│ │ │ │ ├── unix-socket.t
│ │ │ │ ├── uthread-exec.t
│ │ │ │ ├── uthread-exit.t
│ │ │ │ ├── uthread-redirect.t
│ │ │ │ └── uthread-spawn.t
│ │ │ ├── 024-access/
│ │ │ │ ├── auth.t
│ │ │ │ ├── client-abort.t
│ │ │ │ ├── exec.t
│ │ │ │ ├── exit.t
│ │ │ │ ├── mixed.t
│ │ │ │ ├── multi-capture.t
│ │ │ │ ├── on-abort.t
│ │ │ │ ├── redirect.t
│ │ │ │ ├── req-body.t
│ │ │ │ ├── request_body.t
│ │ │ │ ├── sanity.t
│ │ │ │ ├── satisfy.t
│ │ │ │ ├── sleep.t
│ │ │ │ ├── subrequest.t
│ │ │ │ ├── uthread-exec.t
│ │ │ │ ├── uthread-exit.t
│ │ │ │ ├── uthread-redirect.t
│ │ │ │ └── uthread-spawn.t
│ │ │ ├── 025-codecache.t
│ │ │ ├── 026-mysql.t
│ │ │ ├── 027-multi-capture.t
│ │ │ ├── 028-req-header.t
│ │ │ ├── 029-http-time.t
│ │ │ ├── 030-uri-args-with-ctrl.t
│ │ │ ├── 030-uri-args.t
│ │ │ ├── 031-post-args.t
│ │ │ ├── 032-iolist.t
│ │ │ ├── 033-ctx.t
│ │ │ ├── 034-match.t
│ │ │ ├── 035-gmatch.t
│ │ │ ├── 036-sub.t
│ │ │ ├── 037-gsub.t
│ │ │ ├── 038-match-o.t
│ │ │ ├── 039-sub-o.t
│ │ │ ├── 040-gsub-o.t
│ │ │ ├── 041-header-filter.t
│ │ │ ├── 042-crc32.t
│ │ │ ├── 043-shdict.t
│ │ │ ├── 044-req-body.t
│ │ │ ├── 045-ngx-var.t
│ │ │ ├── 046-hmac.t
│ │ │ ├── 047-match-jit.t
│ │ │ ├── 048-match-dfa.t
│ │ │ ├── 049-gmatch-jit.t
│ │ │ ├── 050-gmatch-dfa.t
│ │ │ ├── 051-sub-jit.t
│ │ │ ├── 052-sub-dfa.t
│ │ │ ├── 053-gsub-jit.t
│ │ │ ├── 054-gsub-dfa.t
│ │ │ ├── 055-subreq-vars.t
│ │ │ ├── 056-flush.t
│ │ │ ├── 057-flush-timeout.t
│ │ │ ├── 058-tcp-socket.t
│ │ │ ├── 059-unix-socket.t
│ │ │ ├── 060-lua-memcached.t
│ │ │ ├── 061-lua-redis.t
│ │ │ ├── 062-count.t
│ │ │ ├── 063-abort.t
│ │ │ ├── 064-pcall.t
│ │ │ ├── 065-tcp-socket-timeout.t
│ │ │ ├── 066-socket-receiveuntil.t
│ │ │ ├── 067-req-socket.t
│ │ │ ├── 068-socket-keepalive.t
│ │ │ ├── 069-null.t
│ │ │ ├── 070-sha1.t
│ │ │ ├── 071-idle-socket.t
│ │ │ ├── 072-conditional-get.t
│ │ │ ├── 073-backtrace.t
│ │ │ ├── 074-prefix-var.t
│ │ │ ├── 075-logby.t
│ │ │ ├── 076-no-postpone.t
│ │ │ ├── 077-sleep.t
│ │ │ ├── 078-hup-vars.t
│ │ │ ├── 079-unused-directives.t
│ │ │ ├── 080-hup-shdict.t
│ │ │ ├── 081-bytecode.t
│ │ │ ├── 082-body-filter-2.t
│ │ │ ├── 082-body-filter.t
│ │ │ ├── 083-bad-sock-self.t
│ │ │ ├── 084-inclusive-receiveuntil.t
│ │ │ ├── 085-if.t
│ │ │ ├── 086-init-by.t
│ │ │ ├── 087-udp-socket.t
│ │ │ ├── 088-req-method.t
│ │ │ ├── 089-phase.t
│ │ │ ├── 090-log-socket-errors.t
│ │ │ ├── 091-coroutine.t
│ │ │ ├── 092-eof.t
│ │ │ ├── 093-uthread-spawn.t
│ │ │ ├── 094-uthread-exit.t
│ │ │ ├── 095-uthread-exec.t
│ │ │ ├── 096-uthread-redirect.t
│ │ │ ├── 097-uthread-rewrite.t
│ │ │ ├── 098-uthread-wait.t
│ │ │ ├── 099-c-api.t
│ │ │ ├── 100-client-abort.t
│ │ │ ├── 101-on-abort.t
│ │ │ ├── 102-req-start-time.t
│ │ │ ├── 103-req-http-ver.t
│ │ │ ├── 104-req-raw-header.t
│ │ │ ├── 105-pressure.t
│ │ │ ├── 106-timer.t
│ │ │ ├── 107-timer-errors.t
│ │ │ ├── 108-timer-safe.t
│ │ │ ├── 109-timer-hup.t
│ │ │ ├── 110-etag.t
│ │ │ ├── 111-req-header-ua.t
│ │ │ ├── 112-req-header-conn.t
│ │ │ ├── 113-req-header-cookie.t
│ │ │ ├── 114-config.t
│ │ │ ├── 115-quote-sql-str.t
│ │ │ ├── 116-raw-req-socket.t
│ │ │ ├── 117-raw-req-socket-timeout.t
│ │ │ ├── 118-use-default-type.t
│ │ │ ├── 119-config-prefix.t
│ │ │ ├── 120-re-find.t
│ │ │ ├── 121-version.t
│ │ │ ├── 122-worker-2.t
│ │ │ ├── 122-worker-3.t
│ │ │ ├── 122-worker.t
│ │ │ ├── 123-lua-path.t
│ │ │ ├── 124-init-worker.t
│ │ │ ├── 125-configure-args.t
│ │ │ ├── 126-shdict-frag.t
│ │ │ ├── 127-uthread-kill.t
│ │ │ ├── 128-duplex-tcp-socket.t
│ │ │ ├── 129-ssl-socket.t
│ │ │ ├── 130-internal-api.t
│ │ │ ├── 131-duplex-req-socket.t
│ │ │ ├── 132-lua-blocks.t
│ │ │ ├── 133-worker-count.t
│ │ │ ├── 134-worker-count-5.t
│ │ │ ├── 135-worker-id.t
│ │ │ ├── 136-timer-counts.t
│ │ │ ├── 137-req-misc.t
│ │ │ ├── 138-balancer.t
│ │ │ ├── 139-ssl-cert-by.t
│ │ │ ├── 140-ssl-c-api.t
│ │ │ ├── 141-luajit.t
│ │ │ ├── 142-ssl-session-store.t
│ │ │ ├── 143-ssl-session-fetch.t
│ │ │ ├── 144-shdict-incr-init.t
│ │ │ ├── 145-shdict-list.t
│ │ │ ├── 146-malloc-trim.t
│ │ │ ├── 147-tcp-socket-timeouts.t
│ │ │ ├── 148-fake-shm-zone.t
│ │ │ ├── 149-hup-fake-shm-zone.t
│ │ │ ├── 150-fake-delayed-load.t
│ │ │ ├── 151-initby-hup.t
│ │ │ ├── 152-timer-every.t
│ │ │ ├── 153-semaphore-hup.t
│ │ │ ├── 154-semaphore.t
│ │ │ ├── 155-tls13.t
│ │ │ ├── 156-slow-network.t
│ │ │ ├── 157-socket-keepalive-hup.t
│ │ │ ├── 158-global-var.t
│ │ │ ├── 159-sa-restart.t
│ │ │ ├── 160-disable-init-by-lua.t
│ │ │ ├── 161-load-resty-core.t
│ │ │ ├── 162-exit-worker.t
│ │ │ ├── 162-fake-merge.t
│ │ │ ├── 162-socket-tls-handshake.t
│ │ │ ├── 162-static-module-location.t
│ │ │ ├── 163-exit-worker-hup.t
│ │ │ ├── 163-signal.t
│ │ │ ├── 164-say.t
│ │ │ ├── 165-thread-cache.t
│ │ │ ├── 166-ssl-client-hello.t
│ │ │ ├── 166-worker-thread.t
│ │ │ ├── 167-server-rewrite.t
│ │ │ ├── 168-tcp-socket-bind.t
│ │ │ ├── 185-ngx-buf-double-free.t
│ │ │ ├── 186-cosocket-busy-bufs.t
│ │ │ ├── StapThread.pm
│ │ │ ├── cert/
│ │ │ │ ├── dst-ca.crt
│ │ │ │ ├── equifax.crt
│ │ │ │ ├── mtls_ca.crt
│ │ │ │ ├── mtls_ca.key
│ │ │ │ ├── mtls_cert_gen/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── generate.sh
│ │ │ │ │ ├── mtls_ca.json
│ │ │ │ │ ├── mtls_client.json
│ │ │ │ │ ├── mtls_server.json
│ │ │ │ │ └── profile.json
│ │ │ │ ├── mtls_client.crt
│ │ │ │ ├── mtls_client.key
│ │ │ │ ├── mtls_server.crt
│ │ │ │ ├── mtls_server.key
│ │ │ │ ├── test.crl
│ │ │ │ ├── test.crt
│ │ │ │ ├── test.key
│ │ │ │ ├── test2.crt
│ │ │ │ ├── test2.key
│ │ │ │ ├── test_ecdsa.crt
│ │ │ │ ├── test_ecdsa.key
│ │ │ │ ├── test_passphrase.crt
│ │ │ │ └── test_passphrase.key
│ │ │ ├── data/
│ │ │ │ ├── fake-delayed-load-module/
│ │ │ │ │ ├── config
│ │ │ │ │ └── ngx_http_lua_fake_delayed_load_module.c
│ │ │ │ ├── fake-merge-module/
│ │ │ │ │ ├── config
│ │ │ │ │ └── ngx_http_fake_merge_module.c
│ │ │ │ ├── fake-module/
│ │ │ │ │ ├── config
│ │ │ │ │ └── ngx_http_fake_module.c
│ │ │ │ └── fake-shm-module/
│ │ │ │ ├── config
│ │ │ │ └── ngx_http_lua_fake_shm_module.c
│ │ │ └── lib/
│ │ │ ├── CRC32.lua
│ │ │ ├── Memcached.lua
│ │ │ ├── Redis.lua
│ │ │ └── ljson.lua
│ │ ├── tapset/
│ │ │ └── ngx_lua.stp
│ │ ├── util/
│ │ │ ├── build-with-dd.sh
│ │ │ ├── build-without-ssl.sh
│ │ │ ├── build.sh
│ │ │ ├── fix-comments
│ │ │ ├── gen-lexer-c
│ │ │ ├── nc_server.py
│ │ │ ├── ngx-links
│ │ │ ├── releng
│ │ │ ├── retab
│ │ │ ├── revim
│ │ │ ├── run_test.sh
│ │ │ └── update-readme.sh
│ │ └── valgrind.suppress
│ ├── ngx_http_proxy_connect_module/
│ │ ├── config
│ │ ├── ngx_http_proxy_connect_module.c
│ │ └── t/
│ │ ├── http_proxy_connect.t
│ │ ├── http_proxy_connect_lua.t
│ │ ├── http_proxy_connect_resolve_variables.t
│ │ └── http_proxy_connect_timeout.t
│ ├── ngx_http_reqstat_module/
│ │ ├── config
│ │ ├── ngx_http_reqstat.h
│ │ └── ngx_http_reqstat_module.c
│ ├── ngx_http_slice_module/
│ │ ├── config
│ │ └── ngx_http_slice_module.c
│ ├── ngx_http_sysguard_module/
│ │ ├── config
│ │ └── ngx_http_sysguard_module.c
│ ├── ngx_http_tfs_module/
│ │ ├── config
│ │ ├── ngx_http_connection_pool.c
│ │ ├── ngx_http_connection_pool.h
│ │ ├── ngx_http_tfs.c
│ │ ├── ngx_http_tfs.h
│ │ ├── ngx_http_tfs_block_cache.c
│ │ ├── ngx_http_tfs_block_cache.h
│ │ ├── ngx_http_tfs_data_server_message.c
│ │ ├── ngx_http_tfs_data_server_message.h
│ │ ├── ngx_http_tfs_duplicate.c
│ │ ├── ngx_http_tfs_duplicate.h
│ │ ├── ngx_http_tfs_errno.h
│ │ ├── ngx_http_tfs_json.c
│ │ ├── ngx_http_tfs_json.h
│ │ ├── ngx_http_tfs_local_block_cache.c
│ │ ├── ngx_http_tfs_local_block_cache.h
│ │ ├── ngx_http_tfs_meta_server_message.c
│ │ ├── ngx_http_tfs_meta_server_message.h
│ │ ├── ngx_http_tfs_module.c
│ │ ├── ngx_http_tfs_name_server_message.c
│ │ ├── ngx_http_tfs_name_server_message.h
│ │ ├── ngx_http_tfs_peer_connection.c
│ │ ├── ngx_http_tfs_peer_connection.h
│ │ ├── ngx_http_tfs_protocol.h
│ │ ├── ngx_http_tfs_raw_fsname.c
│ │ ├── ngx_http_tfs_raw_fsname.h
│ │ ├── ngx_http_tfs_rc_server_info.c
│ │ ├── ngx_http_tfs_rc_server_info.h
│ │ ├── ngx_http_tfs_rc_server_message.c
│ │ ├── ngx_http_tfs_rc_server_message.h
│ │ ├── ngx_http_tfs_remote_block_cache.c
│ │ ├── ngx_http_tfs_remote_block_cache.h
│ │ ├── ngx_http_tfs_restful.c
│ │ ├── ngx_http_tfs_restful.h
│ │ ├── ngx_http_tfs_root_server_message.c
│ │ ├── ngx_http_tfs_root_server_message.h
│ │ ├── ngx_http_tfs_serialization.c
│ │ ├── ngx_http_tfs_serialization.h
│ │ ├── ngx_http_tfs_server_handler.c
│ │ ├── ngx_http_tfs_server_handler.h
│ │ ├── ngx_http_tfs_tair_helper.c
│ │ ├── ngx_http_tfs_tair_helper.h
│ │ ├── ngx_http_tfs_timers.c
│ │ ├── ngx_http_tfs_timers.h
│ │ ├── ngx_tfs_common.c
│ │ └── ngx_tfs_common.h
│ ├── ngx_http_trim_filter_module/
│ │ ├── config
│ │ └── ngx_http_trim_filter_module.c
│ ├── ngx_http_upstream_check_module/
│ │ ├── config
│ │ ├── ngx_http_upstream_check_module.c
│ │ └── ngx_http_upstream_check_module.h
│ ├── ngx_http_upstream_consistent_hash_module/
│ │ ├── config
│ │ └── ngx_http_upstream_consistent_hash_module.c
│ ├── ngx_http_upstream_dynamic_module/
│ │ ├── config
│ │ └── ngx_http_upstream_dynamic_module.c
│ ├── ngx_http_upstream_dyups_module/
│ │ ├── config
│ │ ├── ngx_http_dyups.h
│ │ ├── ngx_http_dyups_lua.c
│ │ ├── ngx_http_dyups_lua.h
│ │ └── ngx_http_dyups_module.c
│ ├── ngx_http_upstream_iwrr_module/
│ │ ├── config
│ │ └── ngx_http_upstream_iwrr_module.c
│ ├── ngx_http_upstream_keepalive_module/
│ │ ├── config
│ │ ├── ngx_http_upstream_keepalive_module.c
│ │ ├── ngx_http_upstream_keepalive_module.md
│ │ └── proxy_keepalive.t
│ ├── ngx_http_upstream_session_sticky_module/
│ │ ├── config
│ │ └── ngx_http_upstream_session_sticky_module.c
│ ├── ngx_http_upstream_vnswrr_module/
│ │ ├── config
│ │ └── ngx_http_upstream_vnswrr_module.c
│ ├── ngx_http_user_agent_module/
│ │ ├── config
│ │ └── ngx_http_user_agent_module.c
│ ├── ngx_http_xquic_module/
│ │ ├── README.md
│ │ ├── config
│ │ ├── ngx_http_v3_stream.c
│ │ ├── ngx_http_v3_stream.h
│ │ ├── ngx_http_xquic.c
│ │ ├── ngx_http_xquic.h
│ │ ├── ngx_http_xquic_filter_module.c
│ │ ├── ngx_http_xquic_module.c
│ │ ├── ngx_http_xquic_module.h
│ │ ├── ngx_xquic.c
│ │ ├── ngx_xquic.h
│ │ ├── ngx_xquic_intercom.c
│ │ ├── ngx_xquic_intercom.h
│ │ ├── ngx_xquic_recv.c
│ │ ├── ngx_xquic_recv.h
│ │ ├── ngx_xquic_send.c
│ │ └── ngx_xquic_send.h
│ ├── ngx_ingress_module/
│ │ ├── config
│ │ ├── ingress.pb-c.c
│ │ ├── ingress.pb-c.h
│ │ ├── ingress.proto
│ │ ├── ngx_ingress_module.c
│ │ ├── ngx_ingress_module.h
│ │ ├── ngx_ingress_protobuf.c
│ │ └── ngx_ingress_protobuf.h
│ ├── ngx_multi_upstream_module/
│ │ ├── config
│ │ ├── ngx_http_multi_upstream.c
│ │ ├── ngx_http_multi_upstream_module.c
│ │ ├── ngx_http_multi_upstream_module.h
│ │ ├── ngx_multi_upstream_module.c
│ │ ├── ngx_multi_upstream_module.h
│ │ ├── ngx_stream_multi_upstream_module.c
│ │ └── ngx_stream_multi_upstream_module.h
│ ├── ngx_slab_stat/
│ │ ├── README.cn
│ │ ├── README.md
│ │ ├── config
│ │ ├── ngx_http_slab_stat_module.c
│ │ ├── slab_stat.patch
│ │ └── t/
│ │ └── test.t
│ └── ngx_tongsuo_ntls/
│ ├── README.md
│ ├── config
│ └── t/
│ ├── CA.pm
│ ├── ntls.t
│ ├── ntls_certificate_chain.t
│ ├── ntls_proxy.t
│ ├── ntls_session_cache.t
│ ├── ntls_sni.t
│ ├── ntls_sni_sessions.t
│ ├── ntls_variables.t
│ ├── ntls_verify_client.t
│ ├── ntls_verify_depth.t
│ ├── stream_ntls.t
│ ├── stream_ntls_proxy.t
│ ├── stream_ntls_session_cache.t
│ ├── stream_ntls_variables.t
│ ├── stream_ntls_verify_client.t
│ └── stream_sni.t
├── packages/
│ └── debian/
│ ├── README.Debian
│ ├── README.md
│ ├── README.source
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── docs
│ ├── files
│ ├── init.d
│ ├── logrotate
│ ├── nginx-debug.install
│ ├── nginx.conf
│ ├── nginx.default
│ ├── nginx.vh.default.conf
│ ├── nginx.vh.example_ssl.conf
│ ├── rules
│ ├── source/
│ │ └── format
│ ├── tengine.debhelper.log
│ ├── tengine.dirs
│ ├── tengine.doc-base.EX
│ ├── tengine.docs
│ ├── tengine.postinst
│ ├── tengine.postinst.debhelper
│ ├── tengine.postrm
│ ├── tengine.postrm.debhelper
│ ├── tengine.preinst
│ ├── tengine.prerm
│ ├── tengine.prerm.debhelper
│ └── tengine.substvars
├── src/
│ ├── core/
│ │ ├── nginx.c
│ │ ├── nginx.h
│ │ ├── ngx_array.c
│ │ ├── ngx_array.h
│ │ ├── ngx_buf.c
│ │ ├── ngx_buf.h
│ │ ├── ngx_conf_file.c
│ │ ├── ngx_conf_file.h
│ │ ├── ngx_config.h
│ │ ├── ngx_connection.c
│ │ ├── ngx_connection.h
│ │ ├── ngx_core.h
│ │ ├── ngx_cpuinfo.c
│ │ ├── ngx_crc.h
│ │ ├── ngx_crc32.c
│ │ ├── ngx_crc32.h
│ │ ├── ngx_crypt.c
│ │ ├── ngx_crypt.h
│ │ ├── ngx_cycle.c
│ │ ├── ngx_cycle.h
│ │ ├── ngx_file.c
│ │ ├── ngx_file.h
│ │ ├── ngx_hash.c
│ │ ├── ngx_hash.h
│ │ ├── ngx_inet.c
│ │ ├── ngx_inet.h
│ │ ├── ngx_list.c
│ │ ├── ngx_list.h
│ │ ├── ngx_log.c
│ │ ├── ngx_log.h
│ │ ├── ngx_md5.c
│ │ ├── ngx_md5.h
│ │ ├── ngx_module.c
│ │ ├── ngx_module.h
│ │ ├── ngx_murmurhash.c
│ │ ├── ngx_murmurhash.h
│ │ ├── ngx_open_file_cache.c
│ │ ├── ngx_open_file_cache.h
│ │ ├── ngx_output_chain.c
│ │ ├── ngx_palloc.c
│ │ ├── ngx_palloc.h
│ │ ├── ngx_parse.c
│ │ ├── ngx_parse.h
│ │ ├── ngx_parse_time.c
│ │ ├── ngx_parse_time.h
│ │ ├── ngx_proxy_protocol.c
│ │ ├── ngx_proxy_protocol.h
│ │ ├── ngx_queue.c
│ │ ├── ngx_queue.h
│ │ ├── ngx_radix_tree.c
│ │ ├── ngx_radix_tree.h
│ │ ├── ngx_rbtree.c
│ │ ├── ngx_rbtree.h
│ │ ├── ngx_regex.c
│ │ ├── ngx_regex.h
│ │ ├── ngx_resolver.c
│ │ ├── ngx_resolver.h
│ │ ├── ngx_rwlock.c
│ │ ├── ngx_rwlock.h
│ │ ├── ngx_segment_tree.c
│ │ ├── ngx_segment_tree.h
│ │ ├── ngx_sha1.c
│ │ ├── ngx_sha1.h
│ │ ├── ngx_shmtx.c
│ │ ├── ngx_shmtx.h
│ │ ├── ngx_slab.c
│ │ ├── ngx_slab.h
│ │ ├── ngx_spinlock.c
│ │ ├── ngx_string.c
│ │ ├── ngx_string.h
│ │ ├── ngx_syslog.c
│ │ ├── ngx_syslog.h
│ │ ├── ngx_thread_pool.c
│ │ ├── ngx_thread_pool.h
│ │ ├── ngx_times.c
│ │ ├── ngx_times.h
│ │ ├── ngx_trie.c
│ │ └── ngx_trie.h
│ ├── event/
│ │ ├── modules/
│ │ │ ├── ngx_aio_module.c
│ │ │ ├── ngx_devpoll_module.c
│ │ │ ├── ngx_epoll_module.c
│ │ │ ├── ngx_eventport_module.c
│ │ │ ├── ngx_iocp_module.c
│ │ │ ├── ngx_iocp_module.h
│ │ │ ├── ngx_kqueue_module.c
│ │ │ ├── ngx_poll_module.c
│ │ │ ├── ngx_rtsig_module.c
│ │ │ ├── ngx_select_module.c
│ │ │ ├── ngx_win32_poll_module.c
│ │ │ └── ngx_win32_select_module.c
│ │ ├── ngx_dlopen.h
│ │ ├── ngx_event.c
│ │ ├── ngx_event.h
│ │ ├── ngx_event_accept.c
│ │ ├── ngx_event_acceptex.c
│ │ ├── ngx_event_connect.c
│ │ ├── ngx_event_connect.h
│ │ ├── ngx_event_connectex.c
│ │ ├── ngx_event_openssl.c
│ │ ├── ngx_event_openssl.h
│ │ ├── ngx_event_openssl_stapling.c
│ │ ├── ngx_event_pipe.c
│ │ ├── ngx_event_pipe.h
│ │ ├── ngx_event_posted.c
│ │ ├── ngx_event_posted.h
│ │ ├── ngx_event_timer.c
│ │ ├── ngx_event_timer.h
│ │ ├── ngx_event_udp.c
│ │ ├── ngx_event_udp.h
│ │ ├── ngx_event_udpv2.c
│ │ └── ngx_event_udpv2.h
│ ├── http/
│ │ ├── modules/
│ │ │ ├── ngx_http_access_module.c
│ │ │ ├── ngx_http_addition_filter_module.c
│ │ │ ├── ngx_http_auth_basic_module.c
│ │ │ ├── ngx_http_auth_request_module.c
│ │ │ ├── ngx_http_autoindex_module.c
│ │ │ ├── ngx_http_browser_module.c
│ │ │ ├── ngx_http_charset_filter_module.c
│ │ │ ├── ngx_http_chunked_filter_module.c
│ │ │ ├── ngx_http_dav_module.c
│ │ │ ├── ngx_http_degradation_module.c
│ │ │ ├── ngx_http_empty_gif_module.c
│ │ │ ├── ngx_http_fastcgi_module.c
│ │ │ ├── ngx_http_flv_module.c
│ │ │ ├── ngx_http_geo_module.c
│ │ │ ├── ngx_http_geoip_module.c
│ │ │ ├── ngx_http_grpc_module.c
│ │ │ ├── ngx_http_gunzip_filter_module.c
│ │ │ ├── ngx_http_gzip_filter_module.c
│ │ │ ├── ngx_http_gzip_static_module.c
│ │ │ ├── ngx_http_headers_filter_module.c
│ │ │ ├── ngx_http_image_filter_module.c
│ │ │ ├── ngx_http_index_module.c
│ │ │ ├── ngx_http_limit_conn_module.c
│ │ │ ├── ngx_http_limit_req_module.c
│ │ │ ├── ngx_http_log_module.c
│ │ │ ├── ngx_http_map_module.c
│ │ │ ├── ngx_http_memcached_module.c
│ │ │ ├── ngx_http_mirror_module.c
│ │ │ ├── ngx_http_mp4_module.c
│ │ │ ├── ngx_http_not_modified_filter_module.c
│ │ │ ├── ngx_http_proxy_module.c
│ │ │ ├── ngx_http_random_index_module.c
│ │ │ ├── ngx_http_range_filter_module.c
│ │ │ ├── ngx_http_realip_module.c
│ │ │ ├── ngx_http_referer_module.c
│ │ │ ├── ngx_http_rewrite_module.c
│ │ │ ├── ngx_http_scgi_module.c
│ │ │ ├── ngx_http_secure_link_module.c
│ │ │ ├── ngx_http_slice_filter_module.c
│ │ │ ├── ngx_http_split_clients_module.c
│ │ │ ├── ngx_http_ssi_filter_module.c
│ │ │ ├── ngx_http_ssi_filter_module.h
│ │ │ ├── ngx_http_ssl_module.c
│ │ │ ├── ngx_http_ssl_module.h
│ │ │ ├── ngx_http_static_module.c
│ │ │ ├── ngx_http_stub_status_module.c
│ │ │ ├── ngx_http_sub_filter_module.c
│ │ │ ├── ngx_http_try_files_module.c
│ │ │ ├── ngx_http_upstream_hash_module.c
│ │ │ ├── ngx_http_upstream_ip_hash_module.c
│ │ │ ├── ngx_http_upstream_keepalive_module.c
│ │ │ ├── ngx_http_upstream_least_conn_module.c
│ │ │ ├── ngx_http_upstream_random_module.c
│ │ │ ├── ngx_http_upstream_zone_module.c
│ │ │ ├── ngx_http_userid_filter_module.c
│ │ │ ├── ngx_http_uwsgi_module.c
│ │ │ ├── ngx_http_xslt_filter_module.c
│ │ │ └── perl/
│ │ │ ├── Makefile.PL
│ │ │ ├── nginx.pm
│ │ │ ├── nginx.xs
│ │ │ ├── ngx_http_perl_module.c
│ │ │ ├── ngx_http_perl_module.h
│ │ │ └── typemap
│ │ ├── ngx_http.c
│ │ ├── ngx_http.h
│ │ ├── ngx_http_cache.h
│ │ ├── ngx_http_config.h
│ │ ├── ngx_http_copy_filter_module.c
│ │ ├── ngx_http_core_module.c
│ │ ├── ngx_http_core_module.h
│ │ ├── ngx_http_file_cache.c
│ │ ├── ngx_http_header_filter_module.c
│ │ ├── ngx_http_huff_decode.c
│ │ ├── ngx_http_huff_encode.c
│ │ ├── ngx_http_parse.c
│ │ ├── ngx_http_postpone_filter_module.c
│ │ ├── ngx_http_request.c
│ │ ├── ngx_http_request.h
│ │ ├── ngx_http_request_body.c
│ │ ├── ngx_http_script.c
│ │ ├── ngx_http_script.h
│ │ ├── ngx_http_special_response.c
│ │ ├── ngx_http_upstream.c
│ │ ├── ngx_http_upstream.h
│ │ ├── ngx_http_upstream_round_robin.c
│ │ ├── ngx_http_upstream_round_robin.h
│ │ ├── ngx_http_variables.c
│ │ ├── ngx_http_variables.h
│ │ ├── ngx_http_write_filter_module.c
│ │ └── v2/
│ │ ├── ngx_http_v2.c
│ │ ├── ngx_http_v2.h
│ │ ├── ngx_http_v2_encode.c
│ │ ├── ngx_http_v2_filter_module.c
│ │ ├── ngx_http_v2_module.c
│ │ ├── ngx_http_v2_module.h
│ │ └── ngx_http_v2_table.c
│ ├── mail/
│ │ ├── ngx_mail.c
│ │ ├── ngx_mail.h
│ │ ├── ngx_mail_auth_http_module.c
│ │ ├── ngx_mail_core_module.c
│ │ ├── ngx_mail_handler.c
│ │ ├── ngx_mail_imap_handler.c
│ │ ├── ngx_mail_imap_module.c
│ │ ├── ngx_mail_imap_module.h
│ │ ├── ngx_mail_parse.c
│ │ ├── ngx_mail_pop3_handler.c
│ │ ├── ngx_mail_pop3_module.c
│ │ ├── ngx_mail_pop3_module.h
│ │ ├── ngx_mail_proxy_module.c
│ │ ├── ngx_mail_realip_module.c
│ │ ├── ngx_mail_smtp_handler.c
│ │ ├── ngx_mail_smtp_module.c
│ │ ├── ngx_mail_smtp_module.h
│ │ ├── ngx_mail_ssl_module.c
│ │ └── ngx_mail_ssl_module.h
│ ├── misc/
│ │ ├── ngx_cpp_test_module.cpp
│ │ └── ngx_google_perftools_module.c
│ ├── os/
│ │ └── unix/
│ │ ├── ngx_aio_read.c
│ │ ├── ngx_aio_read_chain.c
│ │ ├── ngx_aio_write.c
│ │ ├── ngx_aio_write_chain.c
│ │ ├── ngx_alloc.c
│ │ ├── ngx_alloc.h
│ │ ├── ngx_atomic.h
│ │ ├── ngx_channel.c
│ │ ├── ngx_channel.h
│ │ ├── ngx_daemon.c
│ │ ├── ngx_darwin.h
│ │ ├── ngx_darwin_config.h
│ │ ├── ngx_darwin_init.c
│ │ ├── ngx_darwin_sendfile_chain.c
│ │ ├── ngx_dlopen.c
│ │ ├── ngx_dlopen.h
│ │ ├── ngx_errno.c
│ │ ├── ngx_errno.h
│ │ ├── ngx_file_aio_read.c
│ │ ├── ngx_files.c
│ │ ├── ngx_files.h
│ │ ├── ngx_freebsd.h
│ │ ├── ngx_freebsd_config.h
│ │ ├── ngx_freebsd_init.c
│ │ ├── ngx_freebsd_sendfile_chain.c
│ │ ├── ngx_gcc_atomic_amd64.h
│ │ ├── ngx_gcc_atomic_ppc.h
│ │ ├── ngx_gcc_atomic_sparc64.h
│ │ ├── ngx_gcc_atomic_x86.h
│ │ ├── ngx_linux.h
│ │ ├── ngx_linux_aio_read.c
│ │ ├── ngx_linux_config.h
│ │ ├── ngx_linux_init.c
│ │ ├── ngx_linux_sendfile_chain.c
│ │ ├── ngx_os.h
│ │ ├── ngx_pipe.c
│ │ ├── ngx_pipe.h
│ │ ├── ngx_posix_config.h
│ │ ├── ngx_posix_init.c
│ │ ├── ngx_process.c
│ │ ├── ngx_process.h
│ │ ├── ngx_process_cycle.c
│ │ ├── ngx_process_cycle.h
│ │ ├── ngx_readv_chain.c
│ │ ├── ngx_recv.c
│ │ ├── ngx_send.c
│ │ ├── ngx_setaffinity.c
│ │ ├── ngx_setaffinity.h
│ │ ├── ngx_setproctitle.c
│ │ ├── ngx_setproctitle.h
│ │ ├── ngx_shmem.c
│ │ ├── ngx_shmem.h
│ │ ├── ngx_socket.c
│ │ ├── ngx_socket.h
│ │ ├── ngx_solaris.h
│ │ ├── ngx_solaris_config.h
│ │ ├── ngx_solaris_init.c
│ │ ├── ngx_solaris_sendfilev_chain.c
│ │ ├── ngx_sunpro_amd64.il
│ │ ├── ngx_sunpro_atomic_sparc64.h
│ │ ├── ngx_sunpro_sparc64.il
│ │ ├── ngx_sunpro_x86.il
│ │ ├── ngx_sysinfo.c
│ │ ├── ngx_sysinfo.h
│ │ ├── ngx_thread.h
│ │ ├── ngx_thread_cond.c
│ │ ├── ngx_thread_id.c
│ │ ├── ngx_thread_mutex.c
│ │ ├── ngx_time.c
│ │ ├── ngx_time.h
│ │ ├── ngx_udp_recv.c
│ │ ├── ngx_udp_send.c
│ │ ├── ngx_udp_sendmsg_chain.c
│ │ ├── ngx_user.c
│ │ ├── ngx_user.h
│ │ └── ngx_writev_chain.c
│ ├── proc/
│ │ ├── ngx_proc.c
│ │ └── ngx_proc.h
│ └── stream/
│ ├── ngx_stream.c
│ ├── ngx_stream.h
│ ├── ngx_stream_access_module.c
│ ├── ngx_stream_core_module.c
│ ├── ngx_stream_geo_module.c
│ ├── ngx_stream_geoip_module.c
│ ├── ngx_stream_handler.c
│ ├── ngx_stream_limit_conn_module.c
│ ├── ngx_stream_log_module.c
│ ├── ngx_stream_map_module.c
│ ├── ngx_stream_proxy_module.c
│ ├── ngx_stream_realip_module.c
│ ├── ngx_stream_return_module.c
│ ├── ngx_stream_script.c
│ ├── ngx_stream_script.h
│ ├── ngx_stream_set_module.c
│ ├── ngx_stream_split_clients_module.c
│ ├── ngx_stream_ssl_module.c
│ ├── ngx_stream_ssl_module.h
│ ├── ngx_stream_ssl_preread_module.c
│ ├── ngx_stream_upstream.c
│ ├── ngx_stream_upstream.h
│ ├── ngx_stream_upstream_hash_module.c
│ ├── ngx_stream_upstream_least_conn_module.c
│ ├── ngx_stream_upstream_random_module.c
│ ├── ngx_stream_upstream_round_robin.c
│ ├── ngx_stream_upstream_round_robin.h
│ ├── ngx_stream_upstream_zone_module.c
│ ├── ngx_stream_variables.c
│ ├── ngx_stream_variables.h
│ └── ngx_stream_write_filter_module.c
└── tests/
├── nginx-tests/
│ ├── nginx-tests/
│ │ ├── LICENSE
│ │ ├── README
│ │ ├── access.t
│ │ ├── access_log.t
│ │ ├── access_log_variables.t
│ │ ├── addition.t
│ │ ├── addition_buffered.t
│ │ ├── auth_basic.t
│ │ ├── auth_delay.t
│ │ ├── auth_request.t
│ │ ├── auth_request_satisfy.t
│ │ ├── auth_request_set.t
│ │ ├── autoindex.t
│ │ ├── autoindex_format.t
│ │ ├── binary_upgrade.t
│ │ ├── body.t
│ │ ├── body_chunked.t
│ │ ├── charset.t
│ │ ├── charset_gzip_static.t
│ │ ├── config_dump.t
│ │ ├── dav.t
│ │ ├── dav_chunked.t
│ │ ├── dav_utf8.t
│ │ ├── debug_connection.t
│ │ ├── debug_connection_syslog.t
│ │ ├── debug_connection_unix.t
│ │ ├── empty_gif.t
│ │ ├── error_log.t
│ │ ├── fastcgi.t
│ │ ├── fastcgi_body.t
│ │ ├── fastcgi_body2.t
│ │ ├── fastcgi_buffering.t
│ │ ├── fastcgi_cache.t
│ │ ├── fastcgi_extra_data.t
│ │ ├── fastcgi_header_params.t
│ │ ├── fastcgi_keepalive.t
│ │ ├── fastcgi_merge_params.t
│ │ ├── fastcgi_merge_params2.t
│ │ ├── fastcgi_request_buffering.t
│ │ ├── fastcgi_request_buffering_chunked.t
│ │ ├── fastcgi_split.t
│ │ ├── fastcgi_unix.t
│ │ ├── fastcgi_variables.t
│ │ ├── geo.t
│ │ ├── geo_binary.t
│ │ ├── geo_ipv6.t
│ │ ├── geo_unix.t
│ │ ├── geoip.t
│ │ ├── grpc.t
│ │ ├── grpc_next_upstream.t
│ │ ├── grpc_pass.t
│ │ ├── grpc_request_buffering.t
│ │ ├── grpc_ssl.t
│ │ ├── gunzip.t
│ │ ├── gunzip_memcached.t
│ │ ├── gunzip_perl.t
│ │ ├── gunzip_ssi.t
│ │ ├── gunzip_static.t
│ │ ├── gzip.t
│ │ ├── gzip_flush.t
│ │ ├── h2.t
│ │ ├── h2_absolute_redirect.t
│ │ ├── h2_auth_request.t
│ │ ├── h2_error_page.t
│ │ ├── h2_fastcgi_request_buffering.t
│ │ ├── h2_headers.t
│ │ ├── h2_keepalive.t
│ │ ├── h2_limit_conn.t
│ │ ├── h2_limit_req.t
│ │ ├── h2_priority.t
│ │ ├── h2_proxy_cache.t
│ │ ├── h2_proxy_max_temp_file_size.t
│ │ ├── h2_proxy_protocol.t
│ │ ├── h2_proxy_request_buffering.t
│ │ ├── h2_proxy_request_buffering_redirect.t
│ │ ├── h2_proxy_request_buffering_ssl.t
│ │ ├── h2_proxy_ssl.t
│ │ ├── h2_request_body.t
│ │ ├── h2_request_body_extra.t
│ │ ├── h2_request_body_js.t
│ │ ├── h2_request_body_preread.t
│ │ ├── h2_server_push.t
│ │ ├── h2_server_tokens.t
│ │ ├── h2_ssl.t
│ │ ├── h2_ssl_proxy_cache.t
│ │ ├── h2_ssl_proxy_protocol.t
│ │ ├── h2_ssl_variables.t
│ │ ├── h2_ssl_verify_client.t
│ │ ├── h2_trailers.t
│ │ ├── h2_variables.t
│ │ ├── headers.t
│ │ ├── http_absolute_redirect.t
│ │ ├── http_disable_symlinks.t
│ │ ├── http_error_page.t
│ │ ├── http_expect_100_continue.t
│ │ ├── http_header_buffers.t
│ │ ├── http_headers_multi.t
│ │ ├── http_host.t
│ │ ├── http_include.t
│ │ ├── http_keepalive.t
│ │ ├── http_keepalive_shutdown.t
│ │ ├── http_listen.t
│ │ ├── http_listen_wildcard.t
│ │ ├── http_location.t
│ │ ├── http_location_auto.t
│ │ ├── http_location_win32.t
│ │ ├── http_method.t
│ │ ├── http_resolver.t
│ │ ├── http_resolver_aaaa.t
│ │ ├── http_resolver_cleanup.t
│ │ ├── http_resolver_cname.t
│ │ ├── http_resolver_ipv4.t
│ │ ├── http_server_name.t
│ │ ├── http_time_http_variable.t
│ │ ├── http_try_files.t
│ │ ├── http_uri.t
│ │ ├── http_variables.t
│ │ ├── ignore_invalid_headers.t
│ │ ├── image_filter.t
│ │ ├── image_filter_finalize.t
│ │ ├── image_filter_webp.t
│ │ ├── index.t
│ │ ├── js.t
│ │ ├── js_args.t
│ │ ├── js_async.t
│ │ ├── js_body_filter.t
│ │ ├── js_body_filter_if.t
│ │ ├── js_buffer.t
│ │ ├── js_dump.t
│ │ ├── js_fetch.t
│ │ ├── js_fetch_https.t
│ │ ├── js_fetch_resolver.t
│ │ ├── js_fetch_timeout.t
│ │ ├── js_fetch_verify.t
│ │ ├── js_header_filter.t
│ │ ├── js_header_filter_if.t
│ │ ├── js_headers.t
│ │ ├── js_import.t
│ │ ├── js_import2.t
│ │ ├── js_internal_redirect.t
│ │ ├── js_modules.t
│ │ ├── js_ngx.t
│ │ ├── js_object.t
│ │ ├── js_paths.t
│ │ ├── js_preload_object.t
│ │ ├── js_promise.t
│ │ ├── js_request_body.t
│ │ ├── js_return.t
│ │ ├── js_subrequests.t
│ │ ├── js_var.t
│ │ ├── js_var2.t
│ │ ├── js_variables.t
│ │ ├── lib/
│ │ │ ├── Test/
│ │ │ │ ├── Nginx/
│ │ │ │ │ ├── HTTP2.pm
│ │ │ │ │ ├── IMAP.pm
│ │ │ │ │ ├── POP3.pm
│ │ │ │ │ ├── SMTP.pm
│ │ │ │ │ └── Stream.pm
│ │ │ │ └── Nginx.pm
│ │ │ └── Time/
│ │ │ ├── Parse.pm
│ │ │ └── Zone.pm
│ │ ├── limit_conn.t
│ │ ├── limit_conn_complex.t
│ │ ├── limit_conn_dry_run.t
│ │ ├── limit_rate.t
│ │ ├── limit_req.t
│ │ ├── limit_req2.t
│ │ ├── limit_req_delay.t
│ │ ├── limit_req_dry_run.t
│ │ ├── mail_capability.t
│ │ ├── mail_error_log.t
│ │ ├── mail_imap.t
│ │ ├── mail_imap_ssl.t
│ │ ├── mail_max_errors.t
│ │ ├── mail_pop3.t
│ │ ├── mail_proxy_protocol.t
│ │ ├── mail_proxy_smtp_auth.t
│ │ ├── mail_resolver.t
│ │ ├── mail_smtp.t
│ │ ├── mail_smtp_greeting_delay.t
│ │ ├── mail_smtp_xclient.t
│ │ ├── mail_ssl.t
│ │ ├── mail_ssl_conf_command.t
│ │ ├── mail_ssl_session_reuse.t
│ │ ├── map.t
│ │ ├── map_complex.t
│ │ ├── map_volatile.t
│ │ ├── memcached.t
│ │ ├── memcached_fake.t
│ │ ├── memcached_fake_extra.t
│ │ ├── memcached_keepalive.t
│ │ ├── memcached_keepalive_stale.t
│ │ ├── merge_slashes.t
│ │ ├── mirror.t
│ │ ├── mirror_proxy.t
│ │ ├── mp4.t
│ │ ├── mp4_ssi.t
│ │ ├── mp4_start_key_frame.t
│ │ ├── msie_refresh.t
│ │ ├── not_modified.t
│ │ ├── not_modified_finalize.t
│ │ ├── not_modified_proxy.t
│ │ ├── perl.t
│ │ ├── perl_gzip.t
│ │ ├── perl_sleep.t
│ │ ├── perl_ssi.t
│ │ ├── post_action.t
│ │ ├── proxy.t
│ │ ├── proxy_available.t
│ │ ├── proxy_bind.t
│ │ ├── proxy_bind_transparent.t
│ │ ├── proxy_bind_transparent_capability.t
│ │ ├── proxy_cache.t
│ │ ├── proxy_cache_bypass.t
│ │ ├── proxy_cache_chunked.t
│ │ ├── proxy_cache_control.t
│ │ ├── proxy_cache_convert_head.t
│ │ ├── proxy_cache_error.t
│ │ ├── proxy_cache_lock.t
│ │ ├── proxy_cache_lock_age.t
│ │ ├── proxy_cache_lock_ssi.t
│ │ ├── proxy_cache_manager.t
│ │ ├── proxy_cache_max_range_offset.t
│ │ ├── proxy_cache_min_free.t
│ │ ├── proxy_cache_path.t
│ │ ├── proxy_cache_range.t
│ │ ├── proxy_cache_revalidate.t
│ │ ├── proxy_cache_use_stale.t
│ │ ├── proxy_cache_valid.t
│ │ ├── proxy_cache_variables.t
│ │ ├── proxy_cache_vary.t
│ │ ├── proxy_chunked.t
│ │ ├── proxy_chunked_extra.t
│ │ ├── proxy_cookie.t
│ │ ├── proxy_cookie_flags.t
│ │ ├── proxy_duplicate_headers.t
│ │ ├── proxy_extra_data.t
│ │ ├── proxy_force_ranges.t
│ │ ├── proxy_if.t
│ │ ├── proxy_implicit.t
│ │ ├── proxy_intercept_errors.t
│ │ ├── proxy_keepalive.t
│ │ ├── proxy_limit_rate.t
│ │ ├── proxy_max_temp_file_size.t
│ │ ├── proxy_merge_headers.t
│ │ ├── proxy_method.t
│ │ ├── proxy_next_upstream.t
│ │ ├── proxy_next_upstream_tries.t
│ │ ├── proxy_noclose.t
│ │ ├── proxy_non_idempotent.t
│ │ ├── proxy_pass_request.t
│ │ ├── proxy_protocol.t
│ │ ├── proxy_protocol2.t
│ │ ├── proxy_protocol2_port.t
│ │ ├── proxy_protocol2_server.t
│ │ ├── proxy_protocol2_tlv.t
│ │ ├── proxy_protocol_ipv6.t
│ │ ├── proxy_protocol_port.t
│ │ ├── proxy_protocol_server.t
│ │ ├── proxy_protocol_unix.t
│ │ ├── proxy_redirect.t
│ │ ├── proxy_request_buffering.t
│ │ ├── proxy_request_buffering_chunked.t
│ │ ├── proxy_request_buffering_keepalive.t
│ │ ├── proxy_request_buffering_ssl.t
│ │ ├── proxy_set_body.t
│ │ ├── proxy_ssi_body.t
│ │ ├── proxy_ssl.t
│ │ ├── proxy_ssl_certificate.t
│ │ ├── proxy_ssl_certificate_empty.t
│ │ ├── proxy_ssl_certificate_vars.t
│ │ ├── proxy_ssl_conf_command.t
│ │ ├── proxy_ssl_keepalive.t
│ │ ├── proxy_ssl_name.t
│ │ ├── proxy_ssl_verify.t
│ │ ├── proxy_store.t
│ │ ├── proxy_unfinished.t
│ │ ├── proxy_unix.t
│ │ ├── proxy_upgrade.t
│ │ ├── proxy_upstream_cookie.t
│ │ ├── proxy_variables.t
│ │ ├── proxy_websocket.t
│ │ ├── proxy_xar.t
│ │ ├── random_index.t
│ │ ├── range.t
│ │ ├── range_charset.t
│ │ ├── range_clearing.t
│ │ ├── range_flv.t
│ │ ├── range_if_range.t
│ │ ├── range_mp4.t
│ │ ├── realip.t
│ │ ├── realip_hostname.t
│ │ ├── realip_remote_addr.t
│ │ ├── realip_remote_port.t
│ │ ├── referer.t
│ │ ├── request_id.t
│ │ ├── rewrite.t
│ │ ├── rewrite_if.t
│ │ ├── rewrite_set.t
│ │ ├── rewrite_unescape.t
│ │ ├── scgi.t
│ │ ├── scgi_body.t
│ │ ├── scgi_cache.t
│ │ ├── scgi_extra_data.t
│ │ ├── scgi_gzip.t
│ │ ├── scgi_merge_params.t
│ │ ├── secure_link.t
│ │ ├── server_tokens.t
│ │ ├── slice.t
│ │ ├── split_clients.t
│ │ ├── ssi.t
│ │ ├── ssi_delayed.t
│ │ ├── ssi_if.t
│ │ ├── ssi_include_big.t
│ │ ├── ssi_waited.t
│ │ ├── ssl.t
│ │ ├── ssl_certificate.t
│ │ ├── ssl_certificate_chain.t
│ │ ├── ssl_certificate_perl.t
│ │ ├── ssl_certificates.t
│ │ ├── ssl_client_escaped_cert.t
│ │ ├── ssl_conf_command.t
│ │ ├── ssl_crl.t
│ │ ├── ssl_curve.t
│ │ ├── ssl_engine_keys.t
│ │ ├── ssl_password_file.t
│ │ ├── ssl_proxy_protocol.t
│ │ ├── ssl_proxy_upgrade.t
│ │ ├── ssl_reject_handshake.t
│ │ ├── ssl_session_reuse.t
│ │ ├── ssl_session_ticket_key.t
│ │ ├── ssl_sni.t
│ │ ├── ssl_sni_reneg.t
│ │ ├── ssl_sni_sessions.t
│ │ ├── ssl_stapling.t
│ │ ├── ssl_verify_client.t
│ │ ├── ssl_verify_depth.t
│ │ ├── stream_access.t
│ │ ├── stream_access_log.t
│ │ ├── stream_access_log_escape.t
│ │ ├── stream_access_log_none.t
│ │ ├── stream_error_log.t
│ │ ├── stream_geo.t
│ │ ├── stream_geo_binary.t
│ │ ├── stream_geo_ipv6.t
│ │ ├── stream_geo_unix.t
│ │ ├── stream_geoip.t
│ │ ├── stream_js.t
│ │ ├── stream_js_buffer.t
│ │ ├── stream_js_exit.t
│ │ ├── stream_js_fetch.t
│ │ ├── stream_js_fetch_https.t
│ │ ├── stream_js_import.t
│ │ ├── stream_js_import2.t
│ │ ├── stream_js_ngx.t
│ │ ├── stream_js_object.t
│ │ ├── stream_js_preload_object.t
│ │ ├── stream_js_var.t
│ │ ├── stream_js_var2.t
│ │ ├── stream_js_variables.t
│ │ ├── stream_limit_conn.t
│ │ ├── stream_limit_conn_complex.t
│ │ ├── stream_limit_conn_dry_run.t
│ │ ├── stream_limit_rate.t
│ │ ├── stream_limit_rate2.t
│ │ ├── stream_map.t
│ │ ├── stream_proxy.t
│ │ ├── stream_proxy_bind.t
│ │ ├── stream_proxy_complex.t
│ │ ├── stream_proxy_half_close.t
│ │ ├── stream_proxy_next_upstream.t
│ │ ├── stream_proxy_protocol.t
│ │ ├── stream_proxy_protocol2_tlv.t
│ │ ├── stream_proxy_protocol_ipv6.t
│ │ ├── stream_proxy_protocol_ssl.t
│ │ ├── stream_proxy_ssl.t
│ │ ├── stream_proxy_ssl_certificate.t
│ │ ├── stream_proxy_ssl_certificate_vars.t
│ │ ├── stream_proxy_ssl_conf_command.t
│ │ ├── stream_proxy_ssl_name.t
│ │ ├── stream_proxy_ssl_name_complex.t
│ │ ├── stream_proxy_ssl_verify.t
│ │ ├── stream_realip.t
│ │ ├── stream_realip_hostname.t
│ │ ├── stream_resolver.t
│ │ ├── stream_set.t
│ │ ├── stream_split_clients.t
│ │ ├── stream_ssl.t
│ │ ├── stream_ssl_alpn.t
│ │ ├── stream_ssl_certificate.t
│ │ ├── stream_ssl_conf_command.t
│ │ ├── stream_ssl_preread.t
│ │ ├── stream_ssl_preread_alpn.t
│ │ ├── stream_ssl_preread_protocol.t
│ │ ├── stream_ssl_realip.t
│ │ ├── stream_ssl_session_reuse.t
│ │ ├── stream_ssl_variables.t
│ │ ├── stream_ssl_verify_client.t
│ │ ├── stream_status_variable.t
│ │ ├── stream_tcp_nodelay.t
│ │ ├── stream_udp_limit_conn.t
│ │ ├── stream_udp_limit_rate.t
│ │ ├── stream_udp_proxy.t
│ │ ├── stream_udp_proxy_requests.t
│ │ ├── stream_udp_stream.t
│ │ ├── stream_udp_upstream.t
│ │ ├── stream_udp_upstream_hash.t
│ │ ├── stream_udp_upstream_least_conn.t
│ │ ├── stream_udp_wildcard.t
│ │ ├── stream_unix.t
│ │ ├── stream_upstream.t
│ │ ├── stream_upstream_hash.t
│ │ ├── stream_upstream_least_conn.t
│ │ ├── stream_upstream_max_conns.t
│ │ ├── stream_upstream_random.t
│ │ ├── stream_upstream_zone.t
│ │ ├── stream_upstream_zone_ssl.t
│ │ ├── stream_variables.t
│ │ ├── stub_status.t
│ │ ├── sub_filter.t
│ │ ├── sub_filter_buffering.t
│ │ ├── sub_filter_merge.t
│ │ ├── sub_filter_multi.t
│ │ ├── sub_filter_multi2.t
│ │ ├── sub_filter_perl.t
│ │ ├── sub_filter_slice.t
│ │ ├── sub_filter_ssi.t
│ │ ├── subrequest_output_buffer_size.t
│ │ ├── syslog.t
│ │ ├── trailers.t
│ │ ├── upstream.t
│ │ ├── upstream_hash.t
│ │ ├── upstream_hash_memcached.t
│ │ ├── upstream_ip_hash.t
│ │ ├── upstream_ip_hash_ipv6.t
│ │ ├── upstream_keepalive.t
│ │ ├── upstream_least_conn.t
│ │ ├── upstream_max_conns.t
│ │ ├── upstream_random.t
│ │ ├── upstream_zone.t
│ │ ├── upstream_zone_ssl.t
│ │ ├── userid.t
│ │ ├── userid_flags.t
│ │ ├── uwsgi.t
│ │ ├── uwsgi_body.t
│ │ ├── uwsgi_ssl.t
│ │ ├── uwsgi_ssl_certificate.t
│ │ ├── uwsgi_ssl_certificate_vars.t
│ │ ├── uwsgi_ssl_verify.t
│ │ ├── worker_shutdown_timeout.t
│ │ ├── worker_shutdown_timeout_h2.t
│ │ ├── worker_shutdown_timeout_mail.t
│ │ ├── worker_shutdown_timeout_proxy_upgrade.t
│ │ ├── worker_shutdown_timeout_stream.t
│ │ ├── xslt.t
│ │ └── xslt_params.t
│ └── tengine-tests/
│ ├── concat.t
│ ├── consistent_hash.t
│ ├── dynamic_resolve.t
│ ├── dynamic_resolve_aaaa.t
│ ├── dyups.t
│ ├── fastcgi_check.t
│ ├── gzip_clear_etag.t
│ ├── http_raw_uri_variable.t
│ ├── http_ssl_asynchronous_mode.t
│ ├── http_ssl_handshakd_time.t
│ ├── if_numeric_comparison.t
│ ├── iwrr.t
│ ├── limit_req_enhance.t
│ ├── ngx_dtls.t
│ ├── ngx_http_upstream_vnswrr.t
│ ├── reqstat.t
│ ├── resolver.t
│ ├── resolver_file.t
│ ├── server_banner.t
│ ├── session_sticky.t
│ ├── slice.t
│ ├── stream_sni.t
│ ├── stream_ssl_handshakd_time.t
│ ├── sysguard.t
│ ├── upstream.t
│ ├── upstream_keepalive_timeout.t
│ ├── variable.t
│ └── vnswrr4dynamic_ups.t
└── test-nginx/
├── README
├── cases/
│ ├── footer.t
│ ├── ngx_http_upstream_check_module/
│ │ ├── check_interface.t
│ │ ├── http_check.t
│ │ ├── ssl_hello_check.t
│ │ ├── tcp_check.t
│ │ └── websocket.t
│ ├── req-start-time-variable.t
│ ├── trim.t
│ └── user_agent.t
└── test-nginx/
├── .gitignore
├── Changes
├── MANIFEST
├── MANIFEST.SKIP
├── META.yml
├── Makefile.PL
├── README
├── inc/
│ ├── Module/
│ │ ├── AutoInstall.pm
│ │ ├── Install/
│ │ │ ├── AutoInstall.pm
│ │ │ ├── Base.pm
│ │ │ ├── Can.pm
│ │ │ ├── Fetch.pm
│ │ │ ├── Include.pm
│ │ │ ├── Makefile.pm
│ │ │ ├── Metadata.pm
│ │ │ ├── TestBase.pm
│ │ │ ├── Win32.pm
│ │ │ └── WriteAll.pm
│ │ └── Install.pm
│ ├── Spiffy.pm
│ └── Test/
│ ├── Base/
│ │ └── Filter.pm
│ ├── Base.pm
│ ├── Builder/
│ │ └── Module.pm
│ ├── Builder.pm
│ └── More.pm
├── lib/
│ └── Test/
│ ├── Nginx/
│ │ ├── LWP.pm
│ │ ├── Socket/
│ │ │ └── Lua.pm
│ │ ├── Socket.pm
│ │ └── Util.pm
│ └── Nginx.pm
└── t/
├── apply_moves.t
├── check_response_body.t
├── get_req_from_block.t
├── parse_request.t
├── pod-coverage.t
├── pod.t
└── syntax.t
Showing preview only (343K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5319 symbols across 509 files)
FILE: contrib/stylechecker.py
function check_file (line 18) | def check_file(file):
function walk_dir (line 61) | def walk_dir(dir):
function usage (line 70) | def usage():
FILE: modules/mod_common/ngx_comm_encrypt.c
function ngx_comm_md5_string (line 10) | void
FILE: modules/mod_common/ngx_comm_serialize.c
function ngx_inline (line 7) | ngx_inline ngx_int_t
function ngx_inline (line 22) | ngx_inline ngx_int_t
function ngx_inline (line 37) | ngx_inline ngx_int_t
function ngx_inline (line 52) | ngx_inline ngx_int_t
function ngx_inline (line 66) | ngx_inline ngx_int_t
function ngx_inline (line 79) | ngx_inline ngx_int_t
function ngx_inline (line 92) | ngx_inline ngx_int_t
function ngx_inline (line 107) | ngx_inline ngx_int_t
function ngx_inline (line 122) | ngx_inline ngx_int_t
function ngx_inline (line 137) | ngx_inline ngx_int_t
function ngx_inline (line 161) | ngx_inline ngx_int_t
function ngx_inline (line 185) | ngx_inline ngx_int_t
function ngx_inline (line 201) | ngx_inline ngx_int_t
FILE: modules/mod_common/ngx_comm_shm.c
function ngx_shm_pool_t (line 8) | ngx_shm_pool_t * ngx_shm_create_pool(u_char * addr, size_t size)
function ngx_shm_pool_reset (line 25) | void ngx_shm_pool_reset(ngx_shm_pool_t * pool)
function ngx_int_t (line 31) | ngx_int_t ngx_shm_pool_size(ngx_shm_pool_t * pool)
function ngx_int_t (line 36) | ngx_int_t ngx_shm_pool_free_size(ngx_shm_pool_t * pool)
function ngx_int_t (line 41) | ngx_int_t ngx_shm_pool_used_rate(ngx_shm_pool_t * pool)
function ngx_int_t (line 64) | ngx_int_t ngx_shm_pool_out_of_memory(ngx_shm_pool_t * pool)
function ngx_str_t (line 69) | ngx_str_t *ngx_shm_pool_calloc_str(ngx_shm_pool_t * pool, size_t str_size)
function ngx_shm_array_t (line 87) | ngx_shm_array_t* ngx_shm_array_create(ngx_shm_pool_t * pool,
function ngx_shm_sort_array (line 144) | void ngx_shm_sort_array(ngx_shm_array_t *a, ngx_shm_compar_func c)
type ngx_shm_hash_node_t (line 162) | typedef struct {
function ngx_shm_hash_t (line 168) | ngx_shm_hash_t *ngx_shm_hash_create(ngx_shm_pool_t * pool,
function ngx_int_t (line 203) | ngx_int_t ngx_shm_hash_add(ngx_shm_hash_t * table, void * elem)
function ngx_int_t (line 221) | ngx_int_t
function ngx_int_t (line 284) | ngx_int_t ngx_shm_str_copy(ngx_shm_pool_t * pool, ngx_str_t * dst, ngx_s...
FILE: modules/mod_common/ngx_comm_shm.h
type ngx_shm_pool_t (line 16) | typedef struct {
type ngx_shm_array_t (line 103) | typedef struct {
type ngx_uint_t (line 169) | typedef ngx_uint_t (*ngx_shm_hash_calc_func)(const void *);
type ngx_shm_hash_t (line 203) | typedef struct {
FILE: modules/mod_common/ngx_comm_string.c
function ngx_int_t (line 8) | ngx_int_t
function comm_atoll (line 43) | long long int
function comm_atoll_with_trim (line 70) | long long int
function ngx_int_t (line 84) | ngx_int_t ngx_comm_strcasecmp(ngx_str_t * src, ngx_str_t * dst) {
function ngx_strupper (line 93) | void
function ngx_comm_strcmp (line 104) | int ngx_comm_strcmp(const ngx_str_t * v1, const ngx_str_t * v2)
function ngx_str_t (line 113) | ngx_str_t*
function ngx_comm_cstr_casecmp (line 133) | int
function ngx_comm_count_character (line 143) | int
function u_char (line 155) | u_char *
function ngx_int_t (line 166) | ngx_int_t
function ngx_int_t (line 174) | ngx_int_t
function ngx_int_t (line 197) | ngx_int_t ngx_comm_strcpy(ngx_pool_t * pool, ngx_str_t * dst, ngx_str_t ...
function ngx_int_t (line 210) | ngx_int_t ngx_comm_parse_string_value(ngx_str_t *line, ngx_str_t *key, n...
function ngx_int_t (line 236) | ngx_int_t ngx_comm_parse_int_value(ngx_str_t *line, ngx_str_t *key, u_ch...
function ngx_int_t (line 252) | ngx_int_t
function ngx_int_t (line 268) | ngx_int_t
function ngx_int_t (line 282) | ngx_int_t
function ngx_comm_str_compare (line 297) | int
FILE: modules/mod_dubbo/hessian2/hessian2_ext.cc
type hessian (line 9) | namespace hessian {
function hessian2_regist_serializer (line 15) | void hessian2_regist_serializer(uint32_t type_id, hessian2_serialize_p...
function hessian2_serialize_pt (line 22) | hessian2_serialize_pt hessian2_get_serializer(const Object* obj) {
function null_serialize_hessian2 (line 26) | static void null_serialize_hessian2(const Object* obj, hessian2_output...
function boolean_serialize_hessian2 (line 30) | static void boolean_serialize_hessian2(const Object* obj, hessian2_out...
function integer_serialize_hessian2 (line 34) | static void integer_serialize_hessian2(const Object* obj, hessian2_out...
function long_serialize_hessian2 (line 38) | static void long_serialize_hessian2(const Object* obj, hessian2_output...
function double_serialize_hessian2 (line 42) | static void double_serialize_hessian2(const Object* obj, hessian2_outp...
function date_serialize_hessian2 (line 46) | static void date_serialize_hessian2(const Object* obj, hessian2_output...
function string_serialize_hessian2 (line 50) | static void string_serialize_hessian2(const Object* obj, hessian2_outp...
function bytearray_serialize_hessian2 (line 55) | static void bytearray_serialize_hessian2(const Object* obj, hessian2_o...
function reference_serialize_hessian2 (line 60) | static void reference_serialize_hessian2(const Object* obj, hessian2_o...
function list_serialize_hessian2 (line 64) | static void list_serialize_hessian2(const Object* obj, hessian2_output...
function map_serialize_hessian2 (line 78) | static void map_serialize_hessian2(const Object* obj, hessian2_output&...
function hessian2_regist_deserializer (line 98) | void hessian2_regist_deserializer(Object::ObjectType ext_type,
function hessian2_deserialize_pt (line 117) | hessian2_deserialize_pt hessian2_get_deserializer(Object::ObjectType e...
function exception_serialize_hessian2 (line 141) | static void exception_serialize_hessian2(const Object* obj, hessian2_o...
function Object (line 163) | static Object* exception_deserialize(const string& type, hessian2_inpu...
type hessian2_extension_initializer (line 276) | struct hessian2_extension_initializer {
method hessian2_extension_initializer (line 277) | hessian2_extension_initializer() {
FILE: modules/mod_dubbo/hessian2/hessian2_ext.h
function namespace (line 7) | namespace hessian {
FILE: modules/mod_dubbo/hessian2/hessian2_input.cc
type hessian (line 9) | namespace hessian {
function string (line 1272) | string* hessian2_input::read_chunked_utf8_string(string* dest) {
function string (line 1398) | string* hessian2_input::read_bytes() {
function string (line 1477) | string* hessian2_input::read_chunked_bytes(string* dest) {
function string (line 1559) | string hessian2_input::read_type() {
function Object (line 1563) | Object* hessian2_input::read_list(const string& classname) {
function Object (line 1567) | Object* hessian2_input::read_map(const string& classname) {
function Object (line 1924) | Object* hessian2_input::read_ref() {
function Object (line 1928) | Object* hessian2_input::get_ref_object(uint32_t ref_id) {
function io_exception (line 1978) | io_exception hessian2_input::expect(const string& expect, int ch) {
function io_exception (line 1990) | io_exception hessian2_input::error(const string& expect) {
FILE: modules/mod_dubbo/hessian2/hessian2_input.h
function namespace (line 10) | namespace hessian {
FILE: modules/mod_dubbo/hessian2/hessian2_output.cc
type hessian (line 6) | namespace hessian {
FILE: modules/mod_dubbo/hessian2/hessian2_output.h
function namespace (line 9) | namespace hessian {
FILE: modules/mod_dubbo/ngx_dubbo.c
type ngx_dubbo_arg_type_value_t (line 13) | typedef struct {
function ngx_dubbo_is_big_endian (line 37) | int ngx_dubbo_is_big_endian() {
function ngx_int_t (line 54) | ngx_int_t
function ngx_int_t (line 234) | static ngx_int_t
function ngx_int_t (line 244) | ngx_int_t
function ngx_int_t (line 297) | static ngx_int_t
function ngx_int_t (line 318) | ngx_int_t
function ngx_dubbo_connection_t (line 400) | ngx_dubbo_connection_t*
function ngx_dubbo_cleanup (line 417) | static void
function ngx_int_t (line 435) | ngx_int_t
FILE: modules/mod_dubbo/ngx_dubbo.h
type ngx_dubbo_header_t (line 38) | typedef struct
type ngx_dubbo_req_t (line 50) | typedef struct {
type ngx_dubbo_resp_t (line 56) | typedef struct {
type ngx_dubbo_parse_state_t (line 77) | typedef enum {
type ngx_dubbo_connection_t (line 82) | typedef struct {
type ngx_dubbo_arg_type_t (line 101) | typedef enum {
type ngx_dubbo_arg_t (line 110) | typedef struct {
FILE: modules/mod_dubbo/ngx_dubbo_util.cpp
function ngx_int_t (line 27) | ngx_int_t ngx_dubbo_hessian2_encode_str(ngx_pool_t *pool, ngx_str_t *in,...
function ngx_int_t (line 51) | ngx_int_t ngx_dubbo_hessian2_encode_map(ngx_pool_t *pool, ngx_array_t *i...
function ngx_int_t (line 85) | ngx_int_t ngx_dubbo_hessian2_encode_payload_map(ngx_pool_t *pool, ngx_ar...
function ngx_int_t (line 128) | ngx_int_t
FILE: modules/mod_dubbo/ngx_http_dubbo_module.c
type ngx_http_dubbo_loc_conf_t (line 15) | typedef struct {
type ngx_http_dubbo_arg_t (line 31) | typedef struct {
type ngx_http_dubbo_parse_state_e (line 38) | typedef enum {
type ngx_http_dubbo_ctx_t (line 47) | typedef struct {
type ngx_int_t (line 62) | typedef ngx_int_t (*ngx_http_dubbo_response_handler_pt)(ngx_http_request...
function ngx_int_t (line 295) | static ngx_int_t
function ngx_int_t (line 366) | ngx_int_t
function ngx_int_t (line 421) | static ngx_int_t
function ngx_int_t (line 434) | static ngx_int_t
function ngx_int_t (line 556) | ngx_int_t
function ngx_int_t (line 589) | static ngx_int_t
function ngx_int_t (line 806) | static ngx_int_t
function ngx_int_t (line 812) | static ngx_int_t
function ngx_int_t (line 826) | static ngx_int_t
function ngx_http_dubbo_abort_request (line 834) | static void
function ngx_http_dubbo_finalize_request (line 843) | static void
function ngx_http_dubbo_ping_handler (line 1160) | static void
function ngx_int_t (line 1230) | static ngx_int_t
function ngx_int_t (line 1265) | static ngx_int_t
function ngx_http_dubbo_cleanup (line 1443) | static void
function ngx_int_t (line 1455) | static ngx_int_t
function ngx_http_dubbo_ctx_t (line 1492) | static ngx_http_dubbo_ctx_t*
FILE: modules/mod_dubbo/ngx_http_dubbo_module.h
type ngx_http_dubbo_request_t (line 19) | typedef struct {
type ngx_http_dubbo_connection_t (line 32) | typedef struct {
FILE: modules/mod_dubbo/utils/exceptions.h
function namespace (line 6) | namespace hessian {
FILE: modules/mod_dubbo/utils/objects.cc
type hessian (line 10) | namespace hessian {
function string (line 175) | string Object::to_string() const {
function List (line 189) | List* Object::to_list() {
function Map (line 196) | Map* Object::to_map() {
function string (line 237) | string* String::detach() {
function string (line 280) | string* ByteArray::detach() {
function Object (line 325) | Object* List::get(uint32_t pos) const {
function Object (line 329) | Object* List::operator[] (uint32_t pos) const {
function Object (line 376) | Object* Map::get(const ObjectValue& key) const {
function Object (line 389) | Object* Map::get(const char* c_str_key) const {
function Object (line 400) | Object* Map::get_ptr(Object* const key) const {
function Object (line 409) | Object* Map::operator[](const ObjectValue& key) const {
FILE: modules/mod_dubbo/utils/objects.h
function namespace (line 10) | namespace hessian {
function class (line 137) | class Long : public Object {
function class (line 155) | class Double : public Object {
function class (line 174) | class Date : public Object {
function class (line 192) | class String : public Object {
function class (line 235) | class ByteArray : public Object {
function class (line 278) | class Reference : public Object {
function data_type (line 291) | data_type detach() { _chain_delete = false; return _value; }
function class (line 305) | class List : public Object {
function Object (line 340) | const Object* obj) {
function Object (line 346) | const Object* obj) {
function class (line 354) | class object_ptr_less_comparator {
function class (line 362) | class Map : public Object {
function Object (line 399) | const Object* obj) {
function Object (line 404) | const Object* obj) {
function class (line 411) | class ObjectValue {
function class (line 463) | class Exception : public Map {
function Exception (line 477) | const Exception* cause() const { return _cause; }
function set_detail_message (line 479) | void set_detail_message(const std::string& message) { _detail_message = ...
function List (line 485) | const List* stack_trace() const { return _stack_trace; }
function T (line 510) | T* data() const { return _ptr; }
function set_data (line 511) | void set_data(T* ptr) { if (_chain_delete) { delete _ptr; } _ptr = ptr; }
FILE: modules/mod_dubbo/utils/utils.cc
type hessian (line 11) | namespace hessian {
function ngx_hessian_is_big_endian (line 15) | int ngx_hessian_is_big_endian() {
function double_to_long (line 28) | int64_t double_to_long(double dval) {
function long_to_double (line 35) | double long_to_double(int64_t lval) {
function string (line 42) | string bool_to_string(bool bval) {
function string (line 46) | string int32_to_string(int32_t ival) {
function string (line 51) | string int64_to_string(int64_t lval) {
function string (line 56) | string double_to_string(double dval) {
function cstr_to_int32 (line 61) | int32_t cstr_to_int32(const char* cstr) {
function cstr_to_int64 (line 65) | int64_t cstr_to_int64(const char* cstr) {
function cstr_to_double (line 73) | double cstr_to_double(const char* cstr) {
function string (line 77) | string to_hex_string(const void* ch, size_t size) {
function write_hex_to_stream (line 91) | void write_hex_to_stream(ostream& os, const void* ch, size_t size) {
function hexdump (line 105) | void hexdump(const char* caption, const void* ptr, unsigned int len) {
FILE: modules/mod_dubbo/utils/utils.h
function namespace (line 13) | namespace hessian {
FILE: modules/mod_strategy/ngx_http_strategy_module.c
function ngx_int_t (line 59) | static ngx_int_t
function ngx_int_t (line 139) | static ngx_int_t ngx_http_strategy_module_init(ngx_cycle_t *cycle)
FILE: modules/mod_strategy/ngx_proc_strategy_module.c
function ngx_int_t (line 51) | static ngx_int_t
function ngx_strategy_timer_handler (line 57) | static void
function ngx_int_t (line 89) | static ngx_int_t
function ngx_proc_strategy_exit_worker (line 126) | static void
function ngx_int_t (line 150) | ngx_int_t
function ngx_int_t (line 200) | ngx_int_t ngx_check_strategy_process(ngx_conf_t *cf)
function ngx_int_t (line 225) | ngx_int_t
function ngx_int_t (line 280) | static ngx_int_t
function ngx_int_t (line 322) | static ngx_int_t
function ngx_int_t (line 369) | static ngx_int_t
function ngx_strategy_slot_app_t (line 435) | ngx_strategy_slot_app_t*
function ngx_int_t (line 511) | ngx_int_t
FILE: modules/mod_strategy/ngx_proc_strategy_module.h
type ngx_int_t (line 22) | typedef ngx_int_t (*ngx_strategy_init_func)(void * data);
type ngx_strategy_sync_app_t (line 32) | typedef struct {
type ngx_strategy_frame_ctx_t (line 38) | typedef struct {
type ngx_int_t (line 59) | typedef ngx_int_t (*ngx_strategy_frame_init)(ngx_strategy_frame_ctx_t * ...
type ngx_int_t (line 61) | typedef ngx_int_t (*ngx_strategy_frame_uninit)(ngx_strategy_frame_ctx_t ...
type ngx_int_t (line 63) | typedef ngx_int_t (*ngx_strategy_frame_callback)(ngx_strategy_frame_ctx_...
type ngx_strategy_frame_app_t (line 65) | typedef struct {
type ngx_proc_strategy_main_conf_t (line 90) | typedef struct {
type ngx_int_t (line 103) | typedef ngx_int_t (*ngx_strategy_slot_update)(ngx_cycle_t *cycle,
type check_update_status (line 110) | typedef enum {
type check_update_status (line 116) | typedef check_update_status (*ngx_strategy_slot_check_update)(void * con...
type ngx_strategy_slot_ctx_t (line 118) | typedef struct {
type ngx_strategy_slot_shm_ctx_t (line 124) | typedef struct {
type ngx_strategy_slot_app_t (line 129) | typedef struct {
FILE: modules/mod_xudp/ngx_xudp.c
type kern_xquic (line 13) | struct kern_xquic
function ngx_listening_t (line 16) | ngx_listening_t *
function ngx_xudp_sendmmsg (line 21) | ssize_t
FILE: modules/mod_xudp/ngx_xudp.h
type iovec (line 23) | struct iovec
type sockaddr (line 24) | struct sockaddr
function ngx_inline (line 31) | static ngx_inline ngx_int_t
function ngx_inline (line 42) | static ngx_inline void
FILE: modules/mod_xudp/ngx_xudp_inc.h
type ngx_xudp_cycle_ctx_s (line 12) | struct ngx_xudp_cycle_ctx_s
type ngx_xudp_cycle_ctx_t (line 13) | typedef struct ngx_xudp_cycle_ctx_s ngx_xudp_cycle_ctx_t;
type ngx_xudp_channel_s (line 15) | struct ngx_xudp_channel_s
type ngx_xudp_channel_t (line 16) | typedef struct ngx_xudp_channel_s ngx_xudp_channel_t;
type ngx_xudp_conf_parser_s (line 18) | struct ngx_xudp_conf_parser_s
type ngx_xudp_conf_parser_t (line 19) | typedef struct ngx_xudp_conf_parser_s ngx_xudp_conf_parser_t;
FILE: modules/mod_xudp/ngx_xudp_internal.h
type ngx_xudp_port_map_node_t (line 16) | typedef struct ngx_xudp_port_map_node_s ngx_xudp_port_map_node_t;
type ngx_xudp_port_map_node_s (line 18) | struct ngx_xudp_port_map_node_s
type ngx_xudp_cycle_ctx_s (line 27) | struct ngx_xudp_cycle_ctx_s
type ngx_xudp_channel_s (line 37) | struct ngx_xudp_channel_s
type ngx_xudp_conf_parser_s (line 45) | struct ngx_xudp_conf_parser_s
type kern_xquic (line 60) | struct kern_xquic
FILE: modules/mod_xudp/ngx_xudp_module.c
function ngx_inline (line 28) | static ngx_inline ngx_int_t
type sockaddr (line 141) | struct sockaddr
type sockaddr (line 258) | struct sockaddr
function ngx_int_t (line 278) | static ngx_int_t
function ngx_int_t (line 303) | static ngx_int_t
function ngx_int_t (line 342) | static ngx_int_t
function ngx_int_t (line 427) | static ngx_int_t
function ngx_int_t (line 527) | ngx_int_t
function ngx_int_t (line 566) | static ngx_int_t
function ngx_xudp_core_module_exit_process (line 586) | static void
function ngx_xudp_core_module_exit_master (line 592) | static void
function ngx_int_t (line 641) | static ngx_int_t
function ngx_int_t (line 657) | static ngx_int_t
function ngx_xudp_flush_send_data (line 730) | static void
function ngx_xudp_port_map_node_t (line 736) | static ngx_xudp_port_map_node_t*
function ngx_int_t (line 757) | static ngx_int_t
function ngx_int_t (line 901) | static ngx_int_t
function ngx_xudp_log (line 974) | static int
function ngx_int_t (line 985) | static ngx_int_t
function ngx_xudp_stop (line 1015) | static void
function xudp (line 1024) | static xudp *
function ngx_xudp_free (line 1042) | static void
function ngx_listening_t (line 1052) | static ngx_listening_t *
function socklen_t (line 1118) | static inline socklen_t
function xudp_redirect_udpv2 (line 1136) | static void
function ngx_event_xudp_recvmsg (line 1165) | static void
function ngx_xudp_from_ngx_log_level (line 1218) | static int
function ngx_int_t (line 1237) | ngx_int_t
function ngx_xudp_enable_tx (line 1250) | void
FILE: modules/mod_xudp/ngx_xudp_module.h
type ngx_xudp_conf_s (line 11) | struct ngx_xudp_conf_s
type ngx_xudp_conf_t (line 12) | typedef struct ngx_xudp_conf_s ngx_xudp_conf_t;
type ngx_xudp_conf_s (line 14) | struct ngx_xudp_conf_s
FILE: modules/mod_xudp/xquic-xdp/dispatch_xquic.c
type kern_xquic (line 12) | struct kern_xquic
function u32 (line 21) | static u32
function xskmap_dispatch (line 97) | static int
FILE: modules/mod_xudp/xquic-xdp/test.c
type connect (line 20) | struct connect{
function handler (line 29) | void handler(struct connect *c)
function epoll_add (line 64) | static int epoll_add(xudp *x, int efd, int gid)
function loop (line 99) | static int loop(int efd)
function int_exit (line 122) | static void int_exit(int sig)
function xquic_xdp_load (line 129) | static int xquic_xdp_load(xudp_conf *conf)
function xquic_args (line 162) | static int xquic_args(xudp *x)
function main (line 173) | int main(int argc, char *argv[])
FILE: modules/mod_xudp/xquic-xdp/xquic_xdp.h
type kern_xquic (line 8) | struct kern_xquic {
FILE: modules/ngx_backtrace_module/ngx_backtrace_module.c
type ngx_signal_t (line 16) | typedef struct {
type ngx_backtrace_conf_t (line 31) | typedef struct {
function ngx_int_t (line 99) | static ngx_int_t
function ngx_error_signal_handler (line 120) | static void
function ngx_int_t (line 182) | static ngx_int_t
FILE: modules/ngx_debug_conn/ngx_http_debug_conn_module.c
function ngx_int_t (line 72) | static ngx_int_t
function ngx_int_t (line 113) | static ngx_int_t
FILE: modules/ngx_debug_pool/ngx_http_debug_pool_module.c
function ngx_int_t (line 59) | static ngx_int_t
function ngx_int_t (line 100) | static ngx_int_t
FILE: modules/ngx_debug_pool/ngx_palloc.c
function ngx_pool_stat_t (line 27) | static ngx_pool_stat_t *
function ngx_destroy_pool (line 108) | void
function ngx_reset_pool (line 169) | void
function ngx_inline (line 221) | static ngx_inline void *
function ngx_int_t (line 373) | ngx_int_t
function ngx_pool_cleanup_t (line 461) | ngx_pool_cleanup_t *
function ngx_pool_run_cleanup_file (line 492) | void
function ngx_pool_cleanup_file (line 513) | void
function ngx_pool_delete_file (line 528) | void
FILE: modules/ngx_debug_pool/ngx_palloc.h
type ngx_pool_cleanup_t (line 32) | typedef struct ngx_pool_cleanup_s ngx_pool_cleanup_t;
type ngx_pool_cleanup_s (line 34) | struct ngx_pool_cleanup_s {
type ngx_pool_large_t (line 41) | typedef struct ngx_pool_large_s ngx_pool_large_t;
type ngx_pool_large_s (line 43) | struct ngx_pool_large_s {
type ngx_pool_data_t (line 52) | typedef struct {
type ngx_pool_stat_t (line 64) | typedef struct ngx_pool_stat_s ngx_pool_stat_t;
type ngx_pool_stat_s (line 66) | struct ngx_pool_stat_s {
type ngx_pool_s (line 80) | struct ngx_pool_s {
type ngx_pool_cleanup_file_t (line 95) | typedef struct {
FILE: modules/ngx_debug_timer/ngx_http_debug_timer_module.c
function ngx_int_t (line 61) | static ngx_int_t
function ngx_http_debug_timer_traversal (line 102) | static void
function ngx_int_t (line 121) | static ngx_int_t
FILE: modules/ngx_http_concat_module/ngx_http_concat_module.c
type ngx_http_concat_loc_conf_t (line 12) | typedef struct {
function ngx_int_t (line 118) | static ngx_int_t
function ngx_int_t (line 433) | static ngx_int_t
function ngx_int_t (line 533) | static ngx_int_t
FILE: modules/ngx_http_footer_filter_module/ngx_http_footer_filter_module.c
type ngx_http_footer_loc_conf_t (line 12) | typedef struct {
type ngx_http_footer_ctx_t (line 19) | typedef struct {
function ngx_int_t (line 87) | static ngx_int_t
function ngx_int_t (line 133) | static ngx_int_t
function ngx_int_t (line 267) | static ngx_int_t
FILE: modules/ngx_http_lua_module/src/api/ngx_http_lua_api.h
type ngx_http_lua_co_ctx_t (line 25) | typedef struct ngx_http_lua_co_ctx_s ngx_http_lua_co_ctx_t;
type ngx_http_lua_value_t (line 28) | typedef struct {
type ngx_http_lua_ffi_str_t (line 40) | typedef struct {
FILE: modules/ngx_http_lua_module/src/ddebug.h
function ngx_inline (line 31) | static ngx_inline void
function ngx_inline (line 47) | static ngx_inline void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_accessby.c
function ngx_int_t (line 25) | ngx_int_t
function ngx_int_t (line 162) | ngx_int_t
function ngx_int_t (line 189) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_api.c
function lua_State (line 19) | lua_State *
function ngx_http_request_t (line 30) | ngx_http_request_t *
function ngx_int_t (line 41) | ngx_int_t
function ngx_shm_zone_t (line 86) | ngx_shm_zone_t *
function ngx_int_t (line 155) | static ngx_int_t
function ngx_http_lua_co_ctx_t (line 217) | ngx_http_lua_co_ctx_t *
function ngx_http_lua_set_cur_co_ctx (line 228) | void
function lua_State (line 241) | lua_State *
function ngx_int_t (line 248) | static ngx_int_t
function ngx_http_lua_co_ctx_resume_helper (line 291) | void
function ngx_http_lua_get_lua_http10_buffering (line 333) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_args.c
function ngx_http_lua_escape_args (line 22) | uintptr_t
function ngx_http_lua_ngx_req_set_uri_args (line 84) | static int
function ngx_http_lua_ngx_req_get_post_args (line 170) | static int
function ngx_http_lua_parse_args (line 264) | int
function ngx_http_lua_inject_req_args_api (line 394) | void
function ngx_http_lua_ffi_req_get_querystring_len (line 405) | size_t
function ngx_http_lua_ffi_req_get_uri_args_count (line 412) | int
function ngx_http_lua_ffi_req_get_uri_args (line 462) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_balancer.c
type ngx_http_lua_balancer_peer_data_s (line 19) | struct ngx_http_lua_balancer_peer_data_s {
function ngx_int_t (line 61) | ngx_int_t
function ngx_int_t (line 82) | ngx_int_t
function ngx_int_t (line 210) | static ngx_int_t
function ngx_int_t (line 225) | static ngx_int_t
function ngx_int_t (line 260) | static ngx_int_t
function ngx_int_t (line 357) | static ngx_int_t
function ngx_http_lua_balancer_free_peer (line 412) | static void
function ngx_int_t (line 439) | static ngx_int_t
function ngx_http_lua_balancer_save_session (line 453) | static void
function ngx_http_lua_ffi_balancer_set_current_peer (line 470) | int
function ngx_http_lua_ffi_balancer_set_timeouts (line 553) | int
function ngx_http_lua_ffi_balancer_set_more_tries (line 648) | int
function ngx_http_lua_ffi_balancer_get_last_failure (line 712) | int
function ngx_http_lua_ffi_balancer_recreate_request (line 766) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_bodyfilterby.c
function ngx_http_lua_body_filter_by_lua_env (line 43) | static void
function ngx_int_t (line 81) | ngx_int_t
function ngx_int_t (line 147) | ngx_int_t
function ngx_int_t (line 182) | ngx_int_t
function ngx_int_t (line 230) | static ngx_int_t
function ngx_int_t (line 387) | ngx_int_t
function ngx_http_lua_ffi_get_body_filter_param_eof (line 398) | int
function ngx_http_lua_ffi_get_body_filter_param_body (line 421) | int
function ngx_http_lua_ffi_copy_body_filter_param_body (line 472) | int
function ngx_http_lua_body_filter_param_set (line 499) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_cache.c
function ngx_int_t (line 38) | static ngx_int_t
function ngx_int_t (line 148) | static ngx_int_t
function ngx_int_t (line 200) | ngx_int_t
function ngx_int_t (line 261) | ngx_int_t
function u_char (line 351) | u_char *
function u_char (line 375) | static u_char *
function u_char (line 395) | u_char *
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_capturefilter.c
function ngx_int_t (line 30) | ngx_int_t
function ngx_int_t (line 44) | static ngx_int_t
function ngx_int_t (line 113) | static ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_clfactory.c
type ngx_http_lua_clfactory_file_type_e (line 288) | typedef enum {
type ngx_http_lua_clfactory_file_ctx_t (line 300) | typedef struct {
type ngx_http_lua_clfactory_buffer_ctx_t (line 324) | typedef struct {
function ngx_http_lua_clfactory_bytecode_prepare (line 346) | int
function ngx_int_t (line 614) | ngx_int_t
function ngx_int_t (line 745) | ngx_int_t
function ngx_http_lua_clfactory_errfile (line 844) | static int
function ngx_http_lua_clfactory_file_size (line 900) | static long
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_common.h
type ngx_http_lua_set_var_data_t (line 30) | typedef struct {
type ngx_http_lua_co_ctx_t (line 160) | typedef struct ngx_http_lua_co_ctx_s ngx_http_lua_co_ctx_t;
type ngx_http_lua_sema_mm_t (line 162) | typedef struct ngx_http_lua_sema_mm_s ngx_http_lua_sema_mm_t;
type ngx_http_lua_srv_conf_t (line 164) | typedef union ngx_http_lua_srv_conf_u ngx_http_lua_srv_conf_t;
type ngx_http_lua_main_conf_t (line 166) | typedef struct ngx_http_lua_main_conf_s ngx_http_lua_main_conf_t;
type ngx_http_lua_header_val_t (line 168) | typedef struct ngx_http_lua_header_val_s ngx_http_lua_header_val_t;
type ngx_http_lua_posted_thread_t (line 170) | typedef struct ngx_http_lua_posted_thread_s ngx_http_lua_posted_thread_t;
type ngx_http_lua_balancer_peer_data_t (line 172) | typedef struct ngx_http_lua_balancer_peer_data_s
type ngx_int_t (line 175) | typedef ngx_int_t (*ngx_http_lua_main_conf_handler_pt)(ngx_log_t *log,
type ngx_int_t (line 178) | typedef ngx_int_t (*ngx_http_lua_srv_conf_handler_pt)(ngx_http_request_t...
type ngx_int_t (line 181) | typedef ngx_int_t (*ngx_http_lua_set_header_pt)(ngx_http_request_t *r,
type ngx_http_lua_preload_hook_t (line 185) | typedef struct {
type ngx_http_lua_thread_ref_t (line 191) | typedef struct {
type ngx_http_lua_main_conf_s (line 198) | struct ngx_http_lua_main_conf_s {
type ngx_http_lua_loc_conf_t (line 360) | typedef struct {
type ngx_http_lua_user_coro_op_t (line 455) | typedef enum {
type ngx_http_lua_co_status_t (line 463) | typedef enum {
type ngx_http_lua_posted_thread_s (line 472) | struct ngx_http_lua_posted_thread_s {
type ngx_http_lua_co_ctx_s (line 478) | struct ngx_http_lua_co_ctx_s {
type ngx_http_lua_vm_state_t (line 550) | typedef struct {
type ngx_http_lua_ctx_t (line 556) | typedef struct ngx_http_lua_ctx_s {
type ngx_http_lua_header_val_s (line 676) | struct ngx_http_lua_header_val_s {
type ngx_http_lua_set_header_t (line 686) | typedef struct {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_config.c
function ngx_http_lua_inject_config_api (line 21) | void
function ngx_http_lua_config_prefix (line 54) | static int
function ngx_http_lua_config_configure (line 63) | static int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_consts.c
function ngx_http_lua_inject_core_consts (line 17) | void
function ngx_http_lua_inject_http_consts (line 42) | void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_contentby.c
function ngx_http_lua_content_wev_handler (line 149) | void
function ngx_int_t (line 163) | ngx_int_t
function ngx_http_lua_content_phase_post_read (line 234) | static void
function ngx_int_t (line 253) | ngx_int_t
function ngx_int_t (line 296) | ngx_int_t
function ngx_int_t (line 323) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_control.c
function ngx_http_lua_inject_control_api (line 24) | void
function ngx_http_lua_ngx_exec (line 44) | static int
function ngx_http_lua_ngx_redirect (line 182) | static int
function ngx_http_lua_on_abort (line 307) | static int
function ngx_http_lua_ffi_exit (line 357) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_coroutine.c
function ngx_http_lua_coroutine_create (line 46) | static int
function ngx_http_lua_coroutine_wrap_runner (line 66) | static int
function ngx_http_lua_coroutine_wrap (line 78) | static int
function ngx_http_lua_coroutine_create_helper (line 105) | int
function ngx_http_lua_coroutine_resume (line 182) | static int
function ngx_http_lua_coroutine_yield (line 244) | static int
function ngx_http_lua_inject_coroutine_api (line 285) | void
function ngx_http_lua_coroutine_status (line 396) | static int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_ctx.c
type ngx_http_lua_ngx_ctx_cleanup_data_t (line 18) | typedef struct {
function ngx_http_lua_ngx_set_ctx_helper (line 29) | int
function ngx_http_lua_ffi_get_ctx_ref (line 72) | int
function ngx_http_lua_ffi_set_ctx_ref (line 110) | int
function ngx_int_t (line 158) | static ngx_int_t
function ngx_http_lua_ngx_ctx_cleanup (line 187) | static void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_directive.c
type ngx_http_lua_block_parser_ctx_t (line 42) | typedef struct ngx_http_lua_block_parser_ctx_s
type ngx_http_lua_block_parser_ctx_s (line 59) | struct ngx_http_lua_block_parser_ctx_s {
function ngx_int_t (line 403) | ngx_int_t
function ngx_int_t (line 439) | ngx_int_t
function ngx_int_t (line 1434) | static ngx_int_t
function u_char (line 1470) | u_char *
function ngx_int_t (line 1719) | static ngx_int_t
function u_char (line 2045) | static u_char *
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_exception.c
function ngx_http_lua_atpanic (line 30) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_exitworkerby.c
function ngx_http_lua_exit_worker (line 21) | void
function ngx_int_t (line 93) | ngx_int_t
function ngx_int_t (line 115) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_headerfilterby.c
function ngx_http_lua_header_filter_by_lua_env (line 39) | static void
function ngx_int_t (line 72) | ngx_int_t
function ngx_int_t (line 157) | ngx_int_t
function ngx_int_t (line 186) | ngx_int_t
function ngx_int_t (line 228) | static ngx_int_t
function ngx_int_t (line 293) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_headers.c
function ngx_http_lua_inject_resp_header_api (line 30) | void
function ngx_http_lua_inject_req_header_api (line 42) | void
function ngx_http_lua_ngx_req_http_version (line 56) | static int
function ngx_http_lua_ngx_resp_get_headers (line 429) | static int
function ngx_http_lua_ngx_req_header_set (line 622) | static int
function ngx_http_lua_ngx_req_header_set_helper (line 634) | static int
function ngx_http_lua_create_headers_metatable (line 754) | void
function ngx_http_lua_ffi_req_get_headers_count (line 785) | int
function ngx_http_lua_ffi_req_get_headers (line 822) | int
function ngx_http_lua_ffi_set_resp_header (line 872) | int
function ngx_http_lua_ffi_req_set_header (line 992) | int
function ngx_http_lua_ffi_get_resp_header (line 1081) | int
function ngx_http_lua_ngx_raw_header_cleanup (line 1240) | void
function ngx_http_lua_ffi_set_resp_header_macos (line 1256) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_headers_in.c
function ngx_int_t (line 171) | static ngx_int_t
function ngx_int_t (line 179) | static ngx_int_t
function ngx_int_t (line 299) | static ngx_int_t
function ngx_int_t (line 340) | static ngx_int_t
function ngx_int_t (line 432) | static ngx_int_t
function ngx_int_t (line 465) | static ngx_int_t
function ngx_int_t (line 488) | static ngx_int_t
function ngx_int_t (line 562) | static ngx_int_t
function ngx_int_t (line 585) | static ngx_int_t
function ngx_int_t (line 679) | static ngx_int_t
function ngx_int_t (line 689) | static ngx_int_t
function ngx_int_t (line 698) | ngx_int_t
function ngx_int_t (line 771) | static ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_headers_out.c
function ngx_int_t (line 121) | static ngx_int_t
function ngx_int_t (line 129) | static ngx_int_t
function ngx_int_t (line 248) | static ngx_int_t
function ngx_int_t (line 274) | static ngx_int_t
function ngx_int_t (line 310) | static ngx_int_t
function ngx_int_t (line 454) | static ngx_int_t
function ngx_int_t (line 481) | static ngx_int_t ngx_http_set_last_modified_header(ngx_http_request_t *r,
function ngx_int_t (line 497) | static ngx_int_t
function ngx_int_t (line 507) | static ngx_int_t
function ngx_int_t (line 528) | static ngx_int_t
function ngx_int_t (line 538) | static ngx_int_t
function ngx_int_t (line 548) | ngx_int_t
function ngx_http_lua_get_output_header (line 590) | int
function ngx_int_t (line 699) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_headers_out.h
type ngx_http_lua_set_resp_header_params_t (line 16) | typedef struct {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_initby.c
function ngx_int_t (line 16) | ngx_int_t
function ngx_int_t (line 39) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_initworkerby.c
function ngx_int_t (line 22) | ngx_int_t
function ngx_int_t (line 317) | ngx_int_t
function ngx_int_t (line 339) | ngx_int_t
function u_char (line 352) | static u_char *
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_input_filters.c
function ngx_int_t (line 16) | ngx_int_t
function ngx_int_t (line 43) | ngx_int_t
function ngx_int_t (line 58) | ngx_int_t
function ngx_int_t (line 77) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_lex.c
function ngx_http_lua_lex (line 42) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_log.c
function ngx_http_lua_ngx_log (line 34) | int
function ngx_http_lua_print (line 71) | int
function log_wrapper (line 90) | static int
function ngx_http_lua_inject_log_api (line 279) | void
function ngx_http_lua_inject_log_consts (line 292) | static void
function ngx_int_t (line 327) | ngx_int_t
function ngx_http_lua_ffi_errlog_set_filter_level (line 351) | int
function ngx_http_lua_ffi_errlog_get_msg (line 383) | int
function ngx_http_lua_ffi_errlog_get_sys_filter_level (line 417) | int
function ngx_http_lua_ffi_raw_log (line 439) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_log_ringbuf.c
type ngx_http_lua_log_ringbuf_header_t (line 12) | typedef struct {
function ngx_http_lua_log_ringbuf_init (line 32) | void
function ngx_http_lua_log_ringbuf_reset (line 49) | void
function ngx_http_lua_log_ringbuf_append (line 84) | static void
function ngx_http_lua_log_ringbuf_throw_away (line 112) | static void
function ngx_http_lua_log_ringbuf_free_spaces (line 137) | static size_t
function ngx_int_t (line 156) | ngx_int_t
function ngx_int_t (line 190) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_log_ringbuf.h
type ngx_http_lua_log_ringbuf_t (line 9) | typedef struct {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_logby.c
function ngx_http_lua_log_by_lua_env (line 33) | static void
function ngx_int_t (line 66) | ngx_int_t
function ngx_int_t (line 139) | ngx_int_t
function ngx_int_t (line 167) | ngx_int_t
function ngx_int_t (line 203) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_misc.c
function ngx_http_lua_inject_req_misc_api (line 21) | void
function ngx_http_lua_ngx_req_is_internal (line 29) | static int
function ngx_http_lua_ffi_get_resp_status (line 44) | int
function ngx_http_lua_ffi_set_resp_status (line 66) | int
function ngx_http_lua_ffi_req_is_internal (line 102) | int
function ngx_http_lua_ffi_is_subrequest (line 113) | int
function ngx_http_lua_ffi_headers_sent (line 124) | int
function ngx_http_lua_ffi_get_conf_env (line 142) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_module.c
function ngx_int_t (line 724) | static ngx_int_t
function ngx_int_t (line 1530) | static ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_ndk.c
function ngx_http_lua_inject_ndk_api (line 24) | void
function ndk_set_var_value_pt (line 39) | static ndk_set_var_value_pt
function ngx_http_lua_ffi_ndk_lookup_directive (line 90) | int
function ngx_http_lua_ffi_ndk_set_var_get (line 104) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_output.c
function ngx_http_lua_ngx_print (line 22) | static int
function ngx_http_lua_ngx_say (line 30) | static int
function ngx_http_lua_ngx_echo (line 38) | static int
function ngx_http_lua_calc_strlen_in_table (line 261) | size_t
function u_char (line 382) | u_char *
function ngx_http_lua_ngx_flush (line 471) | static int
function ngx_http_lua_ngx_eof (line 624) | static int
function ngx_http_lua_inject_output_api (line 680) | void
function ngx_http_lua_ngx_send_headers (line 703) | static int
function ngx_int_t (line 742) | ngx_int_t
function ngx_http_lua_flush_cleanup (line 800) | static void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_output.h
function ngx_inline (line 27) | static ngx_inline size_t
function ngx_inline (line 41) | static ngx_inline u_char *
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_pcrefix.c
function ngx_http_lua_pcre_free (line 44) | static void
function ngx_pool_t (line 58) | ngx_pool_t *
function ngx_http_lua_pcre_malloc_done (line 89) | void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_phase.c
function ngx_http_lua_ffi_get_phase (line 16) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_pipe.c
type signalfd_siginfo (line 94) | struct signalfd_siginfo
function ngx_http_lua_pipe_init (line 148) | void
function ngx_int_t (line 156) | ngx_int_t
function ngx_rbtree_node_t (line 297) | static ngx_rbtree_node_t *
function ngx_http_lua_pipe_sigchld_handler (line 324) | static void
function ngx_http_lua_pipe_sigchld_event_handler (line 364) | static void
function ngx_http_lua_pipe_reap_pids (line 395) | static void
function ngx_http_lua_pipe_reap_timer_handler (line 471) | static void
function ngx_http_lua_pipe_fd_read (line 483) | static ssize_t
function ngx_http_lua_pipe_fd_write (line 538) | static ssize_t
function ngx_http_lua_execvpe (line 586) | static int
function ngx_http_lua_ffi_pipe_spawn (line 601) | int
function ngx_http_lua_pipe_close_helper (line 990) | static void
function ngx_http_lua_pipe_close_stdin (line 1015) | static void
function ngx_http_lua_pipe_close_stdout (line 1037) | static void
function ngx_http_lua_pipe_close_stderr (line 1059) | static void
function ngx_http_lua_ffi_pipe_proc_shutdown_stdin (line 1081) | int
function ngx_http_lua_ffi_pipe_proc_shutdown_stdout (line 1099) | int
function ngx_http_lua_ffi_pipe_proc_shutdown_stderr (line 1117) | int
function ngx_http_lua_pipe_proc_finalize (line 1142) | static void
function ngx_http_lua_ffi_pipe_proc_destroy (line 1170) | void
function ngx_int_t (line 1208) | static ngx_int_t
function ngx_http_lua_pipe_put_error (line 1229) | static void
function ngx_http_lua_pipe_put_data (line 1279) | static void
function ngx_int_t (line 1341) | static ngx_int_t
function ngx_int_t (line 1364) | static ngx_int_t
function ngx_int_t (line 1375) | static ngx_int_t
function ngx_int_t (line 1395) | static ngx_int_t
function ngx_int_t (line 1414) | static ngx_int_t
function ngx_int_t (line 1432) | static ngx_int_t
function ngx_int_t (line 1521) | static ngx_int_t
function ngx_http_lua_ffi_pipe_proc_read (line 1567) | int
function ngx_http_lua_ffi_pipe_get_read_result (line 1756) | int
function ngx_int_t (line 1788) | static ngx_int_t
function ngx_http_lua_ffi_pipe_proc_write (line 1855) | ssize_t
function ngx_http_lua_ffi_pipe_get_write_result (line 1972) | ssize_t
function ngx_http_lua_ffi_pipe_proc_wait (line 1995) | int
function ngx_http_lua_ffi_pipe_proc_kill (line 2081) | int
function ngx_http_lua_pipe_read_stdout_retval (line 2122) | static int
function ngx_http_lua_pipe_read_stderr_retval (line 2130) | static int
function ngx_http_lua_pipe_read_retval_helper (line 2138) | static int
function ngx_http_lua_pipe_write_retval (line 2200) | static int
function ngx_http_lua_pipe_wait_retval (line 2250) | static int
function ngx_http_lua_pipe_resume_helper (line 2303) | static void
function ngx_http_lua_pipe_resume_read_stdout_handler (line 2342) | static void
function ngx_http_lua_pipe_resume_read_stderr_handler (line 2358) | static void
function ngx_http_lua_pipe_resume_write_handler (line 2374) | static void
function ngx_http_lua_pipe_resume_wait_handler (line 2390) | static void
function ngx_int_t (line 2404) | static ngx_int_t
function ngx_http_lua_pipe_dummy_event_handler (line 2460) | static void
function ngx_http_lua_pipe_clear_event (line 2467) | static void
function ngx_http_lua_pipe_proc_read_stdout_cleanup (line 2486) | static void
function ngx_http_lua_pipe_proc_read_stderr_cleanup (line 2508) | static void
function ngx_http_lua_pipe_proc_write_cleanup (line 2530) | static void
function ngx_http_lua_pipe_proc_wait_cleanup (line 2552) | static void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_pipe.h
type ngx_int_t (line 14) | typedef ngx_int_t (*ngx_http_lua_pipe_input_filter)(void *data, ssize_t ...
type ngx_http_lua_pipe_ctx_t (line 17) | typedef struct {
type ngx_http_lua_pipe_t (line 31) | typedef struct ngx_http_lua_pipe_s ngx_http_lua_pipe_t;
type ngx_http_lua_ffi_pipe_proc_t (line 34) | typedef struct {
type ngx_http_lua_pipe_s (line 49) | struct ngx_http_lua_pipe_s {
type ngx_http_lua_pipe_node_t (line 70) | typedef struct {
type ngx_http_lua_pipe_signal_t (line 79) | typedef struct {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_regex.c
type ngx_http_lua_regex_t (line 36) | typedef struct {
type ngx_http_lua_regex_compile_t (line 55) | typedef struct {
type ngx_http_lua_regex_ctx_t (line 66) | typedef struct {
function ngx_http_lua_regex_free_study_data (line 93) | static void
function ngx_int_t (line 110) | static ngx_int_t
function ngx_int_t (line 164) | ngx_int_t
function ngx_http_lua_regex_t (line 221) | ngx_http_lua_regex_t *
function ngx_http_lua_ffi_exec_regex (line 394) | int
function ngx_http_lua_ffi_destroy_regex (line 447) | void
function ngx_http_lua_ffi_compile_replace_template (line 473) | int
function ngx_http_lua_script_engine_t (line 517) | ngx_http_lua_script_engine_t *
function ngx_http_lua_ffi_init_script_engine (line 524) | void
function ngx_http_lua_ffi_destroy_script_engine (line 535) | void
function ngx_http_lua_ffi_script_eval_len (line 542) | size_t
function ngx_http_lua_ffi_script_eval_data (line 562) | void
function ngx_http_lua_ffi_max_regex_cache_size (line 578) | uint32_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_req_body.c
function ngx_http_lua_inject_req_body_api (line 36) | void
function ngx_http_lua_ngx_req_read_body (line 68) | static int
function ngx_http_lua_req_body_post_read (line 156) | static void
function ngx_http_lua_ngx_req_discard_body (line 197) | static int
function ngx_http_lua_ngx_req_get_body_data (line 227) | static int
function ngx_http_lua_ngx_req_get_body_file (line 298) | static int
function ngx_http_lua_ngx_req_set_body_data (line 337) | static int
function ngx_http_lua_ngx_req_init_body (line 510) | static int
function ngx_http_lua_ngx_req_append_body (line 608) | static int
function ngx_http_lua_ngx_req_body_finish (line 691) | static int
function ngx_http_lua_pool_cleanup_file (line 786) | static void
function ngx_http_lua_ngx_req_set_body_file (line 808) | static int
function ngx_int_t (line 1058) | static ngx_int_t
function ngx_int_t (line 1119) | static ngx_int_t
function ngx_http_lua_req_body_cleanup (line 1159) | static void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_req_method.c
function ngx_http_lua_ffi_req_get_method (line 16) | int
function ngx_http_lua_ffi_req_get_method_name (line 27) | int
function ngx_http_lua_ffi_req_set_method (line 42) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_rewriteby.c
function ngx_int_t (line 24) | ngx_int_t
function ngx_int_t (line 166) | ngx_int_t
function ngx_int_t (line 194) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_script.c
function ngx_int_t (line 34) | ngx_int_t
function ngx_int_t (line 105) | ngx_int_t
function ngx_int_t (line 161) | static ngx_int_t
function ngx_int_t (line 317) | static ngx_int_t
function ngx_http_lua_script_copy_len_code (line 354) | static size_t
function ngx_http_lua_script_copy_code (line 367) | static void
function ngx_int_t (line 390) | static ngx_int_t
function ngx_http_lua_script_copy_capture_len_code (line 419) | static size_t
function ngx_http_lua_script_copy_capture_code (line 441) | static void
function ngx_int_t (line 470) | static ngx_int_t
function ngx_int_t (line 505) | static ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_script.h
type ngx_http_lua_script_compile_t (line 14) | typedef struct {
type ngx_http_lua_complex_value_t (line 29) | typedef struct {
type ngx_http_lua_compile_complex_value_t (line 36) | typedef struct {
type ngx_http_lua_script_engine_t (line 44) | typedef struct {
type ngx_http_lua_script_copy_code_t (line 65) | typedef struct {
type ngx_http_lua_script_capture_code_t (line 71) | typedef struct {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_semaphore.c
function ngx_int_t (line 44) | ngx_int_t
function ngx_http_lua_sema_t (line 71) | static ngx_http_lua_sema_t *
function ngx_http_lua_sema_mm_cleanup (line 155) | void
function ngx_http_lua_free_sema (line 202) | static void
function ngx_int_t (line 256) | static ngx_int_t
function ngx_http_lua_ffi_sema_new (line 310) | int
function ngx_http_lua_ffi_sema_post (line 336) | int
function ngx_http_lua_ffi_sema_wait (line 357) | int
function ngx_http_lua_ffi_sema_count (line 426) | int
function ngx_http_lua_sema_cleanup (line 433) | static void
function ngx_http_lua_sema_handler (line 457) | static void
function ngx_http_lua_sema_timeout_handler (line 511) | static void
function ngx_http_lua_ffi_sema_gc (line 552) | void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_semaphore.h
type ngx_http_lua_sema_mm_block_t (line 17) | typedef struct ngx_http_lua_sema_mm_block_s {
type ngx_http_lua_sema_mm_s (line 24) | struct ngx_http_lua_sema_mm_s {
type ngx_http_lua_sema_t (line 34) | typedef struct ngx_http_lua_sema_s {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_server_rewriteby.c
function ngx_int_t (line 22) | ngx_int_t
function ngx_int_t (line 129) | ngx_int_t
function ngx_int_t (line 154) | ngx_int_t
function ngx_int_t (line 192) | static ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_setby.c
function ngx_int_t (line 30) | ngx_int_t
function ngx_http_lua_ffi_get_setby_param (line 126) | void
function ngx_http_lua_set_by_lua_env (line 166) | static void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_shdict.c
function ngx_inline (line 61) | static ngx_inline ngx_queue_t *
function ngx_int_t (line 69) | ngx_int_t
function ngx_http_lua_shdict_rbtree_insert_value (line 124) | void
function ngx_int_t (line 165) | static ngx_int_t
function ngx_http_lua_shdict_expire (line 234) | static int
function ngx_http_lua_inject_shdict_api (line 308) | void
function ngx_inline (line 375) | static ngx_inline ngx_shm_zone_t *
function ngx_http_lua_shdict_flush_expired (line 394) | static int
function ngx_http_lua_shdict_get_keys (line 491) | static int
function ngx_int_t (line 585) | ngx_int_t
function ngx_http_lua_shdict_lpush (line 688) | static int
function ngx_http_lua_shdict_rpush (line 695) | static int
function ngx_http_lua_shdict_push_helper (line 702) | static int
function ngx_http_lua_shdict_lpop (line 979) | static int
function ngx_http_lua_shdict_rpop (line 986) | static int
function ngx_http_lua_shdict_pop_helper (line 993) | static int
function ngx_http_lua_shdict_llen (line 1169) | static int
function ngx_shm_zone_t (line 1256) | ngx_shm_zone_t *
function ngx_shm_zone_t (line 1297) | ngx_shm_zone_t *
function ngx_http_lua_ffi_shdict_store (line 1308) | int
function ngx_http_lua_ffi_shdict_get (line 1567) | int
function ngx_http_lua_ffi_shdict_incr (line 1706) | int
function ngx_http_lua_ffi_shdict_flush_all (line 1911) | int
function ngx_int_t (line 1938) | static ngx_int_t
function ngx_http_lua_ffi_shdict_get_ttl (line 1985) | long
function ngx_http_lua_ffi_shdict_set_expire (line 2027) | int
function ngx_http_lua_ffi_shdict_capacity (line 2070) | size_t
function ngx_http_lua_ffi_shdict_free_space (line 2078) | size_t
function ngx_http_lua_ffi_shdict_get_macos (line 2096) | int
function ngx_http_lua_ffi_shdict_store_macos (line 2108) | int
function ngx_http_lua_ffi_shdict_incr_macos (line 2121) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_shdict.h
type ngx_http_lua_shdict_node_t (line 14) | typedef struct {
type ngx_http_lua_shdict_list_node_t (line 26) | typedef struct {
type ngx_http_lua_shdict_shctx_t (line 34) | typedef struct {
type ngx_http_lua_shdict_ctx_t (line 41) | typedef struct {
type ngx_http_lua_shm_zone_ctx_t (line 50) | typedef struct {
type ngx_http_lua_shdict_get_params_t (line 59) | typedef struct {
type ngx_http_lua_shdict_store_params_t (line 74) | typedef struct {
type ngx_http_lua_shdict_incr_params_t (line 90) | typedef struct {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_sleep.c
function ngx_http_lua_ngx_sleep (line 25) | static int
function ngx_http_lua_sleep_handler (line 97) | void
function ngx_http_lua_inject_sleep_api (line 141) | void
function ngx_int_t (line 181) | static ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_socket_tcp.c
function ngx_http_lua_inject_socket_tcp_api (line 230) | void
function ngx_http_lua_inject_req_socket_api (line 403) | void
function ngx_http_lua_socket_tcp (line 411) | static int
function ngx_http_lua_socket_tcp_create_socket_pool (line 446) | static void
function ngx_http_lua_socket_tcp_connect_helper (line 525) | static int
function ngx_http_lua_socket_tcp_bind (line 835) | static int
function ngx_http_lua_socket_tcp_connect (line 890) | static int
function ngx_http_lua_socket_resolve_handler (line 1196) | static void
function ngx_http_lua_socket_init_peer_connection_addr_text (line 1362) | static void
function ngx_http_lua_socket_resolve_retval_handler (line 1406) | static int
function ngx_http_lua_socket_conn_error_retval_handler (line 1583) | static int
function ngx_http_lua_ffi_socket_tcp_sslhandshake (line 1630) | int
function ngx_http_lua_ssl_handshake_handler (line 1886) | static void
function ngx_http_lua_ffi_socket_tcp_get_sslhandshake_result (line 1992) | int
function ngx_http_lua_ssl_handshake_retval_handler (line 2013) | static int
function ngx_http_lua_ffi_ssl_free_session (line 2041) | void
function ngx_http_lua_socket_read_error_retval_handler (line 2054) | static int
function ngx_http_lua_socket_write_error_retval_handler (line 2078) | static int
function ngx_http_lua_socket_prepare_error_retvals (line 2096) | static int
function ngx_http_lua_socket_tcp_conn_retval_handler (line 2145) | static int
function ngx_http_lua_socket_tcp_receive_helper (line 2158) | static int
function ngx_http_lua_socket_tcp_receiveany (line 2244) | static int
function ngx_http_lua_socket_tcp_receive (line 2314) | static int
function ngx_int_t (line 2443) | static ngx_int_t
function ngx_int_t (line 2463) | static ngx_int_t
function ngx_int_t (line 2475) | static ngx_int_t
function ngx_int_t (line 2496) | static ngx_int_t
function ngx_int_t (line 2517) | static ngx_int_t
function ngx_http_lua_socket_tcp_send (line 2806) | static int
function ngx_http_lua_socket_tcp_send_retval_handler (line 3056) | static int
function ngx_http_lua_socket_tcp_receive_retval_handler (line 3072) | static int
function ngx_http_lua_socket_tcp_close (line 3154) | static int
function ngx_http_lua_socket_tcp_settimeout (line 3206) | static int
function ngx_http_lua_socket_tcp_settimeouts (line 3253) | static int
function ngx_http_lua_socket_tcp_handler (line 3317) | static void
function ngx_int_t (line 3351) | static ngx_int_t
function ngx_http_lua_socket_read_handler (line 3359) | static void
function ngx_http_lua_socket_send_handler (line 3398) | static void
function ngx_int_t (line 3429) | static ngx_int_t
function ngx_http_lua_socket_handle_conn_success (line 3520) | static void
function ngx_http_lua_socket_handle_read_success (line 3558) | static void
function ngx_http_lua_socket_handle_write_success (line 3595) | static void
function ngx_http_lua_socket_handle_conn_error (line 3632) | static void
function ngx_http_lua_socket_handle_read_error (line 3677) | static void
function ngx_http_lua_socket_handle_write_error (line 3718) | static void
function ngx_http_lua_socket_connected_handler (line 3759) | static void
function ngx_http_lua_socket_tcp_cleanup (line 3825) | static void
function ngx_http_lua_socket_tcp_conn_op_timeout_handler (line 3962) | static void
function ngx_http_lua_socket_tcp_conn_op_timeout_retval_handler (line 4028) | static int
function ngx_http_lua_socket_tcp_resume_conn_op (line 4038) | static void
function ngx_http_lua_socket_tcp_conn_op_ctx_cleanup (line 4085) | static void
function ngx_http_lua_socket_tcp_conn_op_resume_handler (line 4103) | static void
function ngx_http_lua_socket_tcp_conn_op_resume_retval_handler (line 4188) | static int
function ngx_http_lua_socket_tcp_finalize (line 4225) | static void
function ngx_http_lua_socket_tcp_close_connection (line 4294) | static void
function ngx_int_t (line 4317) | static ngx_int_t
function ngx_http_lua_socket_dummy_handler (line 4383) | static void
function ngx_http_lua_socket_tcp_receiveuntil (line 4392) | static int
function ngx_http_lua_socket_receiveuntil_iterator (line 4484) | static int
function ngx_int_t (line 4638) | static ngx_int_t
function ngx_int_t (line 4736) | static ngx_int_t
function ngx_http_lua_socket_cleanup_compiled_pattern (line 4913) | static int
function ngx_http_lua_req_socket (line 4954) | static int
function ngx_http_lua_req_socket_rev_handler (line 5204) | static void
function ngx_http_lua_socket_tcp_getreusedtimes (line 5229) | static int
function ngx_http_lua_socket_tcp_setkeepalive (line 5258) | static int
function ngx_int_t (line 5524) | static ngx_int_t
function ngx_http_lua_socket_keepalive_dummy_handler (line 5604) | static void
function ngx_http_lua_socket_keepalive_rev_handler (line 5612) | static void
function ngx_int_t (line 5619) | static ngx_int_t
function ngx_http_lua_socket_free_pool (line 5686) | static void
function ngx_http_lua_socket_shutdown_pool_helper (line 5706) | static void
function ngx_http_lua_socket_shutdown_pool (line 5752) | static int
function ngx_http_lua_socket_tcp_upstream_destroy (line 5767) | static int
function ngx_http_lua_socket_downstream_destroy (line 5787) | static int
function ngx_int_t (line 5808) | static ngx_int_t
function ngx_int_t (line 5885) | static ngx_int_t
function ngx_int_t (line 5910) | static ngx_int_t
function ngx_int_t (line 5943) | static ngx_int_t ngx_http_lua_socket_insert_buffer(ngx_http_request_t *r,
function ngx_int_t (line 6002) | static ngx_int_t
function ngx_int_t (line 6009) | static ngx_int_t
function ngx_int_t (line 6016) | static ngx_int_t
function ngx_int_t (line 6023) | static ngx_int_t
function ngx_int_t (line 6030) | static ngx_int_t
function ngx_http_lua_tcp_resolve_cleanup (line 6168) | static void
function ngx_http_lua_coctx_cleanup (line 6198) | static void
function ngx_http_lua_cleanup_conn_pools (line 6219) | void
function ngx_http_lua_ffi_socket_tcp_init_udata_queue (line 6248) | int
function ngx_http_lua_ffi_socket_tcp_count_udata (line 6298) | int
function ngx_http_lua_ffi_socket_tcp_add_udata (line 6311) | int
function ngx_http_lua_ffi_socket_tcp_get_udata (line 6406) | int
function ngx_http_lua_ffi_socket_tcp_del_udata (line 6442) | int
function ngx_http_lua_ffi_socket_tcp_getoption (line 6478) | int
function ngx_http_lua_ffi_socket_tcp_setoption (line 6535) | int
function ngx_http_lua_ffi_socket_tcp_hack_fd (line 6598) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_socket_tcp.h
type ngx_http_lua_socket_tcp_upstream_t (line 25) | typedef struct ngx_http_lua_socket_tcp_upstream_s
type ngx_http_lua_socket_udata_queue_t (line 29) | typedef struct ngx_http_lua_socket_udata_queue_s
type ngx_http_lua_socket_tcp_conn_op_ctx_t (line 42) | typedef struct {
type ngx_http_lua_socket_pool_t (line 57) | typedef struct {
type ngx_http_lua_socket_tcp_upstream_s (line 80) | struct ngx_http_lua_socket_tcp_upstream_s {
type ngx_http_lua_dfa_edge_t (line 148) | typedef struct ngx_http_lua_dfa_edge_s ngx_http_lua_dfa_edge_t;
type ngx_http_lua_dfa_edge_s (line 151) | struct ngx_http_lua_dfa_edge_s {
type ngx_http_lua_socket_compiled_pattern_t (line 158) | typedef struct {
type ngx_http_lua_socket_pool_item_t (line 169) | typedef struct {
type ngx_http_lua_socket_udata_queue_s (line 184) | struct ngx_http_lua_socket_udata_queue_s {
type ngx_http_lua_socket_node_t (line 193) | typedef struct {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_socket_udp.c
function ngx_http_lua_inject_socket_udp_api (line 75) | void
function ngx_http_lua_socket_udp (line 121) | static int
function ngx_http_lua_socket_udp_setpeername (line 156) | static int
function ngx_http_lua_socket_resolve_handler (line 418) | static void
function ngx_http_lua_socket_resolve_retval_handler (line 587) | static int
function ngx_http_lua_socket_error_retval_handler (line 676) | static int
function ngx_http_lua_socket_udp_send (line 724) | static int
function ngx_http_lua_socket_udp_receive (line 900) | static int
function ngx_http_lua_socket_udp_receive_retval_handler (line 1020) | static int
function ngx_http_lua_socket_udp_settimeout (line 1036) | static int
function ngx_http_lua_socket_udp_finalize (line 1072) | static void
function ngx_http_lua_socket_udp_upstream_destroy (line 1103) | static int
function ngx_http_lua_socket_dummy_handler (line 1123) | static void
function ngx_int_t (line 1132) | static ngx_int_t
function ngx_http_lua_socket_udp_read_handler (line 1186) | static void
function ngx_http_lua_socket_udp_handle_error (line 1223) | static void
function ngx_http_lua_socket_udp_cleanup (line 1266) | static void
function ngx_http_lua_socket_udp_handler (line 1282) | static void
function ngx_http_lua_socket_udp_handle_success (line 1311) | static void
function ngx_int_t (line 1342) | static ngx_int_t
function ngx_http_lua_socket_udp_close (line 1458) | static int
function ngx_int_t (line 1503) | static ngx_int_t
function ngx_http_lua_udp_resolve_cleanup (line 1570) | static void
function ngx_http_lua_udp_socket_cleanup (line 1592) | static void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_socket_udp.h
type ngx_http_lua_socket_udp_upstream_t (line 14) | typedef struct ngx_http_lua_socket_udp_upstream_s
type ngx_http_lua_udp_connection_t (line 27) | typedef struct {
type ngx_http_lua_socket_udp_upstream_s (line 36) | struct ngx_http_lua_socket_udp_upstream_s {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_ssl.c
function ngx_int_t (line 19) | ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_ssl.h
type ngx_http_lua_ssl_ctx_t (line 17) | typedef struct {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_ssl_certby.c
function ngx_int_t (line 41) | ngx_int_t
function ngx_int_t (line 62) | ngx_int_t
function ngx_http_lua_ssl_cert_handler (line 188) | int
function ngx_http_lua_ssl_cert_done (line 376) | static void
function ngx_http_lua_ssl_cert_aborted (line 404) | static void
function u_char (line 426) | static u_char *
function ngx_int_t (line 460) | static ngx_int_t
function ngx_http_lua_ffi_ssl_get_tls1_version (line 555) | int
function ngx_http_lua_ffi_ssl_clear_certs (line 577) | int
function ngx_http_lua_ffi_ssl_set_der_certificate (line 615) | int
function ngx_http_lua_ffi_ssl_set_der_private_key (line 715) | int
function ngx_http_lua_ffi_ssl_raw_server_addr (line 772) | int
function ngx_http_lua_ffi_ssl_server_name (line 847) | int
function ngx_http_lua_ffi_ssl_server_port (line 884) | int
function ngx_http_lua_ffi_ssl_raw_client_addr (line 917) | int
function ngx_http_lua_ffi_cert_pem_to_der (line 985) | int
function ngx_http_lua_ffi_priv_key_pem_to_der (line 1064) | int
function ngx_http_lua_ffi_free_cert (line 1186) | void
function ngx_http_lua_ffi_free_priv_key (line 1223) | void
function ngx_http_lua_ffi_set_cert (line 1232) | int
function ngx_http_lua_ffi_set_priv_key (line 1318) | int
function ngx_http_lua_ssl_verify_callback (line 1358) | static int
function ngx_http_lua_ffi_ssl_verify_client (line 1372) | int
function ngx_ssl_conn_t (line 1503) | ngx_ssl_conn_t *
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_ssl_client_helloby.c
function ngx_int_t (line 32) | ngx_int_t
function ngx_int_t (line 53) | ngx_int_t
function ngx_http_lua_ssl_client_hello_handler (line 181) | int
function ngx_http_lua_ssl_client_hello_done (line 360) | static void
function ngx_http_lua_ssl_client_hello_aborted (line 388) | static void
function u_char (line 410) | static u_char *
function ngx_int_t (line 445) | static ngx_int_t
function ngx_http_lua_ffi_ssl_get_client_hello_server_name (line 540) | int
function ngx_http_lua_ffi_ssl_get_client_hello_ext (line 625) | int
function ngx_http_lua_ffi_ssl_set_protocols (line 656) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_ssl_ocsp.c
function ngx_http_lua_ffi_ssl_get_ocsp_responder_from_der_chain (line 25) | int
function ngx_http_lua_ffi_ssl_create_ocsp_request (line 148) | int
function ngx_http_lua_ffi_ssl_validate_ocsp_response (line 262) | int
function ngx_http_lua_ssl_empty_status_callback (line 435) | static int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_ssl_session_fetchby.c
function ngx_int_t (line 36) | ngx_int_t
function ngx_int_t (line 58) | ngx_int_t
function ngx_ssl_session_t (line 176) | ngx_ssl_session_t *
function ngx_http_lua_ssl_sess_fetch_done (line 386) | static void
function ngx_http_lua_ssl_sess_fetch_aborted (line 414) | static void
function u_char (line 436) | static u_char *
function ngx_int_t (line 473) | static ngx_int_t
function ngx_http_lua_ffi_ssl_set_serialized_session (line 569) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_ssl_session_storeby.c
function ngx_int_t (line 34) | ngx_int_t
function ngx_int_t (line 56) | ngx_int_t
function ngx_http_lua_ssl_sess_store_handler (line 174) | int
function u_char (line 322) | static u_char *
function ngx_int_t (line 359) | static ngx_int_t
function ngx_http_lua_ffi_ssl_get_serialized_session (line 437) | int
function ngx_http_lua_ffi_ssl_get_serialized_session_size (line 483) | int
function ngx_http_lua_ffi_ssl_get_session_id (line 531) | int
function ngx_http_lua_ffi_ssl_get_session_id_size (line 580) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_string.c
function ngx_http_lua_inject_string_api (line 40) | void
function ngx_http_lua_ngx_quote_sql_str (line 59) | static int
function ngx_http_lua_ngx_escape_sql_str (line 108) | static uintptr_t
function ngx_http_lua_encode_base64 (line 209) | static void
function ngx_http_lua_ngx_encode_args (line 254) | static int
function ngx_http_lua_ngx_decode_args (line 271) | static int
function ngx_http_lua_ngx_hmac_sha1 (line 306) | static int
function ngx_http_lua_ffi_md5_bin (line 334) | void
function ngx_http_lua_ffi_md5 (line 345) | void
function ngx_http_lua_ffi_sha1_bin (line 359) | int
function ngx_http_lua_ffi_crc32_short (line 376) | unsigned int
function ngx_http_lua_ffi_crc32_long (line 383) | unsigned int
function ngx_http_lua_ffi_encode_base64 (line 390) | size_t
function ngx_http_lua_ffi_decode_base64 (line 407) | int
function ngx_http_lua_ffi_unescape_uri (line 427) | size_t
function ngx_http_lua_ffi_uri_escaped_length (line 438) | size_t
function ngx_http_lua_ffi_escape_uri (line 446) | void
function ngx_http_lua_ffi_str_replace_char (line 454) | void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_subrequest.c
function ngx_http_lua_ngx_location_capture (line 90) | static int
function ngx_http_lua_ngx_location_capture_multi (line 119) | static int
function ngx_int_t (line 635) | static ngx_int_t
function ngx_int_t (line 778) | static ngx_int_t
function ngx_http_lua_process_vars_option (line 888) | static void
function ngx_int_t (line 943) | ngx_int_t
function ngx_http_lua_handle_subreq_responses (line 1127) | static void
function ngx_http_lua_inject_subrequest_api (line 1333) | void
function ngx_int_t (line 1348) | static ngx_int_t
function ngx_int_t (line 1505) | static ngx_int_t
function ngx_http_lua_cancel_subreq (line 1571) | static void
function ngx_int_t (line 1593) | static ngx_int_t
function ngx_int_t (line 1611) | static ngx_int_t
function ngx_int_t (line 1648) | static ngx_int_t
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_subrequest.h
type ngx_http_lua_post_subrequest_data_t (line 37) | typedef struct ngx_http_lua_post_subrequest_data_s {
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_time.c
function ngx_http_lua_ffi_now (line 17) | double
function ngx_http_lua_ffi_req_start_time (line 28) | double
function ngx_http_lua_ffi_time (line 35) | long
function ngx_http_lua_ffi_monotonic_msec (line 42) | long
function ngx_http_lua_ffi_update_time (line 49) | void
function ngx_http_lua_ffi_today (line 56) | void
function ngx_http_lua_ffi_localtime (line 68) | void
function ngx_http_lua_ffi_utctime (line 81) | void
function ngx_http_lua_ffi_cookie_time (line 94) | int
function ngx_http_lua_ffi_http_time (line 104) | void
function ngx_http_lua_ffi_parse_http_time (line 111) | void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_timer.c
type ngx_http_lua_timer_ctx_t (line 22) | typedef struct {
function ngx_http_lua_inject_timer_api (line 55) | void
function ngx_http_lua_ngx_timer_running_count (line 76) | static int
function ngx_http_lua_ngx_timer_pending_count (line 95) | static int
function ngx_http_lua_ngx_timer_at (line 114) | static int
function ngx_http_lua_ngx_timer_every (line 125) | static int
function ngx_http_lua_ngx_timer_helper (line 132) | static int
function ngx_int_t (line 376) | static ngx_int_t
function ngx_http_lua_timer_handler (line 513) | static void
function u_char (line 728) | static u_char *
function ngx_http_lua_abort_pending_timers (line 767) | static void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_uri.c
function ngx_http_lua_inject_req_uri_api (line 21) | void
function ngx_http_lua_ngx_req_set_uri (line 29) | static int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_uthread.c
function ngx_http_lua_inject_uthread_api (line 30) | void
function ngx_http_lua_uthread_spawn (line 49) | static int
function ngx_http_lua_uthread_wait (line 104) | static int
function ngx_http_lua_uthread_kill (line 202) | static int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_util.c
function ngx_http_lua_create_new_globals_table (line 207) | void
function lua_State (line 217) | static lua_State *
function lua_State (line 330) | lua_State *
function u_char (line 499) | u_char *
function ngx_int_t (line 525) | ngx_int_t
function ngx_int_t (line 561) | ngx_int_t
function ngx_int_t (line 671) | static ngx_int_t
function ngx_int_t (line 693) | static ngx_int_t
function ngx_int_t (line 732) | static ngx_int_t
function ngx_http_lua_init_registry (line 771) | static void
function ngx_http_lua_init_globals (line 809) | static void
function ngx_http_lua_inject_ngx_api (line 824) | static void
function ngx_http_lua_inject_global_write_guard (line 871) | static void
function ngx_http_lua_discard_bufs (line 919) | void
function ngx_int_t (line 931) | ngx_int_t
function ngx_http_lua_reset_ctx (line 983) | void
function ngx_http_lua_generic_phase_post_read (line 1023) | void
function ngx_http_lua_request_cleanup_handler (line 1048) | void
function ngx_http_lua_request_cleanup (line 1057) | void
function ngx_int_t (line 1108) | ngx_int_t
function ngx_int_t (line 1691) | ngx_int_t
function ngx_int_t (line 1793) | static ngx_int_t
function ngx_int_t (line 1871) | static ngx_int_t
function u_char (line 1945) | u_char *
function ngx_http_lua_set_multi_value_table (line 1959) | void
function ngx_http_lua_escape_uri (line 2000) | uintptr_t
function ngx_http_lua_util_hex2int (line 2214) | static int
function ngx_http_lua_unescape_uri (line 2231) | void
function ngx_http_lua_inject_req_api (line 2290) | void
function ngx_int_t (line 2308) | static ngx_int_t
function ngx_int_t (line 2405) | static ngx_int_t
function ngx_http_lua_process_args_option (line 2493) | void
function ngx_int_t (line 2765) | static ngx_int_t
function ngx_int_t (line 2791) | ngx_int_t
function ngx_chain_t (line 2899) | ngx_chain_t *
function ngx_http_lua_thread_traceback (line 2992) | static int
function ngx_http_lua_traceback (line 3068) | int
function ngx_http_lua_inject_arg_api (line 3094) | static void
function ngx_http_lua_param_set (line 3113) | static int
function ngx_http_lua_co_ctx_t (line 3135) | ngx_http_lua_co_ctx_t *
function ngx_http_lua_co_ctx_t (line 3180) | ngx_http_lua_co_ctx_t *
function ngx_int_t (line 3208) | ngx_int_t
function ngx_int_t (line 3260) | ngx_int_t
function ngx_http_lua_finalize_threads (line 3283) | static void
function ngx_int_t (line 3354) | static ngx_int_t
function ngx_http_lua_cleanup_zombie_child_uthreads (line 3377) | static void
function ngx_int_t (line 3395) | ngx_int_t
function ngx_http_lua_rd_check_broken_connection (line 3508) | void
function ngx_int_t (line 3576) | static ngx_int_t
function ngx_int_t (line 3626) | ngx_int_t
function ngx_http_lua_finalize_request (line 3668) | void
function ngx_http_lua_finalize_fake_request (line 3687) | void
function ngx_http_lua_close_fake_request (line 3744) | static void
function ngx_http_lua_free_fake_request (line 3771) | void
function ngx_http_lua_close_fake_connection (line 3805) | void
function ngx_int_t (line 3851) | ngx_int_t
function ngx_http_lua_cleanup_vm (line 3944) | void
function ngx_connection_t (line 3973) | ngx_connection_t *
function ngx_http_request_t (line 4043) | ngx_http_request_t *
function ngx_int_t (line 4126) | ngx_int_t
function ngx_http_lua_do_call (line 4149) | int
function ngx_http_lua_get_raw_phase_context (line 4177) | static int
function ngx_http_cleanup_t (line 4203) | ngx_http_cleanup_t *
function ngx_http_lua_cleanup_free (line 4236) | void
function ngx_http_lua_set_sa_restart (line 4277) | void
function ngx_http_lua_escape_log (line 4304) | size_t
function ngx_int_t (line 4371) | ngx_int_t
function ngx_addr_t (line 4406) | ngx_addr_t *
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_util.h
type ngx_http_lua_ffi_table_elt_t (line 106) | typedef struct {
function ngx_inline (line 127) | static ngx_inline ngx_int_t
function ngx_inline (line 270) | static ngx_inline void
function ngx_inline (line 283) | static ngx_inline ngx_http_lua_ctx_t *
function ngx_inline (line 353) | static ngx_inline lua_State *
function ngx_inline (line 381) | static ngx_inline ngx_http_request_t *
function ngx_inline (line 398) | static ngx_inline void
function ngx_inline (line 410) | static ngx_inline void
function ngx_inline (line 420) | static ngx_inline void
function ngx_inline (line 427) | static ngx_inline void
function ngx_inline (line 435) | static ngx_inline ngx_uint_t
function ngx_inline (line 451) | static ngx_inline ngx_int_t
function ngx_inline (line 469) | static ngx_inline void
function ngx_inline (line 479) | static ngx_inline ngx_chain_t *
function ngx_inline (line 497) | static ngx_inline in_port_t
function ngx_inline (line 526) | static ngx_inline ngx_int_t
function ngx_inline (line 565) | static ngx_inline void
function ngx_inline (line 620) | static ngx_inline int
function ngx_inline (line 692) | static ngx_inline void *
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_variable.c
function ngx_http_lua_ffi_var_get (line 17) | int
function ngx_http_lua_ffi_var_set (line 91) | int
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_worker.c
function ngx_http_lua_ffi_worker_pid (line 20) | int
function ngx_http_lua_ffi_worker_pids (line 28) | int
function ngx_http_lua_ffi_worker_id (line 61) | int
function ngx_http_lua_ffi_worker_exiting (line 78) | int
function ngx_http_lua_ffi_worker_count (line 85) | int
function ngx_http_lua_ffi_master_pid (line 97) | int
function ngx_http_lua_ffi_get_process_type (line 112) | int
function ngx_http_lua_ffi_process_signal_graceful_exit (line 165) | void
FILE: modules/ngx_http_lua_module/src/ngx_http_lua_worker_thread.c
type ngx_http_lua_task_ctx_t (line 34) | typedef struct ngx_http_lua_task_ctx_s {
type ngx_http_lua_worker_thread_ctx_t (line 40) | typedef struct {
function ngx_http_lua_thread_exit_process (line 54) | void
function ngx_thread_task_t (line 74) | static ngx_thread_task_t *
function ngx_http_lua_thread_task_free (line 90) | static void
function ngx_http_lua_task_ctx_t (line 98) | static ngx_http_lua_task_ctx_t *
function ngx_http_lua_free_task_ctx (line 203) | static void
function ngx_http_lua_xcopy (line 214) | static int
function ngx_http_lua_worker_thread_handler (line 309) | static void
function ngx_int_t (line 322) | static ngx_int_t
function ngx_http_lua_worker_thread_event_handler (line 367) | static void
function ngx_http_lua_worker_thread_cleanup (line 458) | static void
function ngx_http_lua_run_worker_thread (line 468) | static int
function ngx_http_lua_inject_worker_thread_api (line 633) | void
FILE: modules/ngx_http_lua_module/t/data/fake-delayed-load-module/ngx_http_lua_fake_delayed_load_module.c
function ngx_int_t (line 52) | static ngx_int_t
function ngx_http_lua_fake_delayed_load_preload (line 61) | static int
function ngx_http_lua_fake_delayed_load_function (line 73) | static int
FILE: modules/ngx_http_lua_module/t/data/fake-merge-module/ngx_http_fake_merge_module.c
type ngx_http_fake_merge_main_conf_t (line 13) | typedef struct {
type ngx_http_fake_merge_srv_conf_t (line 18) | typedef struct {
type ngx_http_fake_merge_loc_conf_t (line 23) | typedef struct {
function ngx_int_t (line 81) | static ngx_int_t
function ngx_int_t (line 105) | static ngx_int_t
function ngx_int_t (line 130) | static ngx_int_t ngx_http_fake_merge_init(ngx_conf_t *cf)
FILE: modules/ngx_http_lua_module/t/data/fake-module/ngx_http_fake_module.c
type ngx_http_fake_srv_conf_t (line 13) | typedef struct {
type ngx_http_fake_loc_conf_t (line 18) | typedef struct {
FILE: modules/ngx_http_lua_module/t/data/fake-shm-module/ngx_http_lua_fake_shm_module.c
type ngx_http_lua_fake_shm_main_conf_t (line 26) | typedef struct {
type ngx_http_lua_fake_shm_ctx_t (line 75) | typedef struct {
function ngx_int_t (line 179) | static ngx_int_t
function ngx_int_t (line 198) | static ngx_int_t
function ngx_http_lua_fake_shm_preload (line 207) | static int
function ngx_http_lua_fake_shm_get_info (line 263) | static int
FILE: modules/ngx_http_proxy_connect_module/ngx_http_proxy_connect_module.c
type ngx_http_proxy_connect_upstream_t (line 17) | typedef struct ngx_http_proxy_connect_upstream_s
type ngx_http_proxy_connect_address_t (line 19) | typedef struct ngx_http_proxy_connect_address_s
type ngx_http_proxy_connect_loc_conf_t (line 26) | typedef struct {
type ngx_http_proxy_connect_upstream_state_t (line 45) | typedef struct {
type ngx_http_proxy_connect_upstream_s (line 57) | struct ngx_http_proxy_connect_upstream_s {
type ngx_http_proxy_connect_address_s (line 86) | struct ngx_http_proxy_connect_address_s {
type ngx_http_proxy_connect_ctx_t (line 94) | typedef struct {
function __ngx_inet_set_port (line 326) | static void
function ngx_int_t (line 356) | static ngx_int_t
function ngx_int_t (line 420) | static ngx_int_t
function ngx_int_t (line 427) | static ngx_int_t
function ngx_http_proxy_connect_finalize_request (line 479) | static void
function ngx_http_proxy_connect_send_connection_established (line 534) | static void
function ngx_http_proxy_connect_tunnel (line 648) | static void
function ngx_http_proxy_connect_read_downstream (line 808) | static void
function ngx_http_proxy_connect_write_downstream (line 832) | static void
function ngx_http_proxy_connect_read_upstream (line 855) | static void
function ngx_http_proxy_connect_write_upstream (line 912) | static void
function ngx_http_proxy_connect_send_handler (line 966) | static void
function ngx_http_proxy_connect_upstream_handler (line 993) | static void
function ngx_http_proxy_connect_process_connect (line 1025) | static void
function ngx_http_proxy_connect_resolve_handler (line 1125) | static void
function ngx_int_t (line 1219) | static ngx_int_t
function ngx_int_t (line 1285) | static ngx_int_t
function ngx_http_proxy_connect_check_broken_connection (line 1307) | static void
function ngx_http_proxy_connect_rd_check_broken_connection (line 1443) | static void
function ngx_http_proxy_connect_wr_check_broken_connection (line 1450) | static void
function ngx_int_t (line 1457) | static ngx_int_t
function ngx_int_t (line 1617) | static ngx_int_t
function ngx_int_t (line 1643) | static ngx_int_t
function ngx_int_t (line 1868) | static ngx_int_t
function ngx_int_t (line 1985) | static ngx_int_t
function ngx_int_t (line 2017) | static ngx_int_t
function ngx_http_proxy_connect_variable_set_time (line 2054) | static void
function ngx_int_t (line 2094) | static ngx_int_t
function ngx_int_t (line 2151) | static ngx_int_t
function ngx_int_t (line 2208) | static ngx_int_t
function ngx_int_t (line 2265) | static ngx_int_t
function ngx_http_proxy_connect_variable_set_response (line 2293) | static void
function ngx_int_t (line 2313) | static ngx_int_t
function ngx_int_t (line 2331) | static ngx_int_t
function ngx_int_t (line 2370) | static ngx_int_t
FILE: modules/ngx_http_reqstat_module/ngx_http_reqstat.h
type ngx_http_reqstat_rbnode_t (line 14) | typedef struct ngx_http_reqstat_rbnode_s ngx_http_reqstat_rbnode_t;
type variable_index_t (line 16) | typedef struct variable_index_s variable_index_t;
type variable_index_s (line 18) | struct variable_index_s {
type ngx_http_reqstat_rbnode_s (line 23) | struct ngx_http_reqstat_rbnode_s {
type ngx_http_reqstat_conf_t (line 70) | typedef struct {
type ngx_http_reqstat_shctx_t (line 81) | typedef struct {
type ngx_http_reqstat_ctx_t (line 89) | typedef struct {
type ngx_http_reqstat_store_t (line 101) | typedef struct {
FILE: modules/ngx_http_reqstat_module/ngx_http_reqstat_module.c
function ngx_int_t (line 272) | static ngx_int_t
function ngx_int_t (line 299) | static ngx_int_t
function ngx_int_t (line 749) | static ngx_int_t
function ngx_int_t (line 780) | static ngx_int_t
function ngx_int_t (line 811) | static ngx_int_t
function ngx_int_t (line 1112) | static ngx_int_t
function ngx_http_reqstat_count (line 1244) | void
function ngx_http_reqstat_rbnode_t (line 1253) | ngx_http_reqstat_rbnode_t *
function ngx_int_t (line 1403) | static ngx_int_t
function ngx_http_reqstat_rbtree_insert_value (line 1456) | static void
function ngx_int_t (line 1497) | static ngx_int_t
function ngx_int_t (line 1534) | ngx_int_t
function ngx_http_reqstat_store_t (line 1571) | static ngx_http_reqstat_store_t *
function ngx_int_t (line 1649) | static ngx_int_t
FILE: modules/ngx_http_slice_module/ngx_http_slice_module.c
type ngx_http_slice_loc_conf_t (line 13) | typedef struct {
function ngx_int_t (line 117) | static ngx_int_t
FILE: modules/ngx_http_sysguard_module/ngx_http_sysguard_module.c
type ngx_http_sysguard_rt_node_t (line 15) | typedef struct {
type ngx_http_sysguard_rt_ring_t (line 22) | typedef struct {
type ngx_http_sysguard_conf_t (line 31) | typedef struct {
function ngx_int_t (line 189) | static ngx_int_t
function ngx_int_t (line 210) | static ngx_int_t
function ngx_http_sysguard_update_cpuinfo (line 238) | void
function ngx_int_t (line 274) | static ngx_int_t
function ngx_int_t (line 299) | static ngx_int_t
function ngx_http_sysguard_update_rt_node (line 377) | void
function ngx_int_t (line 430) | static ngx_int_t
function ngx_int_t (line 447) | static ngx_int_t
function ngx_int_t (line 1092) | static ngx_int_t
function ngx_int_t (line 1101) | static ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_connection_pool.c
function ngx_http_connection_pool_t (line 20) | ngx_http_connection_pool_t *
function ngx_int_t (line 66) | ngx_int_t
function ngx_http_connection_pool_free (line 131) | void
function ngx_http_connection_pool_close_handler (line 230) | static void
function ngx_http_connection_pool_close (line 274) | static void
function ngx_http_connection_pool_dummy_handler (line 296) | static void
function ngx_http_connection_pool_check (line 303) | void
FILE: modules/ngx_http_tfs_module/ngx_http_connection_pool.h
type ngx_http_connection_pool_t (line 16) | typedef struct ngx_http_connection_pool_s ngx_http_connection_pool_t;
type ngx_http_connection_pool_elt_t (line 19) | typedef struct {
type ngx_http_connection_pool_s (line 28) | struct ngx_http_connection_pool_s {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs.c
function ngx_int_t (line 61) | ngx_int_t
function ngx_int_t (line 270) | ngx_int_t
function ngx_http_tfs_remove_block_cache (line 327) | void
function ngx_int_t (line 347) | ngx_int_t
function ngx_int_t (line 433) | ngx_int_t
function ngx_int_t (line 510) | ngx_int_t
function ngx_http_tfs_event_handler (line 553) | static void
function ngx_http_tfs_send (line 586) | static void
function ngx_http_tfs_dummy_handler (line 668) | static void
function ngx_int_t (line 676) | static ngx_int_t
function ngx_int_t (line 716) | static ngx_int_t
function ngx_http_tfs_finalize_state (line 748) | void
function ngx_http_tfs_process_upstream_request (line 942) | static void
function ngx_http_tfs_send_response (line 1058) | static void
function ngx_http_tfs_set_header_line (line 1159) | static void
function ngx_http_tfs_process_non_buffered_downstream (line 1471) | static void
function ngx_http_tfs_process_non_buffered_request (line 1514) | static void
function ngx_http_tfs_process_buf_overflow (line 1669) | static void
function ngx_http_tfs_finalize_request (line 1719) | void
function ngx_http_tfs_read_handler (line 1835) | static void
function ngx_http_tfs_send_handler (line 1861) | static void
function ngx_http_tfs_handle_connection_failure (line 1886) | static void
function ngx_int_t (line 1947) | ngx_int_t
function ngx_http_tfs_set_custom_initial_parameters (line 1971) | void
function ngx_int_t (line 2006) | ngx_int_t
function ngx_int_t (line 2241) | ngx_int_t
function ngx_int_t (line 2267) | ngx_int_t
function ngx_int_t (line 2303) | ngx_int_t
function ngx_int_t (line 2423) | ngx_int_t
function ngx_int_t (line 2539) | ngx_int_t
function ngx_http_tfs_rd_check_broken_connection (line 2561) | static void
function ngx_http_tfs_wr_check_broken_connection (line 2568) | static void
function ngx_http_tfs_check_broken_connection (line 2575) | static void
FILE: modules/ngx_http_tfs_module/ngx_http_tfs.h
type ngx_table_elt_t (line 27) | typedef ngx_table_elt_t *(*ngx_http_tfs_create_header_pt)
type ngx_http_tfs_state_t (line 31) | typedef struct {
type ngx_http_tfs_block_info_t (line 37) | typedef struct {
type NGX_PACKED (line 45) | typedef struct {
type NGX_PACKED (line 54) | typedef struct {
type ngx_http_tfs_segment_data_s (line 62) | struct ngx_http_tfs_segment_data_s {
type NGX_PACKED (line 80) | typedef struct {
type ngx_http_tfs_upstream_s (line 96) | struct ngx_http_tfs_upstream_s {
type ngx_http_tfs_loc_conf_s (line 123) | struct ngx_http_tfs_loc_conf_s {
type ngx_http_tfs_srv_conf_t (line 138) | typedef struct {
type ngx_http_tfs_main_conf_s (line 144) | struct ngx_http_tfs_main_conf_s {
type ngx_int_t (line 171) | typedef ngx_int_t (*tfs_peer_handler_pt)(ngx_http_tfs_t *t);
type ngx_int_t (line 174) | typedef ngx_int_t (*ngx_http_tfs_sub_process_pt)(ngx_http_tfs_t *t);
type ngx_http_tfs_headers_in_t (line 177) | typedef struct {
type ngx_http_tfs_s (line 212) | struct ngx_http_tfs_s {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_block_cache.c
function ngx_int_t (line 13) | ngx_int_t
function ngx_http_tfs_block_cache_insert (line 48) | void
function ngx_http_tfs_block_cache_remove (line 64) | void
function ngx_int_t (line 82) | ngx_int_t
function ngx_int_t (line 147) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_block_cache.h
type ngx_http_tfs_block_cache_key_t (line 28) | typedef struct {
type ngx_http_tfs_block_cache_value_t (line 34) | typedef struct {
type ngx_http_tfs_block_cache_kv_t (line 40) | typedef struct {
type ngx_http_tfs_block_cache_shctx_t (line 46) | typedef struct {
type ngx_http_tfs_local_block_cache_ctx_t (line 56) | typedef struct {
type ngx_http_tfs_remote_block_cache_ctx_t (line 62) | typedef struct {
type ngx_http_tfs_block_cache_ctx_t (line 68) | typedef struct {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_data_server_message.c
function ngx_http_tfs_inet_t (line 43) | ngx_http_tfs_inet_t *
function ngx_chain_t (line 98) | ngx_chain_t *
function ngx_int_t (line 234) | ngx_int_t
function ngx_chain_t (line 281) | static ngx_chain_t *
function ngx_chain_t (line 324) | static ngx_chain_t *
function ngx_chain_t (line 466) | static ngx_chain_t *
function ngx_chain_t (line 555) | static ngx_chain_t *
function ngx_chain_t (line 614) | static ngx_chain_t *
function ngx_chain_t (line 706) | static ngx_chain_t *
function ngx_int_t (line 750) | static ngx_int_t
function ngx_int_t (line 791) | static ngx_int_t
function ngx_int_t (line 816) | static ngx_int_t
function ngx_int_t (line 842) | static ngx_int_t
function ngx_int_t (line 965) | static ngx_int_t
function ngx_int_t (line 1029) | static ngx_int_t
function ngx_int_t (line 1096) | ngx_int_t
function ngx_int_t (line 1130) | ngx_int_t
function ngx_int_t (line 1188) | ngx_int_t
function ngx_http_tfs_find_segment (line 1297) | int32_t
function ngx_int_t (line 1322) | ngx_int_t
function ngx_int_t (line 1448) | ngx_int_t
function ngx_int_t (line 1578) | ngx_int_t
function ngx_int_t (line 1636) | static ngx_int_t
function ngx_int_t (line 1665) | ngx_int_t
function ngx_int_t (line 1727) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_duplicate.c
function ngx_int_t (line 26) | ngx_int_t
function ngx_http_tfs_dedup_get_handler (line 62) | static void
function ngx_int_t (line 110) | ngx_int_t
function ngx_http_tfs_dedup_set_handler (line 166) | static void
function ngx_int_t (line 183) | ngx_int_t
function ngx_http_tfs_dedup_remove_handler (line 228) | static void
function ngx_int_t (line 246) | ngx_int_t
function ngx_int_t (line 266) | ngx_int_t
function ngx_http_tfs_dedup_callback (line 290) | static void
function ngx_int_t (line 461) | ngx_int_t
function ngx_int_t (line 534) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_duplicate.h
type ngx_http_tfs_dedup_ctx_t (line 15) | typedef struct {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_json.c
function ngx_http_tfs_json_gen_t (line 11) | ngx_http_tfs_json_gen_t *
function ngx_http_tfs_json_destroy (line 38) | void
function ngx_chain_t (line 47) | ngx_chain_t *
function ngx_chain_t (line 138) | ngx_chain_t *
function ngx_chain_t (line 176) | ngx_chain_t *
function ngx_chain_t (line 252) | ngx_chain_t *
function ngx_chain_t (line 295) | ngx_chain_t *
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_json.h
type ngx_http_tfs_json_gen_t (line 16) | typedef struct {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_local_block_cache.c
function ngx_int_t (line 15) | ngx_int_t
function ngx_http_tfs_local_block_cache_rbtree_insert_value (line 70) | void
function ngx_int_t (line 109) | ngx_int_t
function ngx_int_t (line 188) | ngx_int_t
function ngx_http_tfs_local_block_cache_remove (line 238) | void
function ngx_http_tfs_local_block_cache_discard (line 297) | void
function ngx_int_t (line 337) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_local_block_cache.h
type ngx_http_tfs_block_cache_node_t (line 13) | typedef struct {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_meta_server_message.c
function ngx_http_tfs_inet_t (line 27) | ngx_http_tfs_inet_t *
function ngx_chain_t (line 45) | ngx_chain_t *
function ngx_int_t (line 120) | ngx_int_t
function ngx_chain_t (line 172) | static ngx_chain_t *
function ngx_chain_t (line 254) | static ngx_chain_t *
function ngx_chain_t (line 339) | static ngx_chain_t *
function ngx_chain_t (line 418) | static ngx_chain_t *
function ngx_int_t (line 480) | static ngx_int_t
function ngx_int_t (line 507) | static ngx_int_t
function ngx_int_t (line 689) | static ngx_int_t
function ngx_int_t (line 714) | static ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_module.c
function ngx_int_t (line 208) | static ngx_int_t
function ngx_http_tfs_upstream_t (line 301) | ngx_http_tfs_upstream_t *
function ngx_http_tfs_read_body_handler (line 1062) | static void
function ngx_int_t (line 1130) | static ngx_int_t
function ngx_int_t (line 1173) | static ngx_int_t
function ngx_http_tfs_check_exit_worker (line 1207) | static void
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_name_server_message.c
function ngx_int_t (line 25) | ngx_int_t
function ngx_chain_t (line 270) | ngx_chain_t *
function ngx_int_t (line 377) | ngx_int_t
function ngx_chain_t (line 457) | static ngx_chain_t *
function ngx_chain_t (line 501) | static ngx_chain_t *
function ngx_chain_t (line 573) | static ngx_chain_t *
function ngx_int_t (line 615) | ngx_int_t
function ngx_int_t (line 712) | ngx_int_t
function ngx_int_t (line 869) | static ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_peer_connection.c
function ngx_int_t (line 19) | ngx_int_t
function ngx_http_tfs_peer_connection_t (line 111) | static ngx_http_tfs_peer_connection_t *
function ngx_http_tfs_peer_connection_t (line 267) | static ngx_http_tfs_peer_connection_t *
function ngx_http_tfs_peer_connection_t (line 453) | ngx_http_tfs_peer_connection_t *
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_peer_connection.h
type ngx_http_tfs_peer_connection_s (line 16) | struct ngx_http_tfs_peer_connection_s {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_protocol.h
type ngx_http_tfs_status_msg_e (line 23) | typedef enum
type ngx_http_tfs_message_status_t (line 116) | typedef enum
type ngx_http_tfs_action_e (line 128) | typedef enum
type ngx_http_tfs_open_mode_e (line 150) | typedef enum
type ngx_http_tfs_custom_file_type_e (line 164) | typedef enum
type ngx_http_tfs_ns_ctl_type_e (line 172) | typedef enum
type ngx_http_tfs_close_mode_e (line 188) | typedef enum
type ngx_http_tfs_remove_mode_e (line 195) | typedef enum
type ngx_http_tfs_close_option_e (line 202) | typedef enum
type ngx_http_tfs_unlink_type_e (line 210) | typedef enum
type ngx_http_tfs_file_status_e (line 219) | typedef enum
type ngx_http_tfs_access_type_e (line 228) | typedef enum
type NGX_PACKED (line 236) | typedef struct {
type NGX_PACKED (line 246) | typedef struct {
type NGX_PACKED (line 254) | typedef struct {
type NGX_PACKED (line 260) | typedef struct {
type NGX_PACKED (line 268) | typedef struct {
type NGX_PACKED (line 276) | typedef struct {
type NGX_PACKED (line 285) | typedef struct {
type NGX_PACKED (line 294) | typedef struct {
type NGX_PACKED (line 304) | typedef struct {
type NGX_PACKED (line 311) | typedef struct {
type NGX_PACKED (line 319) | typedef struct {
type NGX_PACKED (line 328) | typedef struct {
type NGX_PACKED (line 338) | typedef struct {
type NGX_PACKED (line 347) | typedef struct {
type NGX_PACKED (line 355) | typedef struct {
type NGX_PACKED (line 361) | typedef struct {
type NGX_PACKED (line 373) | typedef struct {
type NGX_PACKED (line 380) | typedef struct {
type NGX_PACKED (line 388) | typedef struct {
type NGX_PACKED (line 394) | typedef struct {
type NGX_PACKED (line 402) | typedef struct {
type NGX_PACKED (line 411) | typedef struct {
type NGX_PACKED (line 417) | typedef struct {
type NGX_PACKED (line 425) | typedef struct {
type NGX_PACKED (line 431) | typedef struct {
type NGX_PACKED (line 438) | typedef struct {
type NGX_PACKED (line 444) | typedef struct {
type NGX_PACKED (line 453) | typedef struct {
type ngx_http_tfs_custom_file_t (line 462) | typedef struct {
type ngx_http_tfs_custom_meta_info_t (line 468) | typedef struct ngx_http_tfs_custom_meta_info_s ngx_http_tfs_custom_meta_...
type ngx_http_tfs_custom_meta_info_s (line 470) | struct ngx_http_tfs_custom_meta_info_s {
type ngx_http_tfs_file_hole_info_t (line 479) | typedef struct {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_raw_fsname.c
function xor_mask (line 27) | static void
function ngx_int_t (line 39) | ngx_int_t
function u_char (line 87) | u_char*
function ngx_http_tfs_raw_file_type_e (line 116) | ngx_http_tfs_raw_file_type_e
function ngx_http_tfs_raw_fsname_encode (line 136) | void
function ngx_http_tfs_raw_fsname_decode (line 159) | void
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_raw_fsname.h
type ngx_http_tfs_raw_file_type_e (line 16) | typedef enum {
type ngx_http_tfs_raw_fsname_filebits_t (line 23) | typedef struct {
type ngx_http_tfs_raw_fsname_t (line 30) | typedef struct {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_rc_server_info.c
function ngx_http_tfs_rcs_info_t (line 15) | ngx_http_tfs_rcs_info_t *
function ngx_http_tfs_rc_server_destroy_node (line 61) | void
function ngx_http_tfs_rc_server_expire (line 166) | void
function ngx_int_t (line 194) | ngx_int_t
function ngx_http_tfs_rcs_rbtree_insert_value (line 246) | static void
function ngx_http_tfs_rcs_set_group_info_by_addr (line 297) | void
function ngx_http_tfs_dump_rc_info (line 324) | void
function ngx_int_t (line 371) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_rc_server_info.h
type ngx_http_tfs_group_info_t (line 22) | typedef struct {
type ngx_http_tfs_cluster_group_info_t (line 29) | typedef struct {
type ngx_http_tfs_physical_cluster_t (line 37) | typedef struct {
type ngx_http_tfs_logical_cluster_t (line 47) | typedef struct {
type ngx_http_tfs_oper_type_e (line 58) | typedef enum {
type ngx_http_tfs_stat_rcs_t (line 67) | typedef struct {
type ngx_http_tfs_rcs_info_t (line 77) | typedef struct {
type ngx_http_tfs_rc_shctx_t (line 112) | typedef struct {
type ngx_http_tfs_rc_ctx_t (line 122) | typedef struct {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_rc_server_message.c
function ngx_chain_t (line 43) | ngx_chain_t *
function ngx_int_t (line 59) | ngx_int_t
function ngx_chain_t (line 70) | ngx_chain_t *
function ngx_chain_t (line 124) | ngx_chain_t *
function ngx_int_t (line 271) | ngx_int_t
function ngx_int_t (line 324) | ngx_int_t
function ngx_int_t (line 417) | static ngx_int_t
function ngx_http_tfs_update_rc_servers (line 658) | static void
function ngx_int_t (line 676) | static ngx_int_t
function ngx_int_t (line 787) | static ngx_int_t
function ngx_int_t (line 873) | static ngx_int_t
function ngx_http_tfs_select_rc_server (line 890) | void
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_remote_block_cache.c
function ngx_int_t (line 21) | ngx_int_t
function ngx_http_tfs_remote_block_cache_get_handler (line 48) | static void
function ngx_int_t (line 132) | ngx_int_t
function ngx_http_tfs_remote_block_cache_dummy_handler (line 183) | static void
function ngx_http_tfs_remote_block_cache_remove (line 190) | void
function ngx_int_t (line 232) | ngx_int_t
function ngx_http_tfs_remote_block_cache_mget_handler (line 276) | static void
function ngx_int_t (line 396) | ngx_int_t
function ngx_int_t (line 469) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_restful.c
function ngx_int_t (line 19) | static ngx_int_t
function ngx_int_t (line 111) | static ngx_int_t
function ngx_int_t (line 267) | static ngx_int_t
function ngx_int_t (line 333) | static ngx_int_t
function ngx_int_t (line 515) | static ngx_int_t
function ngx_int_t (line 786) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_restful.h
type ngx_http_tfs_restful_ctx_t (line 16) | typedef struct {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_root_server_message.c
function ngx_chain_t (line 11) | ngx_chain_t *
function ngx_int_t (line 47) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_serialization.c
function ngx_int_t (line 10) | ngx_int_t
function ngx_int_t (line 35) | ngx_int_t
function ngx_int_t (line 61) | ngx_int_t
function ngx_int_t (line 647) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_server_handler.c
function ngx_int_t (line 18) | ngx_int_t
function ngx_int_t (line 34) | ngx_int_t
function ngx_int_t (line 69) | ngx_int_t
function ngx_int_t (line 85) | ngx_int_t
function ngx_int_t (line 339) | ngx_int_t
function ngx_int_t (line 437) | ngx_int_t
function ngx_int_t (line 453) | ngx_int_t
function ngx_int_t (line 500) | ngx_int_t
function ngx_int_t (line 516) | ngx_int_t
function ngx_http_tfs_reset_segment_data (line 699) | void
function ngx_int_t (line 725) | ngx_int_t
function ngx_int_t (line 798) | ngx_int_t
function ngx_int_t (line 814) | ngx_int_t
function ngx_int_t (line 1098) | ngx_int_t
function ngx_int_t (line 1203) | ngx_int_t
function ngx_int_t (line 1360) | ngx_int_t
function ngx_int_t (line 1456) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_tair_helper.c
function ngx_int_t (line 12) | ngx_int_t
function ngx_int_t (line 35) | ngx_int_t ngx_http_tfs_tair_mget_helper(ngx_http_tfs_tair_instance_t *in...
function ngx_int_t (line 56) | ngx_int_t
function ngx_int_t (line 81) | ngx_int_t
function ngx_int_t (line 104) | ngx_int_t
function ngx_int_t (line 114) | ngx_int_t ngx_http_tfs_tair_mget_helper(ngx_http_tfs_tair_instance_t *in...
function ngx_int_t (line 122) | ngx_int_t
function ngx_int_t (line 133) | ngx_int_t
function ngx_int_t (line 144) | ngx_int_t
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_tair_helper.h
type ngx_http_tfs_tair_instance_t (line 17) | typedef struct {
type ngx_http_tfs_tair_server_addr_info_t (line 27) | typedef struct {
type ngx_http_tair_data_t (line 40) | typedef struct {
type ngx_http_tair_key_value_t (line 48) | typedef struct {
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_timers.c
function ngx_http_tfs_timers_lock_t (line 14) | ngx_http_tfs_timers_lock_t *
function ngx_int_t (line 68) | ngx_int_t
function ngx_int_t (line 100) | ngx_int_t
function ngx_http_tfs_timeout_handler (line 120) | static void
FILE: modules/ngx_http_tfs_module/ngx_http_tfs_timers.h
type ngx_http_tfs_timers_lock_s (line 17) | struct ngx_http_tfs_timers_lock_s {
type ngx_http_tfs_timers_data_s (line 23) | struct ngx_http_tfs_timers_data_s {
FILE: modules/ngx_http_tfs_module/ngx_tfs_common.c
function ngx_int_t (line 24) | ngx_int_t
function ngx_http_tfs_generate_packet_id (line 68) | uint64_t
function ngx_chain_t (line 81) | ngx_chain_t *
function ngx_chain_t (line 104) | ngx_chain_t *
function ngx_http_tfs_free_chains (line 135) | void
function ngx_int_t (line 153) | ngx_int_t
function ngx_int_t (line 193) | ngx_int_t
function ngx_int_t (line 241) | ngx_int_t
function ngx_http_tfs_murmur_hash (line 273) | uint32_t
function ngx_int_t (line 315) | ngx_int_t
function ngx_http_tfs_raw_fsname_hash (line 356) | int32_t
function ngx_int_t (line 376) | ngx_int_t
function ngx_buf_t (line 401) | ngx_buf_t *
function ngx_int_t (line 431) | ngx_int_t
function u_char (line 483) | u_char *
function ngx_int_t (line 501) | ngx_int_t
function ngx_int_t (line 534) | ngx_int_t
function ngx_int_t (line 560) | ngx_int_t
function ngx_http_tfs_atoll (line 627) | long long
function ngx_int_t (line 653) | ngx_int_t
function ngx_http_tfs_get_chain_buf_size (line 727) | uint64_t
function ngx_http_tfs_dump_segment_data (line 744) | void
function ngx_http_tfs_t (line 763) | ngx_http_tfs_t *
function ngx_int_t (line 840) | ngx_int_t
function ngx_msec_int_t (line 889) | ngx_msec_int_t
function ngx_int_t (line 927) | ngx_int_t
function ngx_http_tfs_wrap_raw_file_info (line 960) | void
FILE: modules/ngx_http_tfs_module/ngx_tfs_common.h
type ngx_http_tfs_t (line 120) | typedef struct ngx_http_tfs_s ngx_http_tfs_t;
type ngx_http_tfs_peer_connection_t (line 121) | typedef struct ngx_http_tfs_peer_connection_s ngx_http_tfs_peer_connecti...
type ngx_http_tfs_main_conf_t (line 123) | typedef struct ngx_http_tfs_main_conf_s ngx_http_tfs_main_conf_t;
type ngx_http_tfs_loc_conf_t (line 124) | typedef struct ngx_http_tfs_loc_conf_s ngx_http_tfs_loc_conf_t;
type ngx_http_tfs_upstream_t (line 125) | typedef struct ngx_http_tfs_upstream_s ngx_http_tfs_upstream_t;
type ngx_http_tfs_inet_t (line 127) | typedef struct ngx_http_tfs_inet_s ngx_http_tfs_inet_t;
type ngx_http_tfs_meta_hh_t (line 128) | typedef struct ngx_http_tfs_meta_hh_s ngx_http_tfs_meta_hh_t;
type ngx_http_tfs_segment_data_t (line 130) | typedef struct ngx_http_tfs_segment_data_s ngx_http_tfs_segment_data_t;
type ngx_http_tfs_timers_lock_t (line 132) | typedef struct ngx_http_tfs_timers_lock_s ngx_http_tfs_timers_lock_t;
type ngx_http_tfs_timers_data_t (line 133) | typedef struct ngx_http_tfs_timers_data_s ngx_http_tfs_timers_data_t;
type ngx_http_tfs_stat_info_t (line 135) | typedef struct {
type ngx_http_tfs_crc_t (line 140) | typedef struct {
type ngx_http_tfs_action_t (line 146) | typedef struct {
type ngx_http_tfs_meta_hh_s (line 152) | struct ngx_http_tfs_meta_hh_s {
type ngx_http_tfs_inet_s (line 158) | struct ngx_http_tfs_inet_s {
type ngx_http_tfs_meta_table_t (line 163) | typedef struct {
type NGX_PACKED (line 169) | typedef struct {
type NGX_PACKED (line 181) | typedef struct {
type NGX_PACKED (line 193) | typedef struct {
type ngx_http_tfs_peer_server_e (line 203) | typedef enum {
type ngx_http_tfs_state_write_e (line 212) | typedef enum {
type ngx_http_tfs_state_read_e (line 230) | typedef enum {
type ngx_http_tfs_state_remove_e (line 240) | typedef enum {
type ngx_http_tfs_state_stat_e (line 255) | typedef enum {
type ngx_http_tfs_state_action_e (line 263) | typedef enum {
function ngx_http_tfs_crc (line 271) | static inline uint32_t
type sockaddr_in (line 304) | struct sockaddr_in
FILE: modules/ngx_http_trim_filter_module/ngx_http_trim_filter_module.c
type ngx_http_trim_loc_conf_t (line 25) | typedef struct {
type ngx_http_trim_ctx_t (line 35) | typedef struct {
type ngx_http_trim_state_e (line 58) | typedef enum {
function ngx_int_t (line 275) | static ngx_int_t
function ngx_int_t (line 359) | static ngx_int_t
function ngx_int_t (line 483) | static ngx_int_t
function ngx_int_t (line 2002) | static ngx_int_t
function ngx_int_t (line 2021) | static ngx_int_t
function ngx_int_t (line 2048) | static ngx_int_t
function ngx_int_t (line 2129) | static ngx_int_t
FILE: modules/ngx_http_upstream_check_module/ngx_http_upstream_check_module.c
type ngx_http_upstream_check_peer_t (line 12) | typedef struct ngx_http_upstream_check_peer_s ngx_http_upstream_check_pe...
type ngx_http_upstream_check_srv_conf_t (line 13) | typedef struct ngx_http_upstream_check_srv_conf_s
type ngx_ssl_protocol_version_t (line 25) | typedef struct {
type ngx_ssl_server_hello_t (line 31) | typedef struct {
type ngx_mysql_handshake_init_t (line 47) | typedef struct {
type ngx_ajp_raw_packet_t (line 56) | typedef struct {
type ngx_http_upstream_check_ctx_t (line 72) | typedef struct {
type ngx_http_upstream_check_peer_shm_t (line 84) | typedef struct {
type ngx_http_upstream_check_peers_shm_t (line 112) | typedef struct {
type ngx_int_t (line 129) | typedef ngx_int_t (*ngx_http_upstream_check_packet_init_pt)
type ngx_int_t (line 131) | typedef ngx_int_t (*ngx_http_upstream_check_packet_parse_pt)
type ngx_http_upstream_check_peer_s (line 136) | struct ngx_http_upstream_check_peer_s {
type ngx_http_upstream_check_peers_t (line 163) | typedef struct {
type ngx_check_conf_t (line 187) | typedef struct {
type ngx_check_status_conf_t (line 212) | typedef struct {
type ngx_http_upstream_check_status_ctx_t (line 223) | typedef struct {
type ngx_int_t (line 229) | typedef ngx_int_t (*ngx_http_upstream_check_status_command_pt)
type ngx_check_status_command_t (line 232) | typedef struct {
type ngx_http_upstream_check_main_conf_t (line 238) | typedef struct {
type ngx_http_upstream_check_srv_conf_s (line 244) | struct ngx_http_upstream_check_srv_conf_s {
type ngx_http_upstream_check_loc_conf_t (line 267) | typedef struct {
type ngx_http_fastcgi_header_t (line 272) | typedef struct {
type ngx_http_fastcgi_begin_request_t (line 284) | typedef struct {
type ngx_http_fastcgi_header_small_t (line 292) | typedef struct {
type ngx_http_fastcgi_request_start_t (line 300) | typedef struct {
type ngx_http_fastcgi_state_e (line 321) | typedef enum {
function ngx_uint_t (line 817) | ngx_uint_t
function ngx_uint_t (line 961) | ngx_uint_t
function ngx_int_t (line 1036) | static ngx_int_t
function ngx_http_upstream_check_delete_dynamic_peer (line 1093) | void
function ngx_uint_t (line 1164) | static ngx_uint_t
function ngx_http_upstream_check_clear_dynamic_peer_shm (line 1255) | static void
function ngx_uint_t (line 1268) | static ngx_uint_t
function ngx_uint_t (line 1318) | ngx_uint_t
function ngx_uint_t (line 1333) | ngx_uint_t
function ngx_http_upstream_check_get_peer (line 1359) | void
function ngx_http_upstream_check_free_peer (line 1379) | void
function ngx_int_t (line 1400) | static ngx_int_t
function ngx_int_t (line 1453) | static ngx_int_t
function ngx_http_upstream_check_begin_handler (line 1491) | static void
function ngx_http_upstream_check_connect_handler (line 1572) | static void
function ngx_int_t (line 1640) | static ngx_int_t
function ngx_http_upstream_check_peek_handler (line 1661) | static void
function ngx_http_upstream_check_discard_handler (line 1688) | static void
function ngx_http_upstream_check_dummy_handler (line 1738) | static void
function ngx_http_upstream_check_send_handler (line 1745) | static void
function ngx_http_upstream_check_recv_handler (line 1846) | static void
function ngx_int_t (line 1969) | static ngx_int_t
function ngx_int_t (line 1992) | static ngx_int_t
function ngx_int_t (line 2055) | static ngx_int_t
function ngx_int_t (line 2158) | static ngx_int_t
function ngx_int_t (line 2321) | static ngx_int_t
function ngx_int_t (line 2574) | static ngx_int_t
function ngx_http_upstream_check_http_reinit (line 2767) | static void
function ngx_int_t (line 2785) | static ngx_int_t
function ngx_int_t (line 2805) | static ngx_int_t
function ngx_http_upstream_check_ssl_hello_reinit (line 2840) | static void
function ngx_int_t (line 2854) | static ngx_int_t
function ngx_int_t (line 2874) | static ngx_int_t
function ngx_http_upstream_check_mysql_reinit (line 2904) | static void
function ngx_int_t (line 2918) | static ngx_int_t
function ngx_int_t (line 2937) | static ngx_int_t
function ngx_http_upstream_check_ajp_reinit (line 2973) | static void
function ngx_http_upstream_check_status_update (line 2987) | static void
function ngx_http_upstream_check_clean_event (line 3029) | static void
function ngx_http_upstream_check_timeout_handler (line 3070) | static void
function ngx_http_upstream_check_finish_handler (line 3091) | static void
function ngx_int_t (line 3100) | static ngx_int_t
function ngx_http_upstream_check_clear_all_events (line 3112) | static void
function ngx_http_upstream_check_clear_peer (line 3143) | static void
function ngx_int_t (line 3176) | static ngx_int_t
function ngx_http_upstream_check_status_parse_args (line 3266) | static void
function ngx_int_t (line 3302) | static ngx_int_t
function ngx_int_t (line 3315) | static ngx_int_t
function ngx_http_upstream_check_status_html_format (line 3338) | static void
function ngx_http_upstream_check_status_csv_format (line 3444) | static void
function ngx_http_upstream_check_status_json_format (line 3485) | static void
function ngx_http_upstream_check_status_prometheus_format (line 3588) | static void
function ngx_check_conf_t (line 3749) | static ngx_check_conf_t *
function ngx_check_status_conf_t (line 4113) | static ngx_check_status_conf_t *
function ngx_buf_t (line 4207) | static ngx_buf_t *
function ngx_int_t (line 4523) | static ngx_int_t
function ngx_int_t (line 4543) | static ngx_int_t
function ngx_shm_zone_t (line 4689) | static ngx_shm_zone_t *
function ngx_http_upstream_check_peer_shm_t (line 4731) | static ngx_http_upstream_check_peer_shm_t *
function ngx_int_t (line 4756) | static ngx_int_t
function ngx_int_t (line 4809) | static ngx_int_t
FILE: modules/ngx_http_upstream_consistent_hash_module/ngx_http_upstream_consistent_hash_module.c
type ngx_http_upstream_chash_down_server_t (line 21) | typedef struct {
type ngx_http_upstream_chash_server_t (line 27) | typedef struct {
type ngx_http_upstream_chash_srv_conf_t (line 35) | typedef struct {
type ngx_http_upstream_chash_peer_data_t (line 46) | typedef struct {
function ngx_int_t (line 144) | static ngx_int_t
function ngx_int_t (line 275) | static ngx_int_t
function ngx_int_t (line 295) | static ngx_int_t
function ngx_int_t (line 335) | static ngx_int_t
function ngx_http_upstream_chash_delete_node (line 482) | static void
function ngx_http_upstream_chash_get_server_index (line 503) | static uint32_t
function ngx_http_upstream_free_chash_peer (line 533) | static void
function ngx_int_t (line 605) | static ngx_int_t
function ngx_http_upstream_chash_save_peer_session (line 626) | static void
FILE: modules/ngx_http_upstream_dynamic_module/ngx_http_upstream_dynamic_module.c
type ngx_http_upstream_dynamic_srv_conf_t (line 21) | typedef struct {
type ngx_http_upstream_dynamic_peer_data_t (line 33) | typedef struct {
function ngx_int_t (line 123) | static ngx_int_t
function ngx_int_t (line 187) | static ngx_int_t
function ngx_http_upstream_dynamic_handler (line 231) | static void
function ngx_int_t (line 408) | static ngx_int_t
function ngx_http_upstream_free_dynamic_peer (line 551) | static void
function ngx_int_t (line 566) | static ngx_int_t
function ngx_http_upstream_dynamic_save_session (line 575) | static void
FILE: modules/ngx_http_upstream_dyups_module/ngx_http_dyups.h
type ngx_int_t (line 20) | typedef ngx_int_t (*ngx_dyups_add_upstream_filter_pt)
type ngx_int_t (line 22) | typedef ngx_int_t (*ngx_dyups_del_upstream_filter_pt)
FILE: modules/ngx_http_upstream_dyups_module/ngx_http_dyups_lua.c
function ngx_http_lua_update_upstream (line 16) | static int
function ngx_http_lua_delete_upstream (line 41) | static int
function ngx_http_dyups_lua_register (line 62) | static int
function ngx_int_t (line 77) | ngx_int_t
FILE: modules/ngx_http_upstream_dyups_module/ngx_http_dyups_module.c
type ngx_http_dyups_srv_conf_t (line 25) | typedef struct {
type ngx_http_dyups_main_conf_t (line 36) | typedef struct {
type ngx_http_dyups_upstream_srv_conf_t (line 47) | typedef struct {
type ngx_http_dyups_ctx_t (line 53) | typedef struct {
type ngx_dyups_status_t (line 65) | typedef struct ngx_dyups_status_s {
type ngx_dyups_shctx_t (line 71) | typedef struct ngx_dyups_shctx_s {
type ngx_dyups_global_ctx_t (line 78) | typedef struct ngx_dyups_global_ctx_s {
type ngx_dyups_msg_t (line 85) | typedef struct ngx_dyups_msg_s {
function ngx_int_t (line 261) | static ngx_int_t
function ngx_int_t (line 390) | static ngx_int_t
function ngx_int_t (line 410) | static ngx_int_t
function ngx_int_t (line 452) | static ngx_int_t
function ngx_int_t (line 540) | static ngx_int_t
function ngx_dyups_purge_msg (line 648) | static void
function ngx_http_dyups_exit_process (line 677) | static void
function ngx_int_t (line 703) | static ngx_int_t
function ngx_int_t (line 729) | ngx_int_t
function ngx_int_t (line 781) | static ngx_int_t
function ngx_buf_t (line 876) | static ngx_buf_t *
function ngx_buf_t (line 929) | static ngx_buf_t *
function ngx_buf_t (line 1008) | static ngx_buf_t *
function ngx_int_t (line 1036) | static ngx_int_t
function ngx_int_t (line 1061) | static ngx_int_t
function ngx_int_t (line 1124) | static ngx_int_t
function ngx_http_dyups_body_handler (line 1139) | static void
function ngx_int_t (line 1217) | ngx_int_t
function ngx_int_t (line 1272) | static ngx_int_t
function ngx_int_t (line 1346) | static ngx_int_t
function ngx_int_t (line 1438) | static ngx_int_t
function ngx_http_dyups_srv_conf_t (line 1517) | static ngx_http_dyups_srv_conf_t *
function ngx_int_t (line 1590) | static ngx_int_t
function ngx_dyups_mark_upstream_delete (line 1704) | static void
function ngx_http_dyups_send_response (line 1747) | static void
function ngx_buf_t (line 1786) | static ngx_buf_t *
function ngx_buf_t (line 1821) | static ngx_buf_t *
function ngx_array_t (line 1886) | ngx_array_t *
function ngx_int_t (line 1937) | static ngx_int_t
function ngx_int_t (line 1993) | static ngx_int_t
function ngx_http_dyups_free_peer (line 2006) | static void
function ngx_http_dyups_clean_request (line 2047) | static void
function ngx_http_dyups_read_msg (line 2059) | static void
function ngx_http_dyups_read_msg_locked (line 2117) | static void
function ngx_int_t (line 2232) | static ngx_int_t
function ngx_dyups_destroy_msg (line 2313) | static void
function ngx_int_t (line 2332) | static ngx_int_t
function ngx_int_t (line 2379) | static ngx_int_t
function ngx_http_dyups_save_peer_session (line 2388) | static void
function ngx_http_dyups_free_peer_session (line 2397) | static void
function ngx_http_dyups_free_peer_sessions (line 2414) | static void
function ngx_int_t (line 2438) | static ngx_int_t
function ngx_int_t (line 2451) | static ngx_int_t
FILE: modules/ngx_http_upstream_iwrr_module/ngx_http_upstream_iwrr_module.c
type ngx_http_upstream_iwrr_queue_t (line 16) | typedef struct {
type ngx_http_upstream_iwrr_srv_conf_t (line 24) | typedef struct ngx_http_upstream_iwrr_srv_conf_s ngx_http_upstream_iwrr_...
type ngx_http_upstream_iwrr_srv_conf_s (line 26) | struct ngx_http_upstream_iwrr_srv_conf_s {
type ngx_http_upstream_iwrr_peer_data_t (line 33) | typedef struct {
function ngx_int_t (line 148) | static ngx_int_t
function ngx_int_t (line 228) | static ngx_int_t
function ngx_int_t (line 257) | static ngx_int_t
function ngx_http_upstream_rr_peer_t (line 361) | static ngx_http_upstream_rr_peer_t *
function ngx_http_upstream_iwrr_queue_t (line 431) | static ngx_http_upstream_iwrr_queue_t *
function ngx_uint_t (line 456) | static inline ngx_uint_t ngx_http_upstream_iwrr_gcd(ngx_uint_t a, ngx_ui...
FILE: modules/ngx_http_upstream_keepalive_module/ngx_http_upstream_keepalive_module.c
type ngx_http_upstream_keepalive_srv_conf_t (line 15) | typedef struct {
type ngx_http_upstream_keepalive_node_t (line 38) | typedef struct {
type ngx_http_upstream_keepalive_peer_data_t (line 48) | typedef struct {
type ngx_http_upstream_keepalive_cache_t (line 70) | typedef struct {
type ngx_http_upstream_keepalive_param (line 184) | typedef struct {
function ngx_http_upstream_keepalive_insert_value (line 200) | static void
function ngx_int_t (line 242) | static ngx_int_t
function ngx_int_t (line 266) | static ngx_int_t
function ngx_int_t (line 279) | static ngx_int_t
function ngx_int_t (line 297) | static ngx_int_t
function ngx_int_t (line 313) | static ngx_int_t
function ngx_int_t (line 416) | static ngx_int_t
function ngx_http_upstream_keepalive_cleanup (line 505) | static void
function ngx_int_t (line 535) | static ngx_int_t
function ngx_http_upstream_keepalive_node_t (line 595) | static ngx_http_upstream_keepalive_node_t *
function ngx_int_t (line 635) | static ngx_int_t
function ngx_int_t (line 666) | static ngx_int_t
function ngx_int_t (line 715) | static ngx_int_t
function ngx_http_upstream_free_keepalive_peer (line 748) | static void
function ngx_http_upstream_keepalive_dummy_handler (line 931) | static void
function ngx_http_upstream_keepalive_close_handler (line 940) | static void
function ngx_http_upstream_keepalive_close (line 995) | static void
function ngx_int_t (line 1021) | static ngx_int_t
function ngx_http_upstream_keepalive_save_session (line 1031) | static void
FILE: modules/ngx_http_upstream_session_sticky_module/ngx_http_upstream_session_sticky_module.c
type ngx_http_ss_server_t (line 26) | typedef struct {
type ngx_http_upstream_ss_srv_conf_t (line 39) | typedef struct {
type ngx_http_ss_loc_conf_t (line 54) | typedef struct {
type ngx_http_ss_ctx_t (line 59) | typedef struct {
type ngx_http_upstream_ss_peer_data_t (line 73) | typedef struct {
function ngx_int_t (line 186) | static ngx_int_t
function ngx_int_t (line 243) | static ngx_int_t
function ngx_int_t (line 278) | static ngx_int_t
function ngx_int_t (line 536) | static ngx_int_t
function ngx_http_session_sticky_tmtoa (line 623) | static void
function ngx_int_t (line 649) | static ngx_int_t
function ngx_int_t (line 747) | static ngx_int_t
function ngx_int_t (line 814) | static ngx_int_t
function ngx_int_t (line 902) | static ngx_int_t
function ngx_int_t (line 1063) | static ngx_int_t
function ngx_int_t (line 1303) | static ngx_int_t
function ngx_int_t (line 1366) | static ngx_int_t
FILE: modules/ngx_http_upstream_vnswrr_module/ngx_http_upstream_vnswrr_module.c
type ngx_http_upstream_rr_vpeers_t (line 16) | typedef struct ngx_http_upstream_rr_vpeers_s ngx_http_upstream_rr_vpeer...
type ngx_http_upstream_rr_vpeers_s (line 19) | struct ngx_http_upstream_rr_vpeers_s {
type ngx_http_upstream_vnswrr_srv_conf_t (line 25) | typedef struct ngx_http_upstream_vnswrr_srv_conf_s
type ngx_http_upstream_vnswrr_srv_conf_s (line 29) | struct ngx_http_upstream_vnswrr_srv_conf_s {
type ngx_http_upstream_vnswrr_peer_data_t (line 41) | typedef struct {
function ngx_int_t (line 195) | static ngx_int_t
function ngx_int_t (line 310) | static ngx_int_t
function ngx_int_t (line 338) | static ngx_int_t
function ngx_int_t (line 444) | static ngx_int_t
function ngx_http_upstream_rr_peer_t (line 476) | static ngx_http_upstream_rr_peer_t *
function ngx_http_upstream_init_virtual_peers (line 633) | static void
function ngx_uint_t (line 671) | ngx_uint_t ngx_http_upstream_gcd(ngx_uint_t a, ngx_uint_t b)
FILE: modules/ngx_http_user_agent_module/ngx_http_user_agent_module.c
type ngx_http_user_agent_interval_t (line 24) | typedef struct {
type ngx_http_user_agent_ctx_t (line 32) | typedef struct {
function ngx_http_user_agent_interval_t (line 149) | static ngx_http_user_agent_interval_t *
function ngx_int_t (line 411) | static ngx_int_t
FILE: modules/ngx_http_xquic_module/ngx_http_v3_stream.c
function ngx_http_v3_close_stream_handler (line 25) | static void
function ngx_http_v3_request_cleanup (line 41) | static void
function ngx_http_v3_stream_t (line 51) | static ngx_http_v3_stream_t *
function ngx_int_t (line 228) | ngx_int_t
function ngx_http_v3_stream_refuse (line 259) | void
function ngx_http_v3_request_create_notify (line 272) | int
function ngx_http_v3_request_close_notify (line 310) | int
function ngx_http_v3_request_write_notify (line 351) | int
function ngx_int_t (line 390) | static ngx_int_t
function ngx_int_t (line 431) | static ngx_int_t
function ngx_int_t (line 527) | static ngx_int_t
function ngx_int_t (line 552) | static ngx_int_t
function ngx_int_t (line 599) | static ngx_int_t
function ngx_int_t (line 649) | static ngx_int_t
function ngx_int_t (line 679) | ngx_int_t
function ngx_int_t (line 759) | ngx_int_t
function ngx_int_t (line 848) | ngx_int_t
function ngx_http_v3_state_headers_complete (line 957) | void
function ngx_http_v3_request_read_notify (line 964) | int
function ngx_int_t (line 1051) | static ngx_int_t
function ngx_int_t (line 1095) | static ngx_int_t
function ngx_http_v3_run_request (line 1186) | static void
function ngx_http_v3_stream_cancel (line 1222) | void
function ngx_http_v3_stream_free (line 1243) | static void
FILE: modules/ngx_http_xquic_module/ngx_http_xquic.c
function ngx_int_t (line 28) | ngx_int_t
function ngx_int_t (line 47) | ngx_int_t
function ngx_xquic_conn_accept (line 75) | int
function ngx_xquic_conn_refuse (line 140) | void
function xqc_int_t (line 166) | xqc_int_t
function ngx_http_v3_conn_create_notify (line 280) | int
function ngx_http_v3_conn_close_notify (line 323) | int
function ngx_http_v3_conn_handshake_finished (line 346) | void
function ngx_http_v3_conn_update_cid_notify (line 368) | void
function ngx_int_t (line 382) | ngx_int_t
function ngx_int_t (line 475) | ngx_int_t
function ngx_int_t (line 524) | ngx_int_t
function ngx_int_t (line 631) | ngx_int_t
function ngx_http_v3_read_client_request_body_handler (line 734) | void
function ngx_int_t (line 767) | static ngx_int_t
function u_char (line 940) | static u_char *
function ngx_http_xquic_session_process_packet (line 972) | void
function ngx_http_xquic_read_handler (line 996) | static void
function ngx_http_xquic_readmsg_handler (line 1093) | static void
function ngx_int_t (line 1158) | static ngx_int_t
function ngx_http_xquic_connection_t (line 1273) | ngx_http_xquic_connection_t *
function ngx_http_v3_finalize_connection (line 1378) | void
function ngx_http_v3_connection_error (line 1477) | void
FILE: modules/ngx_http_xquic_module/ngx_http_xquic.h
type ngx_http_xquic_connection_t (line 21) | typedef struct ngx_http_xquic_connection_s ngx_http_xquic_connection_t;
type ngx_xquic_list_node_t (line 22) | typedef struct ngx_xquic_list_node_s ngx_xquic_list_node_t;
type ngx_http_xquic_connection_s (line 34) | struct ngx_http_xquic_connection_s {
type ngx_http_v3_header_t (line 91) | typedef struct {
type ngx_xquic_list_node_s (line 97) | struct ngx_xquic_list_node_s {
type ngx_http_v3_stream_s (line 102) | struct ngx_http_v3_stream_s {
type sockaddr (line 152) | struct sockaddr
type sockaddr (line 153) | struct sockaddr
FILE: modules/ngx_http_xquic_module/ngx_http_xquic_filter_module.c
function ngx_http_xquic_stream_send_header (line 65) | ssize_t
function ngx_http_xquic_stream_send_body (line 92) | ssize_t
function ngx_int_t (line 122) | ngx_int_t
function ngx_int_t (line 132) | ngx_int_t
function ngx_int_t (line 160) | ngx_int_t
function ngx_int_t (line 176) | ngx_int_t
function ngx_int_t (line 204) | ngx_int_t
function ngx_int_t (line 292) | static ngx_int_t
function ngx_chain_t (line 624) | ngx_chain_t *
function ngx_int_t (line 827) | ngx_int_t
FILE: modules/ngx_http_xquic_module/ngx_http_xquic_module.c
type ngx_int_t (line 21) | typedef ngx_int_t (*ngx_ssl_variable_handler_pt)(SSL *ssl,
function ngx_int_t (line 311) | static ngx_int_t
function ngx_http_xquic_off_set_variable (line 329) | static void
function ngx_int_t (line 345) | static ngx_int_t
function ngx_int_t (line 382) | static ngx_int_t
function ngx_int_t (line 410) | static ngx_int_t
function ngx_int_t (line 436) | static ngx_int_t
function ngx_int_t (line 731) | static ngx_int_t
function ngx_http_xquic_process_exit (line 746) | static void
function ngx_int_t (line 757) | static ngx_int_t
function ngx_int_t (line 776) | static ngx_int_t
function ngx_int_t (line 800) | static ngx_int_t
function ngx_int_t (line 883) | static ngx_int_t
function ngx_int_t (line 913) | static ngx_int_t
function ngx_int_t (line 946) | ngx_int_t
function ngx_int_t (line 953) | ngx_int_t
function ngx_int_t (line 960) | ngx_int_t
FILE: modules/ngx_http_xquic_module/ngx_http_xquic_module.h
type ngx_http_xquic_main_conf_t (line 18) | typedef struct {
type ngx_http_xquic_srv_conf_t (line 84) | typedef struct {
FILE: modules/ngx_http_xquic_module/ngx_xquic.c
function ngx_xquic_get_time (line 53) | uint64_t
function ngx_int_t (line 65) | ngx_int_t
function ngx_xquic_engine_timer_callback (line 91) | void
function ngx_xquic_engine_init_event_timer (line 101) | void
function ngx_xquic_engine_set_event_timer (line 120) | void
function ngx_int_t (line 138) | ngx_int_t
function ngx_int_t (line 167) | ngx_int_t
function ngx_xquic_batch_udp_traffic (line 346) | static void
function ngx_udpv2_traffic_filter_retcode (line 356) | static ngx_udpv2_traffic_filter_retcode
function ngx_int_t (line 374) | ngx_int_t
function ngx_xquic_process_exit (line 445) | void
function ngx_xquic_log_write_err (line 461) | void
function ngx_xquic_log_write_stat (line 468) | void
function ngx_int_t (line 477) | ngx_int_t
function ngx_inline (line 484) | ngx_inline ngx_int_t
function ngx_int_t (line 513) | ngx_int_t
function ngx_xquic_cid_generate_cb (line 533) | ssize_t
function ngx_xquic_cid_length (line 552) | uint32_t
function ngx_xquic_cid_worker_id_salt_range (line 559) | uint32_t
function ngx_xquic_cid_worker_id_offset (line 566) | uint32_t
function ngx_xquic_cid_worker_id_secret (line 573) | uint32_t
function ngx_xquic_random_buf (line 580) | static inline void
function ngx_xquic_generate_route_cid (line 596) | ssize_t
function ngx_inline (line 646) | static ngx_inline uint32_t
function ngx_int_t (line 653) | ngx_int_t
FILE: modules/ngx_http_xquic_module/ngx_xquic_intercom.c
type ngx_xquic_intercom_ctx_t (line 9) | typedef struct {
function ngx_int_t (line 31) | ngx_int_t
function ngx_xquic_intercom_exit (line 107) | void
function ngx_int_t (line 116) | static ngx_int_t
function ngx_xquic_intercom_recv_handler (line 192) | static void
function ngx_xquic_intercom_send (line 239) | void
function ngx_int_t (line 288) | ngx_int_t
FILE: modules/ngx_http_xquic_module/ngx_xquic_recv.c
function ngx_inline (line 15) | ngx_inline void
function ngx_xquic_packet_get_cid (line 29) | void
function ngx_int_t (line 36) | ngx_int_t
function ngx_int_t (line 82) | ngx_int_t
function ngx_xquic_event_recv (line 266) | void
function ngx_xquic_dispatcher_process_packet (line 325) | void
function u_short (line 415) | static u_short
function ngx_int_t (line 444) | ngx_int_t
function ngx_xquic_recv_from_intercom (line 496) | void
function ngx_xquic_udpv2_dispatch_packet (line 562) | static void
function ngx_xquic_dispatcher_process (line 579) | void
FILE: modules/ngx_http_xquic_module/ngx_xquic_recv.h
type ngx_xquic_recv_packet_t (line 16) | typedef struct {
FILE: modules/ngx_http_xquic_module/ngx_xquic_send.c
function ngx_http_xquic_write_handler (line 18) | void
function ngx_xquic_server_send (line 63) | ssize_t
function ngx_xquic_server_send_mmsg (line 110) | ssize_t
function ngx_inline (line 194) | static ngx_inline ssize_t
FILE: modules/ngx_http_xquic_module/ngx_xquic_send.h
type sockaddr (line 24) | struct sockaddr
type iovec (line 27) | struct iovec
type sockaddr (line 28) | struct sockaddr
FILE: modules/ngx_ingress_module/ingress.pb-c.c
function ingress__tag_value_str_list__init (line 10) | void ingress__tag_value_str_list__init
function ingress__tag_value_str_list__get_packed_size (line 16) | size_t ingress__tag_value_str_list__get_packed_size
function ingress__tag_value_str_list__pack (line 22) | size_t ingress__tag_value_str_list__pack
function ingress__tag_value_str_list__pack_to_buffer (line 29) | size_t ingress__tag_value_str_list__pack_to_buffer
function Ingress__TagValueStrList (line 36) | Ingress__TagValueStrList *
function ingress__tag_value_str_list__free_unpacked (line 46) | void ingress__tag_value_str_list__free_unpacked
function ingress__tag_item_condition__init (line 55) | void ingress__tag_item_condition__init
function ingress__tag_item_condition__get_packed_size (line 61) | size_t ingress__tag_item_condition__get_packed_size
function ingress__tag_item_condition__pack (line 67) | size_t ingress__tag_item_condition__pack
function ingress__tag_item_condition__pack_to_buffer (line 74) | size_t ingress__tag_item_condition__pack_to_buffer
function Ingress__TagItemCondition (line 81) | Ingress__TagItemCondition *
function ingress__tag_item_condition__free_unpacked (line 91) | void ingress__tag_item_condition__free_unpacked
function ingress__tag_item__init (line 100) | void ingress__tag_item__init
function ingress__tag_item__get_packed_size (line 106) | size_t ingress__tag_item__get_packed_size
function ingress__tag_item__pack (line 112) | size_t ingress__tag_item__pack
function ingress__tag_item__pack_to_buffer (line 119) | size_t ingress__tag_item__pack_to_buffer
function Ingress__TagItem (line 126) | Ingress__TagItem *
function ingress__tag_item__free_unpacked (line 136) | void ingress__tag_item__free_unpacked
function ingress__tag_rule__init (line 145) | void ingress__tag_rule__init
function ingress__tag_rule__get_packed_size (line 151) | size_t ingress__tag_rule__get_packed_size
function ingress__tag_rule__pack (line 157) | size_t ingress__tag_rule__pack
function ingress__tag_rule__pack_to_buffer (line 164) | size_t ingress__tag_rule__pack_to_buffer
function Ingress__TagRule (line 171) | Ingress__TagRule *
function ingress__tag_rule__free_unpacked (line 181) | void ingress__tag_rule__free_unpacked
function ingress__tag_router__init (line 190) | void ingress__tag_router__init
function ingress__tag_router__get_packed_size (line 196) | size_t ingress__tag_router__get_packed_size
function ingress__tag_router__pack (line 202) | size_t ingress__tag_router__pack
function ingress__tag_router__pack_to_buffer (line 209) | size_t ingress__tag_router__pack_to_buffer
function Ingress__TagRouter (line 216) | Ingress__TagRouter *
function ingress__tag_router__free_unpacked (line 226) | void ingress__tag_router__free_unpacked
function ingress__path_router__init (line 235) | void ingress__path_router__init
function ingress__path_router__get_packed_size (line 241) | size_t ingress__path_router__get_packed_size
function ingress__path_router__pack (line 247) | size_t ingress__path_router__pack
function ingress__path_router__pack_to_buffer (line 254) | size_t ingress__path_router__pack_to_buffer
function Ingress__PathRouter (line 261) | Ingress__PathRouter *
function ingress__path_router__free_unpacked (line 271) | void ingress__path_router__free_unpacked
function ingress__host_router__init (line 280) | void ingress__host_router__init
function ingress__host_router__get_packed_size (line 286) | size_t ingress__host_router__get_packed_size
function ingress__host_router__pack (line 292) | size_t ingress__host_router__pack
function ingress__host_router__pack_to_buffer (line 299) | size_t ingress__host_router__pack_to_buffer
function Ingress__HostRouter (line 306) | Ingress__HostRouter *
function ingress__host_router__free_unpacked (line 316) | void ingress__host_router__free_unpacked
function ingress__appname_router__init (line 325) | void ingress__appname_router__init
function ingress__appname_router__get_packed_size (line 331) | size_t ingress__appname_router__get_packed_size
function ingress__appname_router__pack (line 337) | size_t ingress__appname_router__pack
function ingress__appname_router__pack_to_buffer (line 344) | size_t ingress__appname_router__pack_to_buffer
function Ingress__AppnameRouter (line 351) | Ingress__AppnameRouter *
function ingress__appname_router__free_unpacked (line 361) | void ingress__appname_router__free_unpacked
function ingress__apirouter__init (line 370) | void ingress__apirouter__init
function ingress__apirouter__get_packed_size (line 376) | size_t ingress__apirouter__get_packed_size
function ingress__apirouter__pack (line 382) | size_t ingress__apirouter__pack
function ingress__apirouter__pack_to_buffer (line 389) | size_t ingress__apirouter__pack_to_buffer
function Ingress__APIRouter (line 396) | Ingress__APIRouter *
function ingress__apirouter__free_unpacked (line 406) | void ingress__apirouter__free_unpacked
function ingress__router__init (line 415) | void ingress__router__init
function ingress__router__get_packed_size (line 421) | size_t ingress__router__get_packed_size
function ingress__router__pack (line 427) | size_t ingress__router__pack
function ingress__router__pack_to_buffer (line 434) | size_t ingress__router__pack_to_buffer
function Ingress__Router (line 441) | Ingress__Router *
function ingress__router__free_unpacked (line 451) | void ingress__router__free_unpacked
function ingress__timeout__init (line 460) | void ingress__timeout__init
function ingress__timeout__get_packed_size (line 466) | size_t ingress__timeout__get_packed_size
function ingress__timeout__pack (line 472) | size_t ingress__timeout__pack
function ingress__timeout__pack_to_buffer (line 479) | size_t ingress__timeout__pack_to_buffer
function Ingress__Timeout (line 486) | Ingress__Timeout *
function ingress__timeout__free_unpacked (line 496) | void ingress__timeout__free_unpacked
function ingress__upstream__init (line 505) | void ingress__upstream__init
function ingress__upstream__get_packed_size (line 511) | size_t ingress__upstream__get_packed_size
function ingress__upstream__pack (line 517) | size_t ingress__upstream__pack
function ingress__upstream__pack_to_buffer (line 524) | size_t ingress__upstream__pack_to_buffer
function Ingress__Upstream (line 531) | Ingress__Upstream *
function ingress__upstream__free_unpacked (line 541) | void ingress__upstream__free_unpacked
function ingress__metadata__init (line 550) | void ingress__metadata__init
function ingress__metadata__get_packed_size (line 556) | size_t ingress__metadata__get_packed_size
function ingress__metadata__pack (line 562) | size_t ingress__metadata__pack
function ingress__metadata__pack_to_buffer (line 569) | size_t ingress__metadata__pack_to_buffer
function Ingress__Metadata (line 576) | Ingress__Metadata *
function ingress__metadata__free_unpacked (line 586) | void ingress__metadata__free_unpacked
function ingress__action__init (line 595) | void ingress__action__init
function ingress__action__get_packed_size (line 601) | size_t ingress__action__get_packed_size
function ingress__action__pack (line 607) | size_t ingress__action__pack
function ingress__action__pack_to_buffer (line 614) | size_t ingress__action__pack_to_buffer
function Ingress__Action (line 621) | Ingress__Action *
function ingress__action__free_unpacked (line 631) | void ingress__action__free_unpacked
function ingress__virtual_service__init (line 640) | void ingress__virtual_service__init
function ingress__virtual_service__get_packed_size (line 646) | size_t ingress__virtual_service__get_packed_size
function ingress__virtual_service__pack (line 652) | size_t ingress__virtual_service__pack
function ingress__virtual_service__pack_to_buffer (line 659) | size_t ingress__virtual_service__pack_to_buffer
function Ingress__VirtualService (line 666) | Ingress__VirtualService *
function ingress__virtual_service__free_unpacked (line 676) | void ingress__virtual_service__free_unpacked
function ingress__config__init (line 685) | void ingress__config__init
function ingress__config__get_packed_size (line 691) | size_t ingress__config__get_packed_size
function ingress__config__pack (line 697) | size_t ingress__config__pack
function ingress__config__pack_to_buffer (line 704) | size_t ingress__config__pack_to_buffer
function Ingress__Config (line 711) | Ingress__Config *
function ingress__config__free_unpacked (line 721) | void ingress__config__free_unpacked
FILE: modules/ngx_ingress_module/ingress.pb-c.h
type Ingress__TagValueStrList (line 18) | typedef struct _Ingress__TagValueStrList Ingress__TagValueStrList;
type Ingress__TagItemCondition (line 19) | typedef struct _Ingress__TagItemCondition Ingress__TagItemCondition;
type Ingress__TagItem (line 20) | typedef struct _Ingress__TagItem Ingress__TagItem;
type Ingress__TagRule (line 21) | typedef struct _Ingress__TagRule Ingress__TagRule;
type Ingress__TagRouter (line 22) | typedef struct _Ingress__TagRouter Ingress__TagRouter;
type Ingress__PathRouter (line 23) | typedef struct _Ingress__PathRouter Ingress__PathRouter;
type Ingress__HostRouter (line 24) | typedef struct _Ingress__HostRouter Ingress__HostRouter;
type Ingress__AppnameRouter (line 25) | typedef struct _Ingress__AppnameRouter Ingress__AppnameRouter;
type Ingress__APIRouter (line 26) | typedef struct _Ingress__APIRouter Ingress__APIRouter;
type Ingress__Router (line 27) | typedef struct _Ingress__Router Ingress__Router;
type Ingress__Timeout (line 28) | typedef struct _Ingress__Timeout Ingress__Timeout;
type Ingress__Upstream (line 29) | typedef struct _Ingress__Upstream Ingress__Upstream;
type Ingress__Metadata (line 30) | typedef struct _Ingress__Metadata Ingress__Metadata;
type Ingress__Action (line 31) | typedef struct _Ingress__Action Ingress__Action;
type Ingress__VirtualService (line 32) | typedef struct _Ingress__VirtualService Ingress__VirtualService;
type Ingress__Config (line 33) | typedef struct _Ingress__Config Ingress__Config;
type Ingress__LocationType (line 38) | typedef enum _Ingress__LocationType {
type Ingress__MatchType (line 65) | typedef enum _Ingress__MatchType {
type Ingress__OperatorType (line 84) | typedef enum _Ingress__OperatorType {
type Ingress__ActionType (line 111) | typedef enum _Ingress__ActionType {
type Ingress__ActionValueType (line 138) | typedef enum _Ingress__ActionValueType {
type _Ingress__TagValueStrList (line 156) | struct _Ingress__TagValueStrList
type _Ingress__TagItemCondition (line 170) | struct _Ingress__TagItemCondition
type _Ingress__TagItem (line 202) | struct _Ingress__TagItem
type _Ingress__TagRule (line 229) | struct _Ingress__TagRule
type _Ingress__TagRouter (line 243) | struct _Ingress__TagRouter
type _Ingress__PathRouter (line 258) | struct _Ingress__PathRouter
type _Ingress__HostRouter (line 271) | struct _Ingress__HostRouter
type _Ingress__AppnameRouter (line 286) | struct _Ingress__AppnameRouter
type _Ingress__APIRouter (line 299) | struct _Ingress__APIRouter
type _Ingress__Router (line 312) | struct _Ingress__Router
type _Ingress__Timeout (line 324) | struct _Ingress__Timeout
type _Ingress__Upstream (line 339) | struct _Ingress__Upstream
type _Ingress__Metadata (line 351) | struct _Ingress__Metadata
type _Ingress__Action (line 362) | struct _Ingress__Action
type _Ingress__VirtualService (line 387) | struct _Ingress__VirtualService
type _Ingress__Config (line 406) | struct _Ingress__Config
FILE: modules/ngx_ingress_module/ngx_ingress_module.c
type ngx_ingress_ctx_t (line 48) | typedef struct {
function ngx_int_t (line 280) | static ngx_int_t
function ngx_int_t (line 294) | ngx_int_t
function ngx_int_t (line 302) | ngx_int_t
function ngx_inline (line 358) | static ngx_inline ngx_int_t
function ngx_inline (line 395) | static ngx_inline ngx_int_t
function ngx_ingress_service_t (line 432) | static ngx_ingress_service_t *
function ngx_int_t (line 483) | ngx_int_t
function ngx_int_t (line 497) | static ngx_int_t
function ngx_int_t (line 606) | ngx_int_t
function check_update_status (line 669) | check_update_status
function ngx_int_t (line 732) | static ngx_int_t
function ngx_int_t (line 751) | static ngx_int_t
function ngx_ingress_exit_process (line 840) | static void
function ngx_int_t (line 1014) | static ngx_int_t
function ngx_int_t (line 1041) | static ngx_int_t
function ngx_int_t (line 1080) | static ngx_int_t
function ngx_int_t (line 1142) | static ngx_int_t
function ngx_int_t (line 1166) | static ngx_int_t
function ngx_int_t (line 1198) | static ngx_int_t
function ngx_int_t (line 1283) | ngx_int_t
function ngx_int_t (line 1471) | static ngx_int_t
function ngx_ingress_ctx_t (line 1504) | static ngx_ingress_ctx_t *
function ngx_int_t (line 1559) | static ngx_int_t
function ngx_int_t (line 1586) | static ngx_int_t
function ngx_int_t (line 1621) | static ngx_int_t
type ngx_ingress_metadata_ctx_t (line 1664) | typedef struct {
function ngx_int_t (line 1669) | static ngx_int_t
FILE: modules/ngx_ingress_module/ngx_ingress_module.h
type ngx_ingress_timeout_t (line 21) | typedef struct {
type ngx_ingress_upstream_t (line 28) | typedef struct {
type ngx_ingress_metadata_t (line 35) | typedef struct {
type Ingress__LocationType (line 40) | typedef Ingress__LocationType ngx_ingress_tag_value_location_e;
type Ingress__MatchType (line 41) | typedef Ingress__MatchType ngx_ingress_tag_match_type_e;
type Ingress__OperatorType (line 42) | typedef Ingress__OperatorType ngx_ingress_tag_operator_e;
type Ingress__ActionType (line 43) | typedef Ingress__ActionType ngx_ingress_action_type_e;
type Ingress__ActionValueType (line 44) | typedef Ingress__ActionValueType ngx_ingress_action_value_type_e;
type ngx_ingress_tag_condition_t (line 46) | typedef struct {
type ngx_ingress_action_t (line 54) | typedef struct {
type ngx_ingress_service_t (line 61) | typedef struct {
type ngx_ingress_service_queue_t (line 75) | typedef struct {
type ngx_ingress_tag_item_t (line 80) | typedef struct {
type ngx_ingress_tag_rule_t (line 87) | typedef struct {
type ngx_ingress_tag_router_t (line 91) | typedef struct {
type ngx_ingress_path_router_t (line 96) | typedef struct {
type ngx_ingress_host_router_t (line 102) | typedef struct {
type ngx_ingress_t (line 110) | typedef struct {
type ngx_ingress_gateway_t (line 122) | typedef struct {
type ngx_ingress_main_conf_t (line 139) | typedef struct {
type ngx_ingress_loc_conf_t (line 145) | typedef struct {
FILE: modules/ngx_ingress_module/ngx_ingress_protobuf.c
function ngx_int_t (line 15) | ngx_int_t
function ngx_ingress_shared_memory_uninit (line 50) | void
function ngx_ingress_shared_memory_t (line 67) | ngx_ingress_shared_memory_t *
function ngx_ingress_shared_memory_free (line 90) | void
function ngx_int_t (line 98) | ngx_int_t
function ngx_int_t (line 129) | ngx_int_t
function ngx_int_t (line 227) | ngx_int_t
function ngx_ingress_shared_memory_free_pb (line 253) | void
function ngx_ingress_host_compare (line 261) | static int
function ngx_uint_t (line 269) | static ngx_uint_t
function ngx_ingress_service_compare (line 279) | static int
function ngx_uint_t (line 287) | static ngx_uint_t
function ngx_ingress_service_t (line 297) | static ngx_ingress_service_t *
function ngx_ingress_metadata_compare (line 321) | int
function ngx_int_t (line 330) | static ngx_int_t
function ngx_int_t (line 364) | static ngx_int_t
function ngx_int_t (line 408) | static ngx_int_t
function ngx_path_prefix_compare (line 599) | static int
function ngx_int_t (line 619) | static ngx_int_t
function ngx_int_t (line 660) | static ngx_int_t
function ngx_int_t (line 725) | static ngx_int_t
function ngx_int_t (line 766) | static ngx_int_t
function ngx_int_t (line 926) | static ngx_int_t
function ngx_int_t (line 1035) | ngx_int_t
FILE: modules/ngx_ingress_module/ngx_ingress_protobuf.h
type ngx_ingress_shared_memory_type_e (line 16) | typedef enum {
type ngx_ingress_shared_memory_status_e (line 21) | typedef enum {
type ngx_ingress_shared_memory_config_t (line 26) | typedef struct {
type ngx_ingress_shared_memory_t (line 33) | typedef struct {
type ngx_ingress_pb_read_mode_e (line 46) | typedef enum {
FILE: modules/ngx_multi_upstream_module/ngx_http_multi_upstream.c
function ngx_http_multi_upstream_send_response (line 7) | void
function ngx_http_multi_upstream_next (line 104) | void
function ngx_http_multi_upstream_finalize_request (line 140) | void
function ngx_http_multi_upstream_process_non_buffered_request (line 176) | void
function ngx_int_t (line 247) | ngx_int_t
function ngx_http_multi_upstream_read_handler (line 293) | void
function ngx_http_multi_upstream_process (line 508) | void
function ngx_http_multi_upstream_handler (line 532) | void
function ngx_http_multi_upstream_send_pool_cleanup (line 547) | void
function ngx_http_multi_upstream_init_request (line 557) | void
function ngx_http_multi_upstream_connect_init (line 672) | void
function ngx_http_multi_upstream_connect_handler (line 732) | void
FILE: modules/ngx_multi_upstream_module/ngx_http_multi_upstream_module.c
type ngx_http_multi_upstream_srv_conf_t (line 15) | typedef struct {
type ngx_http_multi_upstream_cache_t (line 26) | typedef struct {
type ngx_http_multi_upstream_peer_data_t (line 40) | typedef struct {
function ngx_int_t (line 174) | static ngx_int_t
function ngx_int_t (line 198) | static ngx_int_t
function ngx_int_t (line 244) | static ngx_int_t
function ngx_int_t (line 250) | static ngx_int_t
function ngx_int_t (line 355) | static ngx_int_t
function ngx_http_multi_upstream_free_fake_request (line 375) | static void
function ngx_int_t (line 387) | ngx_int_t
function ngx_http_multi_upstream_free_peer (line 525) | static void
function ngx_http_multi_upstream_notify_peer (line 608) | static void
function ngx_int_t (line 621) | static ngx_int_t
function ngx_http_multi_upstream_save_session (line 629) | static void
function ngx_int_t (line 664) | ngx_int_t
function ngx_int_t (line 716) | ngx_int_t
function ngx_flag_t (line 749) | ngx_flag_t
FILE: modules/ngx_multi_upstream_module/ngx_http_multi_upstream_module.h
type ngx_int_t (line 13) | typedef ngx_int_t (*ngx_http_multi_upstream_handler_pt)(ngx_connection_t...
FILE: modules/ngx_multi_upstream_module/ngx_multi_upstream_module.c
function ngx_multi_connection_t (line 13) | ngx_multi_connection_t*
function ngx_flag_t (line 23) | ngx_flag_t
function ngx_multi_cleanup (line 33) | static void
function ngx_multi_connection_t (line 75) | ngx_multi_connection_t*
function ngx_multi_request_t (line 105) | ngx_multi_request_t*
function ngx_multi_clean_leak (line 128) | void
FILE: modules/ngx_multi_upstream_module/ngx_multi_upstream_module.h
type ngx_int_t (line 18) | typedef ngx_int_t (*ngx_multi_upstream_handler_pt)(ngx_connection_t *pc);
type ngx_int_t (line 19) | typedef ngx_int_t (*ngx_multi_upstream_free_pt)(ngx_connection_t *pc, vo...
type ngx_multi_connection_t (line 21) | typedef struct {
type ngx_multi_data_t (line 36) | typedef struct {
type ngx_multi_request_t (line 41) | typedef struct {
type ngx_multi_code_t (line 56) | typedef enum {
FILE: modules/ngx_multi_upstream_module/ngx_stream_multi_upstream_module.c
type ngx_stream_multi_upstream_srv_conf_t (line 14) | typedef struct {
type ngx_stream_multi_upstream_cache_t (line 25) | typedef struct {
type ngx_stream_multi_upstream_peer_data_t (line 39) | typedef struct {
function ngx_int_t (line 169) | static ngx_int_t
function ngx_int_t (line 195) | static ngx_int_t
function ngx_int_t (line 241) | static ngx_int_t
function ngx_int_t (line 247) | static ngx_int_t
function ngx_int_t (line 355) | static ngx_int_t
function ngx_int_t (line 375) | ngx_int_t
function ngx_stream_multi_upstream_free_peer (line 487) | static void
function ngx_stream_multi_upstream_notify_peer (line 571) | static void
function ngx_int_t (line 584) | static ngx_int_t
function ngx_stream_multi_upstream_save_session (line 592) | static void
function ngx_multi_connection_t (line 625) | ngx_multi_connection_t*
function ngx_stream_session_t (line 635) | ngx_stream_session_t*
function ngx_int_t (line 658) | ngx_int_t
function ngx_int_t (line 708) | ngx_int_t
function ngx_flag_t (line 732) | ngx_flag_t
FILE: modules/ngx_slab_stat/ngx_http_slab_stat_module.c
function ngx_int_t (line 60) | static ngx_int_t
function ngx_int_t (line 101) | static ngx_int_t
FILE: src/core/nginx.c
function ngx_show_version_info (line 435) | static void
function ngx_int_t (line 510) | static ngx_int_t
function ngx_cleanup_environment (line 681) | static void
function ngx_pid_t (line 700) | ngx_pid_t
function ngx_int_t (line 801) | static ngx_int_t
function ngx_int_t (line 973) | static ngx_int_t
function ngx_int_t (line 1015) | static ngx_int_t
type group (line 1224) | struct group
type passwd (line 1225) | struct passwd
type passwd (line 1327) | struct passwd
type group (line 1328) | struct group
function ngx_cpuset_t (line 1543) | ngx_cpuset_t *
function ngx_unload_module (line 1710) | static void
FILE: src/core/ngx_array.c
function ngx_array_t (line 12) | ngx_array_t *
function ngx_array_destroy (line 30) | void
FILE: src/core/ngx_array.h
type ngx_array_t (line 16) | typedef struct {
function ngx_inline (line 31) | static ngx_inline ngx_int_t
FILE: src/core/ngx_buf.c
function ngx_buf_t (line 12) | ngx_buf_t *
function ngx_chain_t (line 47) | ngx_chain_t *
function ngx_chain_t (line 68) | ngx_chain_t *
function ngx_int_t (line 126) | ngx_int_t
function ngx_chain_t (line 156) | ngx_chain_t *
function ngx_chain_update_chains (line 184) | void
function off_t (line 226) | off_t
function ngx_chain_t (line 271) | ngx_chain_t *
FILE: src/core/ngx_buf.h
type ngx_buf_t (line 18) | typedef struct ngx_buf_s ngx_buf_t;
type ngx_buf_s (line 20) | struct ngx_buf_s {
type ngx_chain_s (line 59) | struct ngx_chain_s {
type ngx_bufs_t (line 65) | typedef struct {
type ngx_output_chain_ctx_t (line 71) | typedef struct ngx_output_chain_ctx_s ngx_output_chain_ctx_t;
type ngx_int_t (line 73) | typedef ngx_int_t (*ngx_output_chain_filter_pt)(void *ctx, ngx_chain_t *...
type ngx_output_chain_ctx_s (line 78) | struct ngx_output_chain_ctx_s {
type ngx_chain_writer_ctx_t (line 113) | typedef struct {
FILE: src/core/ngx_conf_file.c
function ngx_int_t (line 101) | static ngx_int_t
function ngx_int_t (line 355) | static ngx_int_t
function ngx_int_t (line 502) | static ngx_int_t
function ngx_int_t (line 886) | ngx_int_t
function ngx_open_file_t (line 897) | ngx_open_file_t *
function ngx_conf_flush_files (line 961) | static void
function ngx_conf_log_error (line 991) | void ngx_cdecl
FILE: src/core/ngx_conf_file.h
type ngx_command_s (line 77) | struct ngx_command_s {
type ngx_open_file_s (line 89) | struct ngx_open_file_s {
type ngx_conf_file_t (line 98) | typedef struct {
type ngx_conf_dump_t (line 106) | typedef struct {
type ngx_conf_s (line 116) | struct ngx_conf_s {
type ngx_conf_post_t (line 141) | typedef struct {
type ngx_conf_deprecated_t (line 146) | typedef struct {
type ngx_conf_num_bounds_t (line 153) | typedef struct {
type ngx_conf_enum_t (line 160) | typedef struct {
type ngx_conf_bitmask_t (line 168) | typedef struct {
FILE: src/core/ngx_config.h
type ngx_int_t (line 90) | typedef intptr_t ngx_int_t;
type ngx_uint_t (line 91) | typedef uintptr_t ngx_uint_t;
type ngx_flag_t (line 92) | typedef intptr_t ngx_flag_t;
FILE: src/core/ngx_connection.c
function ngx_listening_t (line 19) | ngx_listening_t *
function ngx_int_t (line 98) | ngx_int_t
function ngx_int_t (line 134) | ngx_int_t
function ngx_int_t (line 406) | ngx_int_t
function ngx_configure_listening_sockets (line 719) | void
function ngx_close_listening_sockets (line 1033) | void
function ngx_connection_t (line 1118) | ngx_connection_t *
function ngx_free_connection (line 1209) | void
function ngx_close_connection (line 1222) | void
function ngx_reusable_connection (line 1343) | void
function ngx_drain_connections (line 1374) | static void
function ngx_close_idle_connections (line 1431) | void
function ngx_int_t (line 1451) | ngx_int_t
function ngx_int_t (line 1523) | ngx_int_t
function ngx_int_t (line 1566) | ngx_int_t
FILE: src/core/ngx_connection.h
type ngx_listening_t (line 16) | typedef struct ngx_listening_s ngx_listening_t;
type ngx_udpv2_traffic_filter_retcode (line 20) | typedef enum
type ngx_udpv2_traffic_filter_retcode (line 30) | typedef ngx_udpv2_traffic_filter_retcode (*ngx_udpv2_traffic_filter_hand...
type ngx_udpv2_traffic_filter_st (line 32) | struct ngx_udpv2_traffic_filter_st
type ngx_listening_s (line 39) | struct ngx_listening_s {
type ngx_connection_log_error_e (line 142) | typedef enum {
type ngx_connection_tcp_nodelay_e (line 151) | typedef enum {
type ngx_connection_tcp_nopush_e (line 158) | typedef enum {
type ngx_connection_s (line 170) | struct ngx_connection_s {
type sockaddr (line 285) | struct sockaddr
FILE: src/core/ngx_core.h
type ngx_module_t (line 15) | typedef struct ngx_module_s ngx_module_t;
type ngx_conf_t (line 16) | typedef struct ngx_conf_s ngx_conf_t;
type ngx_cycle_t (line 17) | typedef struct ngx_cycle_s ngx_cycle_t;
type ngx_pool_t (line 18) | typedef struct ngx_pool_s ngx_pool_t;
type ngx_chain_t (line 19) | typedef struct ngx_chain_s ngx_chain_t;
type ngx_log_t (line 20) | typedef struct ngx_log_s ngx_log_t;
type ngx_open_file_t (line 21) | typedef struct ngx_open_file_s ngx_open_file_t;
type ngx_command_t (line 22) | typedef struct ngx_command_s ngx_command_t;
type ngx_file_t (line 23) | typedef struct ngx_file_s ngx_file_t;
type ngx_event_t (line 24) | typedef struct ngx_event_s ngx_event_t;
type ngx_event_aio_t (line 25) | typedef struct ngx_event_aio_s ngx_event_aio_t;
type ngx_connection_t (line 26) | typedef struct ngx_connection_s ngx_connection_t;
type ngx_thread_task_t (line 27) | typedef struct ngx_thread_task_s ngx_thread_task_t;
type ngx_ssl_t (line 28) | typedef struct ngx_ssl_s ngx_ssl_t;
type ngx_proxy_protocol_t (line 29) | typedef struct ngx_proxy_protocol_s ngx_proxy_protocol_t;
type ngx_ssl_connection_t (line 30) | typedef struct ngx_ssl_connection_s ngx_ssl_connection_t;
type ngx_udp_connection_t (line 31) | typedef struct ngx_udp_connection_s ngx_udp_connection_t;
type ngx_udpv2_packet_t (line 34) | typedef struct ngx_udpv2_packet_st ngx_udpv2_pa...
type ngx_udpv2_packets_hdr_t (line 35) | typedef struct ngx_udpv2_packets_hdr_st ngx_udpv2_pa...
type ngx_udpv2_traffic_filter_t (line 36) | typedef struct ngx_udpv2_traffic_filter_st ngx_udpv2_tr...
FILE: src/core/ngx_cpuinfo.c
function ngx_inline (line 20) | static ngx_inline void
function ngx_inline (line 49) | static ngx_inline void
function ngx_cpuinfo (line 72) | void
function ngx_cpuinfo (line 133) | void
FILE: src/core/ngx_crc.h
function ngx_inline (line 18) | static ngx_inline uint32_t
FILE: src/core/ngx_crc32.c
function ngx_int_t (line 105) | ngx_int_t
FILE: src/core/ngx_crc32.h
function ngx_inline (line 20) | static ngx_inline uint32_t
function ngx_inline (line 38) | static ngx_inline uint32_t
function ngx_inline (line 57) | static ngx_inline void
FILE: src/core/ngx_crypt.c
function ngx_int_t (line 29) | ngx_int_t
function ngx_int_t (line 51) | static ngx_int_t
function u_char (line 152) | static u_char *
function ngx_int_t (line 167) | static ngx_int_t
function ngx_int_t (line 187) | static ngx_int_t
function ngx_int_t (line 239) | static ngx_int_t
FILE: src/core/ngx_cycle.c
function ngx_cycle_t (line 45) | ngx_cycle_t *
function ngx_destroy_cycle_pools (line 1009) | static void
function ngx_int_t (line 1017) | static ngx_int_t
function ngx_int_t (line 1083) | ngx_int_t
function ngx_delete_pidfile (line 1131) | void
function ngx_int_t (line 1148) | ngx_int_t
function ngx_int_t (line 1202) | static ngx_int_t
function ngx_reopen_files (line 1233) | void
function ngx_shm_zone_t (line 1357) | ngx_shm_zone_t *
function ngx_clean_old_cycles (line 1431) | static void
function ngx_set_shutdown_timer (line 1488) | void
function ngx_shutdown_timer_handler (line 1506) | static void
FILE: src/core/ngx_cycle.h
type ngx_shm_zone_t (line 25) | typedef struct ngx_shm_zone_s ngx_shm_zone_t;
type ngx_int_t (line 27) | typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *d...
type ngx_shm_zone_s (line 29) | struct ngx_shm_zone_s {
type ngx_cycle_s (line 39) | struct ngx_cycle_s {
type ngx_core_conf_t (line 103) | typedef struct {
FILE: src/core/ngx_file.c
function ngx_int_t (line 20) | ngx_int_t
function ngx_int_t (line 58) | static ngx_int_t
function ngx_write_chain_to_temp_file (line 108) | ssize_t
function ngx_int_t (line 140) | ngx_int_t
function ngx_create_hashed_filename (line 240) | void
function ngx_int_t (line 265) | ngx_int_t
function ngx_err_t (line 303) | ngx_err_t
function ngx_atomic_uint_t (line 347) | ngx_atomic_uint_t
function ngx_int_t (line 525) | ngx_int_t
function ngx_int_t (line 597) | ngx_int_t
function ngx_int_t (line 659) | ngx_int_t
function ngx_int_t (line 794) | ngx_int_t
function ngx_int_t (line 945) | ngx_int_t
FILE: src/core/ngx_file.h
type ngx_file_s (line 16) | struct ngx_file_s {
type ngx_msec_t (line 45) | typedef ngx_msec_t (*ngx_path_manager_pt) (void *data);
type ngx_msec_t (line 46) | typedef ngx_msec_t (*ngx_path_purger_pt) (void *data);
type ngx_path_t (line 50) | typedef struct {
type ngx_path_init_t (line 65) | typedef struct {
type ngx_temp_file_t (line 71) | typedef struct {
type ngx_ext_rename_file_t (line 87) | typedef struct {
type ngx_copy_file_t (line 100) | typedef struct {
type ngx_tree_ctx_t (line 111) | typedef struct ngx_tree_ctx_s ngx_tree_ctx_t;
type ngx_int_t (line 113) | typedef ngx_int_t (*ngx_tree_init_handler_pt) (void *ctx, void *prev);
type ngx_int_t (line 114) | typedef ngx_int_t (*ngx_tree_handler_pt) (ngx_tree_ctx_t *ctx, ngx_str_t...
type ngx_tree_ctx_s (line 116) | struct ngx_tree_ctx_s {
FILE: src/core/ngx_hash.c
function ngx_int_t (line 251) | ngx_int_t
function ngx_int_t (line 489) | ngx_int_t
function ngx_uint_t (line 634) | ngx_uint_t
function ngx_uint_t (line 649) | ngx_uint_t
function ngx_uint_t (line 664) | ngx_uint_t
function ngx_int_t (line 682) | ngx_int_t
function ngx_int_t (line 737) | ngx_int_t
FILE: src/core/ngx_hash.h
type ngx_hash_elt_t (line 16) | typedef struct {
type ngx_hash_t (line 23) | typedef struct {
type ngx_hash_wildcard_t (line 29) | typedef struct {
type ngx_hash_key_t (line 35) | typedef struct {
type ngx_uint_t (line 42) | typedef ngx_uint_t (*ngx_hash_key_pt) (u_char *data, size_t len);
type ngx_hash_combined_t (line 45) | typedef struct {
type ngx_hash_init_t (line 52) | typedef struct {
type ngx_hash_keys_arrays_t (line 75) | typedef struct {
type ngx_table_elt_t (line 92) | typedef struct ngx_table_elt_s ngx_table_elt_t;
type ngx_table_elt_s (line 94) | struct ngx_table_elt_s {
FILE: src/core/ngx_inet.c
type sockaddr (line 16) | struct sockaddr
function in_addr_t (line 27) | in_addr_t
function ngx_int_t (line 72) | ngx_int_t
function ngx_sock_ntop (line 190) | size_t
function ngx_inet_ntop (line 273) | size_t
function ngx_inet6_ntop (line 303) | size_t
function ngx_int_t (line 382) | ngx_int_t
function ngx_int_t (line 482) | ngx_int_t
function ngx_int_t (line 569) | ngx_int_t
function ngx_int_t (line 629) | ngx_int_t
function ngx_int_t (line 691) | ngx_int_t
function ngx_int_t (line 712) | static ngx_int_t
function ngx_int_t (line 790) | static ngx_int_t
function ngx_int_t (line 996) | static ngx_int_t
function ngx_int_t (line 1123) | static ngx_int_t
function ngx_int_t (line 1223) | static ngx_int_t
function ngx_int_t (line 1428) | ngx_int_t
function ngx_int_t (line 1540) | ngx_int_t
function ngx_int_t (line 1637) | static ngx_int_t
function ngx_int_t (line 1698) | ngx_int_t
function in_port_t (line 1778) | in_port_t
function ngx_inet_set_port (line 1806) | void
function ngx_uint_t (line 1836) | ngx_uint_t
FILE: src/core/ngx_inet.h
type ngx_sockaddr_t (line 35) | typedef union {
type ngx_in_cidr_t (line 52) | typedef struct {
type ngx_in6_cidr_t (line 60) | typedef struct {
type ngx_cidr_t (line 68) | typedef struct {
type ngx_addr_t (line 79) | typedef struct {
type ngx_url_t (line 86) | typedef struct {
type sockaddr (line 119) | struct sockaddr
type sockaddr (line 123) | struct sockaddr
type sockaddr (line 130) | struct sockaddr
type sockaddr (line 131) | struct sockaddr
type sockaddr (line 132) | struct sockaddr
type sockaddr (line 133) | struct sockaddr
type sockaddr (line 134) | struct sockaddr
FILE: src/core/ngx_list.c
function ngx_list_t (line 12) | ngx_list_t *
function ngx_int_t (line 67) | static ngx_int_t
function ngx_int_t (line 86) | ngx_int_t
FILE: src/core/ngx_list.h
type ngx_list_part_t (line 16) | typedef struct ngx_list_part_s ngx_list_part_t;
type ngx_list_part_s (line 18) | struct ngx_list_part_s {
type ngx_list_t (line 25) | typedef struct {
function ngx_inline (line 36) | static ngx_inline ngx_int_t
FILE: src/core/ngx_log.c
type ngx_log_memory_buf_t (line 30) | typedef struct {
function ngx_log_error_core (line 116) | void
function ngx_log_xquic_core (line 228) | void
function ngx_log_error (line 286) | void ngx_cdecl
function ngx_log_debug_core (line 300) | void ngx_cdecl
function ngx_log_abort (line 313) | void ngx_cdecl
function ngx_log_stderr (line 329) | void ngx_cdecl
function u_char (line 358) | u_char *
function ngx_int_t (line 472) | ngx_int_t
function ngx_int_t (line 509) | ngx_int_t
function ngx_log_t (line 534) | ngx_log_t *
function ngx_log_insert (line 776) | static void
function ngx_log_memory_writer (line 812) | static void
function ngx_log_memory_cleanup (line 842) | static void
function ngx_int_t (line 908) | ngx_int_t
FILE: src/core/ngx_log.h
type u_char (line 45) | typedef u_char *(*ngx_log_handler_pt) (ngx_log_t *log, u_char *buf, size...
type ngx_log_s (line 50) | struct ngx_log_s {
function ngx_inline (line 272) | static ngx_inline void
function ngx_inline (line 279) | static ngx_inline void
FILE: src/core/ngx_md5.c
function ngx_md5_init (line 18) | void
function ngx_md5_update (line 30) | void
function ngx_md5_final (line 61) | void
function u_char (line 169) | static const u_char *
FILE: src/core/ngx_md5.h
type ngx_md5_t (line 16) | typedef struct {
FILE: src/core/ngx_module.c
function ngx_int_t (line 28) | ngx_int_t
function ngx_int_t (line 45) | ngx_int_t
function ngx_int_t (line 68) | ngx_int_t
function ngx_int_t (line 85) | ngx_int_t
function ngx_int_t (line 159) | ngx_int_t
function ngx_uint_t (line 282) | static ngx_uint_t
function ngx_uint_t (line 321) | static ngx_uint_t
FILE: src/core/ngx_module.h
type ngx_module_s (line 222) | struct ngx_module_s {
type ngx_core_module_t (line 260) | typedef struct {
FILE: src/core/ngx_murmurhash.c
function ngx_murmur_hash2 (line 11) | uint32_t
FILE: src/core/ngx_open_file_cache.c
function ngx_open_file_cache_t (line 56) | ngx_open_file_cache_t *
function ngx_open_file_cache_cleanup (line 88) | static void
function ngx_int_t (line 143) | ngx_int_t
function ngx_fd_t (line 491) | static ngx_fd_t
function ngx_int_t (line 558) | static ngx_int_t
function ngx_fd_t (line 613) | static ngx_fd_t
function ngx_int_t (line 780) | static ngx_int_t
function ngx_int_t (line 839) | static ngx_int_t
function ngx_open_file_add_event (line 953) | static void
function ngx_open_file_cleanup (line 1017) | static void
function ngx_close_cached_file (line 1031) | static void
function ngx_open_file_del_event (line 1077) | static void
function ngx_expire_old_cached_files (line 1094) | static void
function ngx_open_file_cache_rbtree_insert_value (line 1145) | static void
function ngx_cached_open_file_t (line 1186) | static ngx_cached_open_file_t *
function ngx_open_file_cache_remove (line 1226) | static void
FILE: src/core/ngx_open_file_cache.h
type ngx_open_file_info_t (line 19) | typedef struct {
type ngx_cached_open_file_t (line 54) | typedef struct ngx_cached_open_file_s ngx_cached_open_file_t;
type ngx_cached_open_file_s (line 56) | struct ngx_cached_open_file_s {
type ngx_open_file_cache_t (line 91) | typedef struct {
type ngx_open_file_cache_cleanup_t (line 102) | typedef struct {
type ngx_open_file_cache_event_t (line 110) | typedef struct {
FILE: src/core/ngx_output_chain.c
function ngx_int_t (line 41) | ngx_int_t
function ngx_inline (line 243) | static ngx_inline ngx_int_t
function ngx_int_t (line 303) | static ngx_int_t
function ngx_int_t (line 372) | static ngx_int_t
function ngx_int_t (line 422) | static ngx_int_t
function ngx_int_t (line 498) | static ngx_int_t
function ngx_int_t (line 652) | ngx_int_t
FILE: src/core/ngx_palloc.c
function ngx_pool_t (line 18) | ngx_pool_t *
function ngx_destroy_pool (line 46) | void
function ngx_reset_pool (line 99) | void
function ngx_inline (line 148) | static ngx_inline void *
function ngx_int_t (line 277) | ngx_int_t
function ngx_pool_cleanup_t (line 360) | ngx_pool_cleanup_t *
function ngx_pool_run_cleanup_file (line 391) | void
function ngx_pool_cleanup_file (line 412) | void
function ngx_pool_delete_file (line 427) | void
FILE: src/core/ngx_palloc.h
type ngx_pool_cleanup_t (line 32) | typedef struct ngx_pool_cleanup_s ngx_pool_cleanup_t;
type ngx_pool_cleanup_s (line 34) | struct ngx_pool_cleanup_s {
type ngx_pool_large_t (line 41) | typedef struct ngx_pool_large_s ngx_pool_large_t;
type ngx_pool_large_s (line 43) | struct ngx_pool_large_s {
type ngx_pool_data_t (line 49) | typedef struct {
type ngx_pool_s (line 57) | struct ngx_pool_s {
type ngx_pool_cleanup_file_t (line 68) | typedef struct {
FILE: src/core/ngx_parse.c
function ngx_parse_size (line 12) | ssize_t
function off_t (line 67) | off_t
function ngx_int_t (line 120) | ngx_int_t
FILE: src/core/ngx_parse_time.c
function time_t (line 14) | time_t
FILE: src/core/ngx_proxy_protocol.c
type ngx_proxy_protocol_header_t (line 27) | typedef struct {
type ngx_proxy_protocol_inet_addrs_t (line 35) | typedef struct {
type ngx_proxy_protocol_inet6_addrs_t (line 43) | typedef struct {
type ngx_proxy_protocol_tlv_t (line 51) | typedef struct {
type ngx_proxy_protocol_tlv_ssl_t (line 57) | typedef struct {
type ngx_proxy_protocol_tlv_entry_t (line 63) | typedef struct {
function u_char (line 99) | u_char *
function u_char (line 203) | static u_char *
function u_char (line 246) | static u_char *
function u_char (line 279) | u_char *
function u_char (line 325) | static u_char *
function ngx_int_t (line 486) | ngx_int_t
function ngx_int_t (line 572) | static ngx_int_t
FILE: src/core/ngx_proxy_protocol.h
type ngx_proxy_protocol_s (line 20) | struct ngx_proxy_protocol_s {
FILE: src/core/ngx_queue.c
function ngx_queue_t (line 17) | ngx_queue_t *
function ngx_queue_sort (line 50) | void
FILE: src/core/ngx_queue.h
type ngx_queue_t (line 16) | typedef struct ngx_queue_s ngx_queue_t;
type ngx_queue_s (line 18) | struct ngx_queue_s {
FILE: src/core/ngx_radix_tree.c
function ngx_radix_tree_t (line 15) | ngx_radix_tree_t *
function ngx_int_t (line 108) | ngx_int_t
function ngx_int_t (line 173) | ngx_int_t
function ngx_radix32tree_find (line 236) | uintptr_t
function ngx_int_t (line 268) | ngx_int_t
function ngx_int_t (line 351) | ngx_int_t
function ngx_radix128tree_find (line 424) | uintptr_t
function ngx_radix_node_t (line 463) | static ngx_radix_node_t *
FILE: src/core/ngx_radix_tree.h
type ngx_radix_node_t (line 18) | typedef struct ngx_radix_node_s ngx_radix_node_t;
type ngx_radix_node_s (line 20) | struct ngx_radix_node_s {
type ngx_radix_tree_t (line 28) | typedef struct {
FILE: src/core/ngx_rbtree.c
function ngx_rbtree_insert (line 24) | void
function ngx_rbtree_insert_value (line 96) | void
function ngx_rbtree_insert_timer_value (line 121) | void
function ngx_rbtree_delete (line 156) | void
function ngx_inline (line 318) | static ngx_inline void
function ngx_inline (line 348) | static ngx_inline void
function ngx_rbtree_node_t (line 378) | ngx_rbtree_node_t *
FILE: src/core/ngx_rbtree.h
type ngx_uint_t (line 16) | typedef ngx_uint_t ngx_rbtree_key_t;
type ngx_int_t (line 17) | typedef ngx_int_t ngx_rbtree_key_int_t;
type ngx_rbtree_node_t (line 20) | typedef struct ngx_rbtree_node_s ngx_rbtree_node_t;
type ngx_rbtree_node_s (line 22) | struct ngx_rbtree_node_s {
type ngx_rbtree_t (line 32) | typedef struct ngx_rbtree_s ngx_rbtree_t;
type ngx_rbtree_s (line 37) | struct ngx_rbtree_s {
function ngx_inline (line 76) | static ngx_inline ngx_rbtree_node_t *
FILE: src/core/ngx_regex.c
type ngx_regex_conf_t (line 12) | typedef struct {
function ngx_regex_init (line 86) | void
function ngx_inline (line 96) | static ngx_inline void
function ngx_inline (line 104) | static ngx_inline void
function ngx_int_t (line 114) | ngx_int_t
function ngx_int_t (line 266) | ngx_int_t
function ngx_int_t (line 392) | ngx_int_t
function ngx_int_t (line 455) | ngx_int_t
function ngx_int_t (line 465) | ngx_int_t
function ngx_regex_free (line 515) | static void ngx_libc_cdecl
function ngx_regex_free (line 538) | static void ngx_libc_cdecl
function ngx_regex_cleanup (line 547) | static void
function ngx_int_t (line 618) | static ngx_int_t
FILE: src/core/ngx_regex.h
type pcre2_code (line 23) | typedef pcre2_code ngx_regex_t;
type ngx_regex_t (line 31) | typedef struct {
type ngx_regex_compile_t (line 43) | typedef struct {
type ngx_regex_elt_t (line 57) | typedef struct {
FILE: src/core/ngx_resolver.c
type ngx_resolver_hdr_t (line 19) | typedef struct {
type ngx_resolver_qs_t (line 35) | typedef struct {
type ngx_resolver_an_t (line 43) | typedef struct {
type in6_addr (line 128) | struct in6_addr
function ngx_int_t (line 133) | static ngx_int_t
function ngx_int_t (line 239) | ngx_int_t
function ngx_resolver_t (line 271) | ngx_resolver_t *
function ngx_resolver_cleanup (line 468) | static void
function ngx_resolver_cleanup_tree (line 516) | static void
function ngx_resolver_ctx_t (line 549) | ngx_resolver_ctx_t *
function ngx_int_t (line 588) | ngx_int_t
function ngx_resolve_name_done (line 670) | void
function ngx_int_t (line 761) | static ngx_int_t
function ngx_int_t (line 1086) | ngx_int_t
function ngx_resolve_addr_done (line 1307) | void
function ngx_resolver_expire (line 1396) | static void
function ngx_int_t (line 1433) | static ngx_int_t
function ngx_int_t (line 1476) | static ngx_int_t
function ngx_int_t (line 1514) | static ngx_int_t
function ngx_resolver_resend_handler (line 1601) | static void
function time_t (line 1672) | static time_t
function ngx_uint_t (line 1722) | static ngx_uint_t
function ngx_resolver_udp_read (line 1734) | static void
function ngx_resolver_tcp_write (line 1773) | static void
function ngx_resolver_tcp_read (line 1830) | static void
function ngx_resolver_process_response (line 1899) | static void
type in6_addr (line 2102) | struct in6_addr
type in6_addr (line 2449) | struct in6_addr
function else (line 2531) | else if (type == NGX_RESOLVE_AAAA) {
type sockaddr (line 2619) | struct sockaddr
type sockaddr_in (line 2620) | struct sockaddr_in
type sockaddr_in (line 2621) | struct sockaddr_in
function ngx_resolver_process_srv (line 2743) | static void
function ngx_resolver_resolve_srv_names (line 3126) | static void
function ngx_resolver_srv_names_handler (line 3196) | static void
function ngx_resolver_process_ptr (line 3257) | static void
function ngx_resolver_node_t (line 3574) | static ngx_resolver_node_t *
function ngx_resolver_node_t (line 3615) | static ngx_resolver_node_t *
function ngx_resolver_node_t (line 3656) | static ngx_resolver_node_t *
function ngx_resolver_node_t (line 3689) | static ngx_resolver_node_t *
function ngx_resolver_rbtree_insert_value (line 3733) | static void
function ngx_resolver_rbtree_insert_addr6_value (line 3776) | static void
function ngx_int_t (line 3819) | static ngx_int_t
function ngx_int_t (line 3947) | static ngx_int_t
function ngx_int_t (line 4035) | static ngx_int_t
function ngx_int_t (line 4131) | static ngx_int_t
function ngx_int_t (line 4228) | static ngx_int_t
function ngx_resolver_timeout_handler (line 4252) | static void
function ngx_resolver_free_node (line 4265) | static void
function ngx_resolver_free (line 4340) | static void
function ngx_resolver_free_locked (line 4351) | static void
function ngx_resolver_addr_t (line 4375) | static ngx_resolver_addr_t *
function ngx_resolver_report_srv (line 4458) | static void
function u_char (line 4590) | static u_char *
function ngx_int_t (line 4613) | static ngx_int_t
function ngx_int_t (line 4699) | static ngx_int_t
function ngx_int_t (line 4884) | static ngx_int_t
FILE: src/core/ngx_resolver.h
type ngx_resolver_t (line 40) | typedef struct ngx_resolver_s ngx_resolver_t;
type ngx_resolver_connection_t (line 43) | typedef struct {
type ngx_resolver_ctx_t (line 56) | typedef struct ngx_resolver_ctx_s ngx_resolver_ctx_t;
type ngx_resolver_addr_t (line 61) | typedef struct {
type ngx_resolver_srv_t (line 70) | typedef struct {
type ngx_resolver_srv_name_t (line 78) | typedef struct {
type ngx_resolver_node_t (line 92) | typedef struct {
type ngx_resolver_s (line 148) | struct ngx_resolver_s {
type ngx_resolver_ctx_s (line 197) | struct ngx_resolver_ctx_s {
FILE: src/core/ngx_rwlock.c
function ngx_rwlock_wlock (line 19) | void
function ngx_rwlock_rlock (line 51) | void
function ngx_rwlock_unlock (line 89) | void
function ngx_rwlock_downgrade (line 100) | void
FILE: src/core/ngx_segment_tree.c
function ngx_int_t (line 16) | static ngx_int_t
function ngx_int_t (line 23) | ngx_int_t
function ngx_segment_tree_build (line 48) | void
function ngx_segment_tree_insert (line 74) | void
function ngx_segment_node_t (line 104) | ngx_segment_node_t *
function ngx_segment_tree_delete (line 140) | void
FILE: src/core/ngx_segment_tree.h
type ngx_segment_node_t (line 15) | typedef struct ngx_segment_node_s ngx_segment_node_t;
type ngx_segment_tree_t (line 16) | typedef struct ngx_segment_tree_s ngx_segment_tree_t;
type ngx_int_t (line 19) | typedef ngx_int_t (*ngx_segment_cmp_pt)(ngx_segment_node_t *one,
type ngx_segment_node_t (line 25) | typedef ngx_segment_node_t *(*ngx_segment_query_pt)(ngx_segment_tree_t *...
type ngx_segment_node_s (line 30) | struct ngx_segment_node_s {
type ngx_segment_tree_s (line 35) | struct ngx_segment_tree_s {
FILE: src/core/ngx_sha1.c
function ngx_sha1_init (line 19) | void
function ngx_sha1_update (line 32) | void
function ngx_sha1_final (line 63) | void
function u_char (line 156) | static const u_char *
FILE: src/core/ngx_sha1.h
type ngx_sha1_t (line 16) | typedef struct {
FILE: src/core/ngx_shmtx.c
function ngx_int_t (line 18) | ngx_int_t
function ngx_shmtx_destroy (line 46) | void
function ngx_uint_t (line 62) | ngx_uint_t
function ngx_shmtx_lock (line 69) | void
function ngx_shmtx_unlock (line 136) | void
function ngx_uint_t (line 149) | ngx_uint_t
function ngx_shmtx_wakeup (line 164) | static void
function ngx_int_t (line 202) | ngx_int_t
function ngx_shmtx_destroy (line 235) | void
function ngx_uint_t (line 245) | ngx_uint_t
function ngx_shmtx_lock (line 274) | void
function ngx_shmtx_unlock (line 289) | void
function ngx_uint_t (line 304) | ngx_uint_t
FILE: src/core/ngx_shmtx.h
type ngx_shmtx_sh_t (line 16) | typedef struct {
type ngx_shmtx_t (line 24) | typedef struct {
FILE: src/core/ngx_slab.c
function ngx_slab_sizes_init (line 85) | void
function ngx_slab_init (line 98) | void
function ngx_slab_free (line 449) | void
function ngx_slab_free_locked (line 460) | void
function ngx_slab_page_t (line 677) | static ngx_slab_page_t *
function ngx_slab_free_pages (line 733) | static void
function ngx_slab_error (line 813) | static void
FILE: src/core/ngx_slab.h
type ngx_slab_page_t (line 16) | typedef struct ngx_slab_page_s ngx_slab_page_t;
type ngx_slab_page_s (line 18) | struct ngx_slab_page_s {
type ngx_slab_stat_t (line 25) | typedef struct {
type ngx_slab_pool_t (line 34) | typedef struct {
FILE: src/core/ngx_spinlock.c
function ngx_spinlock (line 12) | void
FILE: src/core/ngx_string.c
function ngx_strlow (line 22) | void
function ngx_strnlen (line 34) | size_t
function u_char (line 50) | u_char *
function u_char (line 74) | u_char *
function u_char (line 484) | static u_char *
function u_char (line 570) | static u_char *
function ngx_int_t (line 635) | ngx_int_t
function ngx_int_t (line 661) | ngx_int_t
function u_char (line 690) | u_char *
function u_char (line 730) | u_char *
function u_char (line 753) | u_char *
function u_char (line 785) | u_char *
function ngx_int_t (line 812) | ngx_int_t
function ngx_int_t (line 835) | ngx_int_t
function ngx_int_t (line 870) | ngx_int_t
function ngx_int_t (line 895) | ngx_int_t
function ngx_int_t (line 926) | ngx_int_t
function ngx_int_t (line 966) | ngx_int_t
function ngx_atoll (line 995) | long long
function ngx_int_t (line 1024) | ngx_int_t
function ngx_atosz (line 1078) | ssize_t
function off_t (line 1106) | off_t
function time_t (line 1134) | time_t
function ngx_int_t (line 1162) | ngx_int_t
function u_char (line 1200) | u_char *
function ngx_encode_base64 (line 1214) | void
function ngx_encode_base64url (line 1224) | void
function ngx_encode_base64_internal (line 1234) | static void
function ngx_int_t (line 1278) | ngx_int_t
function ngx_int_t (line 1305) | ngx_int_t
function ngx_int_t (line 1332) | static ngx_int_t
function ngx_utf8_decode (line 1387) | uint32_t
function ngx_utf8_length (line 1449) | size_t
function u_char (line 1476) | u_char *
function ngx_escape_uri (line 1522) | uintptr_t
function ngx_unescape_uri (line 1704) | void
function ngx_escape_html (line 1834) | uintptr_t
function ngx_escape_json (line 1906) | uintptr_t
function ngx_str_rbtree_insert_value (line 1995) | void
function ngx_str_node_t (line 2035) | ngx_str_node_t *
function ngx_sort (line 2080) | void
function ngx_explicit_memzero (line 2111) | void
FILE: src/core/ngx_string.h
type ngx_str_t (line 16) | typedef struct {
type ngx_keyval_t (line 22) | typedef struct {
type ngx_variable_value_t (line 28) | typedef struct {
function ngx_inline (line 67) | static ngx_inline u_char *
function ngx_inline (line 119) | static ngx_inline u_char *
type ngx_str_node_t (line 220) | typedef struct {
FILE: src/core/ngx_syslog.c
function u_char (line 237) | u_char *
function ngx_syslog_writer (line 254) | void
function ngx_syslog_send (line 288) | ssize_t
function ngx_int_t (line 328) | static ngx_int_t
function ngx_syslog_cleanup (line 371) | static void
function u_char (line 390) | static u_char *
FILE: src/core/ngx_syslog.h
type ngx_syslog_peer_t (line 11) | typedef struct {
FILE: src/core/ngx_thread_pool.c
type ngx_thread_pool_conf_t (line 14) | typedef struct {
type ngx_thread_pool_queue_t (line 19) | typedef struct {
type ngx_thread_pool_s (line 29) | struct ngx_thread_pool_s {
function ngx_int_t (line 106) | static ngx_int_t
function ngx_thread_pool_destroy (line 171) | static void
function ngx_thread_pool_exit_handler (line 203) | static void
function ngx_thread_task_t (line 214) | ngx_thread_task_t *
function ngx_int_t (line 230) | ngx_int_t
function ngx_thread_pool_handler (line 364) | static void
function ngx_thread_pool_t (line 518) | ngx_thread_pool_t *
function ngx_thread_pool_t (line 557) | ngx_thread_pool_t *
function ngx_int_t (line 582) | static ngx_int_t
function ngx_thread_pool_exit_worker (line 616) | static void
FILE: src/core/ngx_thread_pool.h
type ngx_thread_task_s (line 17) | struct ngx_thread_task_s {
type ngx_thread_pool_t (line 26) | typedef struct ngx_thread_pool_s ngx_thread_pool_t;
FILE: src/core/ngx_times.c
function ngx_time_init (line 80) | void
function ngx_time_update (line 101) | void
function ngx_msec_t (line 248) | static ngx_msec_t
function ngx_time_sigsafe_update (line 271) | void
function u_char (line 331) | u_char *
function u_char (line 349) | u_char *
function ngx_gmtime (line 376) | void
function time_t (line 481) | time_t
FILE: src/core/ngx_times.h
type ngx_time_t (line 16) | typedef struct {
FILE: src/core/ngx_trie.c
function ngx_trie_t (line 15) | ngx_trie_t *
function ngx_trie_node_t (line 39) | ngx_trie_node_t *
function ngx_trie_node_t (line 53) | ngx_trie_node_t *
function ngx_int_t (line 110) | ngx_int_t
FILE: src/core/ngx_trie.h
type ngx_trie_t (line 19) | typedef struct ngx_trie_s ngx_trie_t;
type ngx_trie_node_t (line 20) | typedef struct ngx_trie_node_s ngx_trie_node_t;
type ngx_trie_node_t (line 22) | typedef ngx_trie_node_t *(*ngx_trie_insert_pt)(ngx_trie_t *trie,
type ngx_int_t (line 24) | typedef ngx_int_t (*ngx_trie_build_clue_pt)(ngx_trie_t *trie);
type ngx_trie_node_s (line 29) | struct ngx_trie_node_s {
type ngx_trie_s (line 39) | struct ngx_trie_s {
FILE: src/event/modules/ngx_aio_module.c
function ngx_int_t (line 77) | static ngx_int_t
function ngx_aio_done (line 94) | static void
function ngx_int_t (line 103) | static ngx_int_t
function ngx_int_t (line 110) | static ngx_int_t
function ngx_int_t (line 117) | static ngx_int_t
function ngx_int_t (line 165) | static ngx_int_t
FILE: src/event/modules/ngx_devpoll_module.c
type dvpoll (line 23) | struct dvpoll {
type ngx_devpoll_conf_t (line 32) | typedef struct {
type pollfd (line 53) | struct pollfd
function ngx_int_t (line 121) | static ngx_int_t
function ngx_devpoll_done (line 198) | static void
function ngx_int_t (line 221) | static ngx_int_t
function ngx_int_t (line 244) | static ngx_int_t
function ngx_int_t (line 294) | static ngx_int_t
function ngx_int_t (line 343) | static ngx_int_t
FILE: src/event/modules/ngx_epoll_module.c
type epoll_data_t (line 38) | typedef union epoll_data {
type epoll_event (line 45) | struct epoll_event {
function epoll_create (line 53) | int epoll_create(int size)
type epoll_event (line 59) | struct epoll_event
function epoll_ctl (line 61) | int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
type epoll_event (line 67) | struct epoll_event
function epoll_wait (line 69) | int epoll_wait(int epfd, struct epoll_event *events, int nevents, int ti...
type u_int (line 84) | typedef u_int aio_context_t;
type io_event (line 86) | struct io_event {
type ngx_epoll_conf_t (line 98) | typedef struct {
type epoll_event (line 139) | struct epoll_event
function io_setup (line 235) | static int
function io_destroy (line 242) | static int
function io_getevents (line 249) | static int
function ngx_epoll_aio_init (line 257) | static void
type epoll_event (line 367) | struct epoll_event
function ngx_int_t (line 394) | static ngx_int_t
function ngx_epoll_notify_handler (line 440) | static void
function ngx_epoll_test_rdhup (line 473) | static void
function ngx_epoll_done (line 538) | static void
function ngx_int_t (line 587) | static ngx_int_t
function ngx_int_t (line 651) | static ngx_int_t
function ngx_int_t (line 709) | static ngx_int_t
function ngx_int_t (line 733) | static ngx_int_t
function ngx_int_t (line 771) | static ngx_int_t
function ngx_int_t (line 793) | static ngx_int_t
function ngx_int_t (line 820) | static ngx_int_t
function ngx_epoll_eventfd_handler (line 1043) | static void
FILE: src/event/modules/ngx_eventport_module.c
type clockid_t (line 20) | typedef int clockid_t;
type port_event_t (line 41) | typedef struct {
type port_notify_t (line 49) | typedef struct port_notify {
type itimerspec_t (line 56) | typedef struct itimerspec { /* definition per POSIX.4 */
function port_create (line 65) | int port_create(void)
function port_associate (line 74) | int port_associate(int port, int source, uintptr_t object, int events,
function port_dissociate (line 83) | int port_dissociate(int port, int source, uintptr_t object)
type timespec (line 90) | struct timespec
function port_getn (line 92) | int port_getn(int port, port_event_t list[], uint_t max, uint_t *nget,
function port_send (line 100) | int port_send(int port, int events, void *user)
type sigevent (line 106) | struct sigevent
function timer_create (line 108) | int timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *time...
type itimerspec (line 114) | struct itimerspec
type itimerspec (line 115) | struct itimerspec
function timer_settime (line 117) | int timer_settime(timer_t timerid, int flags, const struct itimerspec *v...
function timer_delete (line 126) | int timer_delete(timer_t timerid)
type ngx_eventport_conf_t (line 134) | typedef struct {
function ngx_int_t (line 214) | static ngx_int_t
function ngx_eventport_done (line 289) | static void
function ngx_int_t (line 315) | static ngx_int_t
function ngx_int_t (line 364) | static ngx_int_t
function ngx_int_t (line 424) | static ngx_int_t
function ngx_int_t (line 439) | static ngx_int_t
FILE: src/event/modules/ngx_iocp_module.c
function ngx_int_t (line 108) | static ngx_int_t
function ngx_thread_value_t (line 158) | static ngx_thread_value_t __stdcall
function ngx_iocp_done (line 181) | static void
function ngx_int_t (line 193) | static ngx_int_t
function ngx_int_t (line 216) | static ngx_int_t
function ngx_int_t (line 234) | static ngx_int_t
FILE: src/event/modules/ngx_iocp_module.h
type ngx_iocp_conf_t (line 12) | typedef struct {
FILE: src/event/modules/ngx_kqueue_module.c
type ngx_kqueue_conf_t (line 13) | typedef struct {
type kevent (line 36) | struct kevent
type kevent (line 44) | struct kevent
type kevent (line 45) | struct kevent
type kevent (line 50) | struct kevent
function ngx_int_t (line 120) | static ngx_int_t
function ngx_int_t (line 236) | static ngx_int_t
function ngx_kqueue_done (line 265) | static void
function ngx_int_t (line 286) | static ngx_int_t
function ngx_int_t (line 342) | static ngx_int_t
function ngx_int_t (line 396) | static ngx_int_t
function ngx_int_t (line 484) | static ngx_int_t
function ngx_int_t (line 501) | static ngx_int_t
function ngx_inline (line 680) | static ngx_inline void
FILE: src/event/modules/ngx_poll_module.c
type pollfd (line 24) | struct pollfd
function ngx_int_t (line 71) | static ngx_int_t
function ngx_poll_done (line 108) | static void
function ngx_int_t (line 117) | static ngx_int_t
function ngx_int_t (line 169) | static ngx_int_t
function ngx_int_t (line 242) | static ngx_int_t
FILE: src/event/modules/ngx_rtsig_module.c
type timespec (line 36) | struct timespec
function sigtimedwait (line 38) | int sigtimedwait(const sigset_t *set, siginfo_t *info,
type ngx_rtsig_conf_t (line 49) | typedef struct {
type pollfd (line 77) | struct pollfd
function ngx_int_t (line 157) | static ngx_int_t
function ngx_rtsig_done (line 198) | static void
function ngx_int_t (line 207) | static ngx_int_t
function ngx_int_t (line 268) | static ngx_int_t
function ngx_int_t (line 303) | static ngx_int_t
function ngx_int_t (line 476) | static ngx_int_t
FILE: src/event/modules/ngx_select_module.c
function ngx_int_t (line 78) | static ngx_int_t
function ngx_select_done (line 119) | static void
function ngx_int_t (line 128) | static ngx_int_t
function ngx_int_t (line 174) | static ngx_int_t
function ngx_int_t (line 214) | static ngx_int_t
function ngx_select_repair_fd_sets (line 359) | static void
FILE: src/event/modules/ngx_win32_poll_module.c
type pollfd (line 25) | struct pollfd
function ngx_int_t (line 69) | static ngx_int_t
function ngx_poll_done (line 121) | static void
function ngx_int_t (line 132) | static ngx_int_t
function ngx_int_t (line 187) | static ngx_int_t
function ngx_int_t (line 261) | static ngx_int_t
FILE: src/event/modules/ngx_win32_select_module.c
function ngx_int_t (line 80) | static ngx_int_t
function ngx_select_done (line 122) | static void
function ngx_int_t (line 131) | static ngx_int_t
function ngx_int_t (line 184) | static ngx_int_t
function ngx_int_t (line 222) | static ngx_int_t
function ngx_select_repair_fd_sets (line 359) | static void
FILE: src/event/ngx_event.c
function ngx_process_events_and_timers (line 230) | void
function ngx_int_t (line 306) | ngx_int_t
function ngx_int_t (line 374) | ngx_int_t
function ngx_int_t (line 512) | static ngx_int_t
function ngx_timer_signal_handler (line 685) | static void
function ngx_int_t (line 698) | static ngx_int_t
function ngx_int_t (line 1046) | ngx_int_t
type sockaddr_in (line 1263) | struct sockaddr_in
type sockaddr_in6 (line 1265) | struct sockaddr_in6
type sockaddr_in6 (line 1330) | struct sockaddr_in6
type sockaddr_in (line 1337) | struct sockaddr_in
function ngx_int_t (line 1481) | static ngx_int_t
FILE: src/event/ngx_event.h
type ngx_event_ovlp_t (line 21) | typedef struct {
type ngx_event_s (line 45) | struct ngx_event_s {
type ngx_event_aio_s (line 166) | struct ngx_event_aio_s {
type ngx_event_actions_t (line 189) | typedef struct {
type ngx_int_t (line 219) | typedef ngx_int_t (*ngx_event_accept_filter_pt) (ngx_connection_t *c);
type ngx_event_conf_t (line 466) | typedef struct {
type ngx_event_module_t (line 483) | typedef struct {
FILE: src/event/ngx_event_accept.c
function ngx_event_accept (line 20) | void
function ngx_int_t (line 346) | ngx_int_t
function ngx_int_t (line 384) | ngx_int_t
function ngx_int_t (line 409) | static ngx_int_t
function ngx_reorder_accept_events (line 469) | static void
function ngx_close_accepted_connection (line 518) | static void
function u_char (line 543) | u_char *
function ngx_debug_accepted_connection (line 553) | void
FILE: src/event/ngx_event_acceptex.c
function ngx_event_acceptex (line 16) | void
function ngx_int_t (line 92) | ngx_int_t
function ngx_close_posted_connection (line 204) | static void
function u_char (line 225) | u_char *
FILE: src/event/ngx_event_connect.c
function ngx_int_t (line 20) | ngx_int_t
function ngx_int_t (line 347) | static ngx_int_t
function ngx_int_t (line 442) | ngx_int_t
FILE: src/event/ngx_event_connect.h
type ngx_peer_connection_t (line 22) | typedef struct ngx_peer_connection_s ngx_peer_connection_t;
type ngx_int_t (line 24) | typedef ngx_int_t (*ngx_event_get_peer_pt)(ngx_peer_connection_t *pc,
type ngx_int_t (line 30) | typedef ngx_int_t (*ngx_event_set_peer_session_pt)(ngx_peer_connection_t...
type ngx_peer_connection_s (line 36) | struct ngx_peer_connection_s {
FILE: src/event/ngx_event_connectex.c
function ngx_iocp_wait_connect (line 28) | int ngx_iocp_wait_connect(ngx_connection_t *c)
function ngx_iocp_wait_events (line 121) | void ngx_iocp_wait_events(int main)
FILE: src/event/ngx_event_openssl.c
type ngx_openssl_conf_t (line 16) | typedef struct {
function ngx_ssl_empty_handler (line 169) | static void
function ngx_int_t (line 177) | ngx_int_t
function ngx_ssl_handshake_async_handler (line 251) | static void
function ngx_ssl_read_async_handler (line 273) | static void
function ngx_ssl_shutdown_async_handler (line 291) | static void
function ngx_ssl_write_async_handler (line 319) | static void
function ngx_int_t (line 337) | ngx_int_t
function ngx_int_t (line 455) | ngx_int_t
function ngx_int_t (line 651) | ngx_int_t
function ngx_int_t (line 684) | ngx_int_t
function ngx_int_t (line 850) | ngx_int_t
function X509 (line 921) | static X509 *
function EVP_PKEY (line 1011) | static EVP_PKEY *
function ngx_ssl_password_callback (line 1128) | static int
function ngx_int_t (line 1156) | ngx_int_t
function ngx_int_t (line 1175) | ngx_int_t
function ngx_int_t (line 1223) | ngx_int_t
function ngx_int_t (line 1260) | ngx_int_t
function ngx_ssl_verify_callback (line 1305) | static int
function ngx_ssl_info_callback (line 1375) | static void
function ngx_array_t (line 1470) | ngx_array_t *
function ngx_array_t (line 1600) | ngx_array_t *
function ngx_ssl_passwords_cleanup (line 1663) | static void
function ngx_int_t (line 1679) | ngx_int_t
function ngx_int_t (line 1756) | ngx_int_t
function ngx_int_t (line 1838) | ngx_int_t
function ngx_int_t (line 1867) | ngx_int_t
function ngx_int_t (line 1939) | ngx_int_t
function ngx_ssl_new_client_session (line 1956) | static int
function ngx_int_t (line 1975) | ngx_int_t
function ngx_ssl_session_t (line 2033) | ngx_ssl_session_t *
function ngx_ssl_session_t (line 2047) | ngx_ssl_session_t *
function ngx_int_t (line 2058) | ngx_int_t
function ngx_int_t (line 2072) | ngx_int_t
function ngx_int_t (line 2337) | static ngx_int_t
function ngx_ssl_handshake_log (line 2497) | static void
function ngx_ssl_handshake_handler (line 2551) | static void
function ngx_ssl_recv_chain (line 2581) | ssize_t
function ngx_ssl_recv (line 2644) | ssize_t
function ngx_ssl_recv_early (line 2774) | static ssize_t
function ngx_int_t (line 2895) | static ngx_int_t
function ngx_ssl_write_handler (line 3041) | static void
function ngx_chain_t (line 3062) | ngx_chain_t *
function ngx_ssl_write (line 3250) | ssize_t
function ngx_ssl_write_early (line 3395) | static ssize_t
function ngx_ssl_sendfile (line 3510) | static ssize_t
function ngx_ssl_read_handler (line 3687) | static void
function ngx_ssl_free_buffer (line 3700) | void
function ngx_int_t (line 3711) | ngx_int_t
function ngx_ssl_shutdown_handler (line 3933) | static void
function ngx_ssl_connection_error (line 3963) | static void
function ngx_ssl_clear_error (line 4213) | static void
function ngx_ssl_error (line 4224) | void ngx_cdecl
function ngx_int_t (line 4284) | ngx_int_t
function ngx_int_t (line 4358) | static ngx_int_t
function ngx_int_t (line 4476) | ngx_int_t
function ngx_ssl_new_session (line 4547) | static int
function ngx_ssl_session_t (line 4693) | static ngx_ssl_session_t *
function ngx_ssl_remove_cached_session (line 4796) | void
function ngx_ssl_remove_session (line 4805) | static void
function ngx_ssl_expire_sessions (line 4883) | static void
function ngx_ssl_session_rbtree_insert_value (line 4924) | static void
function ngx_int_t (line 4968) | ngx_int_t
function ngx_ssl_ticket_key_callback (line 5127) | static int
function ngx_int_t (line 5266) | static ngx_int_t
function ngx_ssl_ticket_keys_cleanup (line 5395) | static void
function ngx_int_t (line 5406) | ngx_int_t
function ngx_ssl_cleanup_ctx (line 5420) | void
function ngx_int_t (line 5439) | ngx_int_t
function ngx_int_t (line 5568) | static ngx_int_t
function ngx_int_t (line 5608) | ngx_int_t
function ngx_int_t (line 5616) | ngx_int_t
function ngx_int_t (line 5624) | ngx_int_t
function ngx_int_t (line 5708) | ngx_int_t
function ngx_int_t (line 5744) | ngx_int_t
function ngx_int_t (line 5812) | ngx_int_t
function ngx_int_t (line 5839) | ngx_int_t
function ngx_int_t (line 5853) | ngx_int_t
function ngx_int_t (line 5880) | ngx_int_t
function ngx_int_t
Copy disabled (too large)
Download .json
Condensed preview — 1664 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,574K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 561,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n### Ⅰ. Issue Des"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 495,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n## Why you ne"
},
{
"path": ".github/ISSUE_TEMPLATE/question-about-tengine.md",
"chars": 208,
"preview": "---\nname: Question about Tengine\nabout: Ask whatever you want to know or confusion about Tengine\ntitle: ''\nlabels: ''\nas"
},
{
"path": ".github/workflows/ci-arm64.yml",
"chars": 3607,
"preview": "name: build tengine\n\non:\n push:\n branches: [ master ]\n pull_request:\n\njobs:\n build-arm64:\n runs-on: \"ubuntu-24."
},
{
"path": ".github/workflows/ci.yml",
"chars": 4862,
"preview": "name: test tengine\n\non:\n push:\n branches: [ master ]\n pull_request:\n branches: [ master ]\n\njobs:\n build-and-tes"
},
{
"path": ".github/workflows/test-nginx-core.yml",
"chars": 6622,
"preview": "name: test nginx core\n\non:\n push:\n branches: [ master ]\n pull_request:\n branches: [ master ]\n\njobs:\n build-and-"
},
{
"path": ".github/workflows/test-ntls.yml",
"chars": 3086,
"preview": "name: test tengine ntls\n\non:\n push:\n branches: [ master ]\n pull_request:\n branches: [ master ]\n\njobs:\n build-an"
},
{
"path": ".gitignore",
"chars": 20,
"preview": "Makefile\nobjs/\ntags\n"
},
{
"path": "AUTHORS.te",
"chars": 930,
"preview": "Names are in alphabetical order:\n\nAntónio P. P. Almeida (appa [at] perusio [dot] net)\nCharles Chen (weiyue [at] taobao ["
},
{
"path": "CHANGES",
"chars": 323302,
"preview": "Changes with nginx 1.24.0 11 Apr 2023\n\n *) 1.24.x stable branch.\n\n\nChanges wit"
},
{
"path": "CHANGES.cn",
"chars": 21030,
"preview": "Tengine 3.1.0 [2023-10-27]\n* Security: 修复HTTP2安全漏洞CVE-2023-44487 (lianglli) \n* Feature: 基于tengine-ingress,允许动态配置不同域名的多个T"
},
{
"path": "CHANGES.te",
"chars": 39885,
"preview": "Changes with Tengine 3.1.0 27 Oct 2023\n\n *) Security: fixed HTTP2 CVE-2023-44"
},
{
"path": "LICENSE",
"chars": 1715,
"preview": "/* \n * Copyright (C) 2002-2022 Igor Sysoev\n * Copyright (C) 2011,2022 Nginx, Inc.\n * Copyright (C) 2010-2022 Alibaba Gro"
},
{
"path": "README.markdown",
"chars": 5909,
"preview": "<h1 align=\"center\" style=\"border-bottom: none\">\n <br>Tengine\n</h1>\n\n<p align=\"center\">Visit <a href=\"https://tengine."
},
{
"path": "THANKS.te",
"chars": 42,
"preview": "perusio (Antnio P. P. Almeida)\nliseen.wan\n"
},
{
"path": "auto/cc/acc",
"chars": 201,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n# aCC: HP ANSI C++ B3910B A.03.55.02\n\n# C89 mode\n\nCFLAGS=\"$CF"
},
{
"path": "auto/cc/bcc",
"chars": 1275,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n# Borland C++ 5.5\n\n# optimizations\n\n# maximize speed\nCFLAGS=\""
},
{
"path": "auto/cc/ccc",
"chars": 1324,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n# Compaq C V6.5-207\n\nngx_include_opt=\"-I\"\n\n# warnings\n\nCFLAGS"
},
{
"path": "auto/cc/clang",
"chars": 1881,
"preview": "\n# Copyright (C) Nginx, Inc.\n\n\n# clang\n\n\nNGX_CLANG_VER=`$CC -v 2>&1 | grep 'version' 2>&1 \\\n |"
},
{
"path": "auto/cc/conf",
"chars": 5268,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nLINK=\"\\$(CC)\"\n\nMAIN_LINK=\nMODULE_LINK=\"-shared\"\n\nngx_include_"
},
{
"path": "auto/cc/gcc",
"chars": 3588,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2\n# 3.0.4, 3.1.1, "
},
{
"path": "auto/cc/icc",
"chars": 2874,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n# Intel C++ compiler 7.1, 8.0, 8.1, 9.0, 11.1\n\nNGX_ICC_VER=`$"
},
{
"path": "auto/cc/msvc",
"chars": 3465,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n# MSVC 6.0 SP2 cl 12.00\n# MSVC Too"
},
{
"path": "auto/cc/name",
"chars": 1568,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ \"$NGX_PLATFORM\" != win32 ]; then\n\n ngx_feature=\"C com"
},
{
"path": "auto/cc/owc",
"chars": 1862,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n# Open Watcom C 1.0, 1.2, 1.3\n\n# optimizations\n\n# maximize sp"
},
{
"path": "auto/cc/sunc",
"chars": 3516,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n# Sun C 5.7 Patch 117837-04 2005/05/11 Sun Studio 10\n# Sun"
},
{
"path": "auto/configure",
"chars": 2611,
"preview": "#!/bin/sh\n\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nLC_ALL=C\nexport LC_ALL\n\n. auto/options\n. auto/init\n"
},
{
"path": "auto/define",
"chars": 141,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\ncat << END >> $NGX_AUTO_CONFIG_H\n\n#ifndef $have\n#define $have"
},
{
"path": "auto/endianness",
"chars": 889,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho $ngx_n \"checking for system byte ordering ...$ngx_c\"\n\nca"
},
{
"path": "auto/feature",
"chars": 2812,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho $ngx_n \"checking for $ngx_feature ...$ngx_c\"\n\ncat << END"
},
{
"path": "auto/have",
"chars": 136,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\ncat << END >> $NGX_AUTO_CONFIG_H\n\n#ifndef $have\n#define $have"
},
{
"path": "auto/have_headers",
"chars": 137,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\ncat << END >> $NGX_AUTO_HEADERS_H\n\n#ifndef $have\n#define $hav"
},
{
"path": "auto/headers",
"chars": 411,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nngx_include=\"unistd.h\"; . auto/include\nngx_include=\"intt"
},
{
"path": "auto/include",
"chars": 1020,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho $ngx_n \"checking for $ngx_include ...$ngx_c\"\n\ncat << END"
},
{
"path": "auto/init",
"chars": 768,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nNGX_MAKEFILE=$NGX_OBJS/Makefile\nNGX_MODULES_C=$NGX_OBJS/ngx_m"
},
{
"path": "auto/install",
"chars": 4875,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ $USE_PERL != NO ]; then\n\n cat << END "
},
{
"path": "auto/lib/conf",
"chars": 1015,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ $USE_PCRE = YES -o $PCRE != NONE ]; then\n . auto/lib/"
},
{
"path": "auto/lib/geoip/conf",
"chars": 1968,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n ngx_feature=\"GeoIP library\"\n ngx_feature_name=\n ngx"
},
{
"path": "auto/lib/google-perftools/conf",
"chars": 1181,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n ngx_feature=\"Google perftools\"\n ngx_feature_name=\n "
},
{
"path": "auto/lib/jemalloc/conf",
"chars": 1470,
"preview": "\n# Copyright (C) 2010-2015 Alibaba Group Holding Limited\n\n\nif [ $JEMALLOC != NONE ]; then\n\n case \"$NGX_CC_NAME\" in\n\n "
},
{
"path": "auto/lib/jemalloc/make",
"chars": 417,
"preview": "\n# Copyright (C) 2010-2015 Alibaba Group Holding Limited\n\n\ndone=NO\n\n\ncase \"$NGX_PLATFORM\" in\n\n *)\n cat << END "
},
{
"path": "auto/lib/libatomic/conf",
"chars": 1090,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ $NGX_LIBATOMIC != YES ]; then\n\n have=NGX_HAVE_LIBATOM"
},
{
"path": "auto/lib/libatomic/make",
"chars": 364,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n cat << END >> "
},
{
"path": "auto/lib/libgd/conf",
"chars": 1893,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n ngx_feature=\"GD library\"\n ngx_feature_name=\n ngx_fe"
},
{
"path": "auto/lib/libxslt/conf",
"chars": 3796,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\n ngx_feature=\"libxslt\"\n ngx_feature_name=\n ngx_featu"
},
{
"path": "auto/lib/make",
"chars": 547,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ $PCRE != NONE -a $PCRE != NO -a $PCRE != YES ]; then\n "
},
{
"path": "auto/lib/openssl/conf",
"chars": 5277,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ $OPENSSL != NONE ]; then\n\n case \"$CC\" in\n\n cl "
},
{
"path": "auto/lib/openssl/make",
"chars": 1722,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\ncase \"$CC\" in\n\n cl)\n\n case \"$NGX_MACHINE\" in\n\n "
},
{
"path": "auto/lib/openssl/makefile.bcc",
"chars": 365,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nall:\n\tcd $(OPENSSL)\n\n\tperl Configure BC-32 no-shared --prefix"
},
{
"path": "auto/lib/openssl/makefile.msvc",
"chars": 417,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nall:\n\tcd $(OPENSSL)\n\n\tperl Configure $(OPENSSL_TARGET) no-sha"
},
{
"path": "auto/lib/pcre/conf",
"chars": 5834,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ $PCRE != NONE ]; then\n\n if [ -f $PCRE/src/pcre2.h.gen"
},
{
"path": "auto/lib/pcre/make",
"chars": 4466,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ $PCRE_LIBRARY = PCRE2 ]; then\n\n # PCRE2\n\n if [ $NG"
},
{
"path": "auto/lib/pcre/makefile.bcc",
"chars": 530,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nCFLAGS =\t-q -O2 -tWM -w-8004 $(CPU_OPT)\nPCREFLAGS =\t-DHAVE_CO"
},
{
"path": "auto/lib/pcre/makefile.msvc",
"chars": 474,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nCFLAGS =\t-O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)\nPCREFLAGS =\t-DHA"
},
{
"path": "auto/lib/pcre/makefile.owc",
"chars": 484,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nCFLAGS =\t-c -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)\nPCRE"
},
{
"path": "auto/lib/perl/conf",
"chars": 2505,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho \"checking for perl\"\n\n\nNGX_PERL_VER=`$NGX_PERL -v 2>&1 | "
},
{
"path": "auto/lib/perl/make",
"chars": 1548,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\ncat << END "
},
{
"path": "auto/lib/zlib/conf",
"chars": 2040,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ $ZLIB != NONE ]; then\n CORE_INCS=\"$CORE_INCS $ZLIB\"\n\n"
},
{
"path": "auto/lib/zlib/make",
"chars": 2525,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\ncase \"$NGX_CC_NAME\" in\n\n msvc)\n ngx_makefile=makefi"
},
{
"path": "auto/lib/zlib/makefile.bcc",
"chars": 382,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nCFLAGS = -q -O2 -tWM -w-8004 -w-8012 $(CPU_OPT)\n\nzlib.lib:\n\tc"
},
{
"path": "auto/lib/zlib/makefile.msvc",
"chars": 385,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nCFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)\n\nzlib.li"
},
{
"path": "auto/lib/zlib/makefile.owc",
"chars": 374,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nCFLAGS = -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)\n\nzlib.l"
},
{
"path": "auto/make",
"chars": 18489,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho \"creating $NGX_MAKEFILE\"\n\nmkdir -p $NGX_OBJS/src/core $N"
},
{
"path": "auto/module",
"chars": 3934,
"preview": "\n# Copyright (C) Ruslan Ermilov\n# Copyright (C) Nginx, Inc.\n\n\ncase $ngx_module_type in\n HTTP_*) ngx_var=HTTP ;;\n *"
},
{
"path": "auto/modules",
"chars": 40633,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nif [ $EVENT_SELECT = NO -a $EVENT_FOUND = NO ]; then\n EVEN"
},
{
"path": "auto/nohave",
"chars": 136,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\ncat << END >> $NGX_AUTO_CONFIG_H\n\n#ifndef $have\n#define $have"
},
{
"path": "auto/options",
"chars": 28417,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nhelp=no\n\nNGX_PREFIX=\nNGX_SBIN_PATH=\nNGX_MODULES_PATH=\nNGX_CON"
},
{
"path": "auto/os/conf",
"chars": 2676,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho \"checking for $NGX_SYSTEM specific features\"\n\ncase \"$NGX"
},
{
"path": "auto/os/darwin",
"chars": 3035,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nhave=NGX_DARWIN . auto/have_headers\n\nCORE_INCS=\"$UNIX_INCS\"\nC"
},
{
"path": "auto/os/freebsd",
"chars": 2298,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nhave=NGX_FREEBSD . auto/have_headers\n\nCORE_INCS=\"$UNIX_INCS\"\n"
},
{
"path": "auto/os/linux",
"chars": 6611,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nhave=NGX_LINUX . auto/have_headers\n\nCORE_INCS=\"$UNIX_INCS\"\nCO"
},
{
"path": "auto/os/solaris",
"chars": 1400,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nhave=NGX_SOLARIS . auto/have_headers\n\nCORE_INCS=\"$UNIX_INCS\"\n"
},
{
"path": "auto/os/win32",
"chars": 794,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nhave=NGX_WIN32 . auto/have_headers\n\nCORE_INCS=\"$WIN32_INCS\"\nC"
},
{
"path": "auto/sources",
"chars": 17648,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nCORE_MODULES=\"ngx_core_module ngx_errlog_module ngx_conf_modu"
},
{
"path": "auto/stubs",
"chars": 120,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nhave=NGX_SUPPRESS_WARN . auto/have\n\nhave=NGX_SMP . auto/have\n"
},
{
"path": "auto/summary",
"chars": 2275,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho\necho \"Configuration summary\"\n\n\nif [ $USE_THREADS = YES ]"
},
{
"path": "auto/threads",
"chars": 394,
"preview": "\n# Copyright (C) Nginx, Inc.\n\n\nif [ $USE_THREADS = YES ]; then\n\n if [ \"$NGX_PLATFORM\" = win32 ]; then\n cat << "
},
{
"path": "auto/types/sizeof",
"chars": 1423,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho $ngx_n \"checking for $ngx_type size ...$ngx_c\"\n\ncat << E"
},
{
"path": "auto/types/typedef",
"chars": 1681,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho $ngx_n \"checking for $ngx_type ...$ngx_c\"\n\ncat << END >>"
},
{
"path": "auto/types/uintptr_t",
"chars": 915,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\necho $ngx_n \"checking for uintptr_t ...$ngx_c\"\n\ncat << END >>"
},
{
"path": "auto/types/value",
"chars": 155,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\ncat << END >> $NGX_AUTO_CONFIG_H\n\n#ifndef $ngx_param\n#define "
},
{
"path": "auto/unix",
"chars": 27392,
"preview": "\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nNGX_USER=${NGX_USER:-nobody}\n\nif [ -z \"$NGX_GROUP\" ]; then\n "
},
{
"path": "conf/browsers",
"chars": 5202,
"preview": "# syntax:\n#\n# user_agent $variable_name {\n# default value;\n# greedy name;\n#\n# name [([+|-]ver"
},
{
"path": "conf/fastcgi.conf",
"chars": 1077,
"preview": "\nfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\nfastcgi_param QUERY_STRING $query_string;\n"
},
{
"path": "conf/fastcgi_params",
"chars": 1007,
"preview": "\nfastcgi_param QUERY_STRING $query_string;\nfastcgi_param REQUEST_METHOD $request_method;\nfastcgi_param CONT"
},
{
"path": "conf/koi-utf",
"chars": 2837,
"preview": "\n# This map is not a full koi8-r <> utf8 map: it does not contain\n# box-drawing and some other characters. Besides this"
},
{
"path": "conf/koi-win",
"chars": 2223,
"preview": "\ncharset_map koi8-r windows-1251 {\n\n 80 88 ; # euro\n\n 95 95 ; # bullet\n\n 9A A0 ; # \n\n 9E B7 ; # "
},
{
"path": "conf/mime.types",
"chars": 5349,
"preview": "\ntypes {\n text/html html htm shtml;\n text/css "
},
{
"path": "conf/nginx.conf",
"chars": 3509,
"preview": "\n#user nobody;\nworker_processes 1;\n\n#error_log logs/error.log;\n#error_log logs/error.log notice;\n#error_log logs/e"
},
{
"path": "conf/scgi_params",
"chars": 636,
"preview": "\nscgi_param REQUEST_METHOD $request_method;\nscgi_param REQUEST_URI $request_uri;\nscgi_param QUERY_STRING "
},
{
"path": "conf/uwsgi_params",
"chars": 664,
"preview": "\nuwsgi_param QUERY_STRING $query_string;\nuwsgi_param REQUEST_METHOD $request_method;\nuwsgi_param CONTENT_TY"
},
{
"path": "conf/win-utf",
"chars": 3610,
"preview": "\n# This map is not a full windows-1251 <> utf8 map: it does not\n# contain Serbian and Macedonian letters. If you need a"
},
{
"path": "configure",
"chars": 2502,
"preview": "#!/bin/sh\n\n# Copyright (C) Igor Sysoev\n# Copyright (C) Nginx, Inc.\n\n\nLC_ALL=C\nexport LC_ALL\n\n. auto/options\n. auto/init\n"
},
{
"path": "contrib/README",
"chars": 543,
"preview": "\ngeo2nginx.pl \t\tby Andrei Nigmatulin\n\n\tThe perl script to convert CSV geoip database ( free download\n\tat http://www.maxm"
},
{
"path": "contrib/dso.in",
"chars": 8767,
"preview": "DSO_CORE_DEPS=%%CORE_DEPS%%\nDSO_HTTP_DEPS=%%HTTP_DEPS%%\nDSO_ALL_INCS=%%ALL_INCS%%\n\n\nALL_INCS=\nCORE_INCS=\nHTTP_INCS=\nCORE"
},
{
"path": "contrib/geo2nginx.pl",
"chars": 1272,
"preview": "#!/usr/bin/perl -w\r\n\r\n# (c) Andrei Nigmatulin, 2005\r\n#\r\n# this script provided \"as is\", without any warranties. use it a"
},
{
"path": "contrib/stylechecker.py",
"chars": 2336,
"preview": "#!/usr/bin/python\n\n\"\"\"usage: python stylechecker.py /path/to/the/c/code\"\"\"\n\nimport os\nimport sys\nimport string\nimport re"
},
{
"path": "contrib/unicode2nginx/koi-utf",
"chars": 5991,
"preview": "charset_map koi8-r utf-8 {\n\n 80 E29480 ; #\tBOX DRAWINGS LIGHT HORIZONTAL\n 81 E29482 ; #\tBOX DRAWINGS LIGHT VER"
},
{
"path": "contrib/unicode2nginx/unicode-to-nginx.pl",
"chars": 1090,
"preview": "#!/usr/bin/perl -w\n\n# Convert unicode mappings to nginx configuration file format.\n\n# You may find useful mappings in va"
},
{
"path": "contrib/unicode2nginx/win-utf",
"chars": 5339,
"preview": "charset_map windows-1251 utf-8 {\n\n 80 D082 ; #CYRILLIC CAPITAL LETTER DJE\n 81 D083 ; #CYRILLIC CAPITAL LETTER "
},
{
"path": "contrib/vim/ftdetect/nginx.vim",
"chars": 198,
"preview": "au BufRead,BufNewFile *.nginx set ft=nginx\nau BufRead,BufNewFile */etc/nginx/* set ft=nginx\nau BufRead,BufNewFile */usr/"
},
{
"path": "contrib/vim/ftplugin/nginx.vim",
"chars": 29,
"preview": "setlocal commentstring=#\\ %s\n"
},
{
"path": "contrib/vim/indent/nginx.vim",
"chars": 250,
"preview": "if exists(\"b:did_indent\")\n finish\nendif\nlet b:did_indent = 1\n\nsetlocal indentexpr=\n\n\" cindent actually works for ngin"
},
{
"path": "contrib/vim/syntax/nginx.vim",
"chars": 130074,
"preview": "\" Vim syntax file\n\" Language: nginx.conf\n\nif exists(\"b:current_syntax\")\n finish\nend\n\n\" general syntax\n\nif has(\"patch-7."
},
{
"path": "docs/core.md",
"chars": 5011,
"preview": "# Core functionality\n\n\n## Directives\n\n### force_exit\n\nSyntax: **force_exit** exit_time;\n\nDefault: —\n\nContext: main\n\nforc"
},
{
"path": "docs/core_cn.md",
"chars": 3595,
"preview": "# Core functionality\n\n## 指令\n\n### force_exit\n\nSyntax: **force_exit** exit_time;\n\nDefault: —\n\nContext: main\n\n强制worker进程在接受"
},
{
"path": "docs/modules/TFS_RESTful_API.md",
"chars": 36193,
"preview": "#TFS RESTful API\n\nNOTE: <b>bold</b> words are fixed and reserved for API, <i>italics</i> words are input arguments.\n\n##R"
},
{
"path": "docs/modules/TFS_RESTful_API_cn.md",
"chars": 28231,
"preview": "#TFS RESTful API\n\n注:API语法描述中的<b>粗体</b>为API语法规定的保留关键字部分,<i>斜体</i>为用户输入部分\n\n##原生TFS\n\n###写文件\n\n####描述\n\n此API用于将数据保存成一个TFS文件并以J"
},
{
"path": "docs/modules/ngx_backtrace_module.md",
"chars": 836,
"preview": "Name\n====\n\n* backtrace module\n\nDescription\n===========\n\n* It can be used to dump backtrace of nginx in case a worker pro"
},
{
"path": "docs/modules/ngx_debug_pool.md",
"chars": 4111,
"preview": "ngx_debug_pool\n==============\n\nThis module provides access to information of memory usage for nginx/tengine memory pool."
},
{
"path": "docs/modules/ngx_debug_pool_cn.md",
"chars": 2963,
"preview": "ngx_debug_pool\n==============\n\n该模块可以提供nginx/tengine内存池占用内存的状态信息。\n\n示例\n====\n\n获取worker进程的信息\n--------------------\n\n```\n http"
},
{
"path": "docs/modules/ngx_dso_module.md",
"chars": 4830,
"preview": "Name\n====\n\n* Dynamic Module Loading Support (**DSO**)\n\nDescription\n===========\n\n* You can choose which functionalities t"
},
{
"path": "docs/modules/ngx_dso_module_cn.md",
"chars": 3395,
"preview": "模块名\n====\n\n* 动态加载模块\n\n描述\n===========\n\n* 这个模块主要是用来运行时动态加载模块,而不用每次都要重新编译Tengine.\n\n* 如果你想要编译官方模块为动态模块,你需要在configure的时候加上类似这样"
},
{
"path": "docs/modules/ngx_http_concat_cn.md",
"chars": 1967,
"preview": "# concat 模块\n\n## 介绍\n\n该模块类似于apache中的mod_concat模块,用于合并多个文件在一个响应报文中。\n\n请求参数需要用两个问号('??')例如:\n\n http://example.com/??style1."
},
{
"path": "docs/modules/ngx_http_core_module.md",
"chars": 2552,
"preview": "# Name #\n\n**ngx\\_http\\_core\\_module**\n\nTengine added some enhancements to this module. The new directives are listed bel"
},
{
"path": "docs/modules/ngx_http_core_module_cn.md",
"chars": 1528,
"preview": "# 模块名 #\n\n**ngx\\_http\\_core\\_module**\n\nTengine针对此模块进行了增强,下面列出了一些增加的指令。\n\n\n# 指令 #\n\n## client\\_body\\_buffers ##\n\nSyntax: **c"
},
{
"path": "docs/modules/ngx_http_dubbo_module.md",
"chars": 10179,
"preview": "ngx_http_dubbo_module\n====\n\nThis module provides support for the backend Dubbo support after Tengine version 2.3.2.\n[Apa"
},
{
"path": "docs/modules/ngx_http_dubbo_module_cn.md",
"chars": 6881,
"preview": "ngx_http_dubbo_module\n=================\n\n该模块提供对后端Dubbo服务体系对接的支持。(Tengine 2.3.2版本之后)\n[Apache Dubbo™](http://dubbo.apache."
},
{
"path": "docs/modules/ngx_http_limit_req_module.md",
"chars": 3179,
"preview": "Name\n====\n\n* limit_req module\n\nDescription\n===========\n\n* This is the enhanced version of nginx's limit_req module with "
},
{
"path": "docs/modules/ngx_http_proxy_connect_module.md",
"chars": 14797,
"preview": "name\n====\n\nThis module provides support for the CONNECT HTTP method after Tengine version 2.3.0. \nThis method is mainly"
},
{
"path": "docs/modules/ngx_http_proxy_connect_module_cn.md",
"chars": 11533,
"preview": "name\n====\n\n该模块提供对HTTP方法CONNECT的支持。(Tengine 2.3.0版本之后) \n该方法主要用于[SSL请求隧道](https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_"
},
{
"path": "docs/modules/ngx_http_reqstat_module.md",
"chars": 7504,
"preview": "Name\n====\n\n* ngx_http_reqstat_module\n\nDescription\n===========\n\nThis module will help monitor running status of Tengine.\n"
},
{
"path": "docs/modules/ngx_http_reqstat_module_cn.md",
"chars": 4643,
"preview": "模块名\n====\n\n* ngx_http_reqstat_module,监控模块\n\n描述\n===========\n\n* 这个模块计算定义的变量,根据变量值分别统计Tengine的运行状况。\n\n* 可以监视的运行状况有:连接数、请求数、各种响"
},
{
"path": "docs/modules/ngx_http_spdy_module.md",
"chars": 1828,
"preview": "# Name #\n\n**NOTE**\n1. This module has been updated to official nginx SPDY/3.1 module, the document is available here:\n "
},
{
"path": "docs/modules/ngx_http_spdy_module_cn.md",
"chars": 1305,
"preview": "# Name #\n\n**注意**\n1. Tengine-2.1.0以上版本的SPDY模块已经与官方nginx同步,只支持SPDY/3.1。\n 文档参考: http://nginx.org/en/docs/http/ngx_http_SP"
},
{
"path": "docs/modules/ngx_http_ssl_asynchronous_mode.md",
"chars": 1462,
"preview": "Name\n====\n\n* Nginx SSL/TLS asynchronous mode\n\nDescription\n===========\n\nProvide information about how to enable SSL/TLS a"
},
{
"path": "docs/modules/ngx_http_ssl_asynchronous_mode_cn.md",
"chars": 1080,
"preview": "名称\n====\n\n* Nginx SSL/TLS 异步模式\n\nDescription\n===========\n\n本文档提供关于如何在Nginx开启异步SSL/TLS支持的说明.\n* 异步SSL/TLS模式是OpenSSL 1.1.0版本之后"
},
{
"path": "docs/modules/ngx_http_sysguard.md",
"chars": 5435,
"preview": "# ngx_http_sysguard_module\n\n## Description\n\nThis module monitors memory usage (including the swap partition), load of CP"
},
{
"path": "docs/modules/ngx_http_sysguard_cn.md",
"chars": 3351,
"preview": "# sysguard 模块\n\n## 介绍\n\n该模块监控内存(含swap分区)、CPU和请求的响应时间,当某些监控指标达到设定的阈值时,跳转到指定的url。注意,目前该模块仅对系统支持sysinfo函数时,才支持基于load与内存信息的保护,"
},
{
"path": "docs/modules/ngx_http_tfs_module.md",
"chars": 5461,
"preview": "Name\n====\n\n* TFS module\n\nDescription\n===========\n\n* This module implements an asynchronous client of TFS(Taobao File Sys"
},
{
"path": "docs/modules/ngx_http_tfs_module_cn.md",
"chars": 4747,
"preview": "模块名\n====\n\n* nginx-tfs\n\n描述\n====\n\n* 这个模块实现了TFS的客户端,为TFS提供了RESTful API。TFS的全称是Taobao File System,是淘宝开源的一个分布式文件系统。\n\n编译安装\n==="
},
{
"path": "docs/modules/ngx_http_trim_filter_module.md",
"chars": 4239,
"preview": "# Ngx_http_trim_filter module\n\nThe ngx_http_trim_filter module is a filter that modifies a response by removing unnecess"
},
{
"path": "docs/modules/ngx_http_trim_filter_module_cn.md",
"chars": 4238,
"preview": "# trim 模块\n\n## 介绍\n\n该模块用于删除 html , 内嵌 javascript 和 css 中的注释以及重复的空白符。\n\n\n## 配置\n\n location / {\n trim on;\n tr"
},
{
"path": "docs/modules/ngx_http_upstream_check_module.md",
"chars": 6712,
"preview": "# Name #\n\n**ngx\\_http\\_upstream\\_check\\_module**\n\nAdd proactive health check for the upstream servers.\n\nThis module is n"
},
{
"path": "docs/modules/ngx_http_upstream_check_module_cn.md",
"chars": 5388,
"preview": "# Name #\n\n**ngx\\_http\\_upstream\\_check\\_module**\n\n该模块可以为Tengine提供主动式后端服务器健康检查的功能。\n\n该模块没有默认开启,它可以在配置编译选项的时候开启:`./configur"
},
{
"path": "docs/modules/ngx_http_upstream_consistent_hash_module.md",
"chars": 2185,
"preview": "Name\n====\n\n* consistent hash module\n\nDescription\n===========\n\n* This module provides consistent hashing algorithm for u"
},
{
"path": "docs/modules/ngx_http_upstream_consistent_hash_module_cn.md",
"chars": 1379,
"preview": "模块名\n====\n\n* 一致性hash模块\n\n描述\n===========\n\n* 这个模块提供一致性hash作为负载均衡算法。\n\n* 该模块通过使用客户端信息(如:$ip, $uri, $args等变量)作为参数,使用一致性hash算法将"
},
{
"path": "docs/modules/ngx_http_upstream_dynamic.md",
"chars": 1156,
"preview": "Name\n====\n\n* ngx_http_upstream_dynamic_module\n\nDescription\n===========\n\n* This module provides the functionality to reso"
},
{
"path": "docs/modules/ngx_http_upstream_dynamic_cn.md",
"chars": 696,
"preview": "模块名\n=====\n\n* ngx_http_upstream_dynamic_module\n\n介绍\n===\n\n* 此模块提供了在运行时动态解析upstream中server域名的功能\n\n配置示例\n=======\n\n upstream "
},
{
"path": "docs/modules/ngx_http_upstream_dyups_module.md",
"chars": 6727,
"preview": "## Description\n\nThis module can be used to update your upstream-list without reloadding Nginx.\n\n## Example\n\nfile: conf/n"
},
{
"path": "docs/modules/ngx_http_upstream_iwrr_module.md",
"chars": 1204,
"preview": "\n## Name\n\nngx_http_upstream_iwrr_module.\n\n\n## Introduction\n\nThe `IWRR` module is an efficient load balancing algorithm w"
},
{
"path": "docs/modules/ngx_http_upstream_iwrr_module_cn.md",
"chars": 866,
"preview": "\n## 名称 \n\nngx_http_upstream_iwrr_module.\n\n\n## 介绍\n\n`IWRR`模块是一个高效的负载均衡算法,与`VNSWRR`相同,它具有`O(1)`的时间复杂度,但是`IWRR`不需要执行渐进式初始化操作。"
},
{
"path": "docs/modules/ngx_http_upstream_session_sticky_module.md",
"chars": 3449,
"preview": "# Name\n**ngx\\_http\\_upstream\\_session\\_sticky\\_module**\n\nThis module is a load balancing module. It sticks the session b"
},
{
"path": "docs/modules/ngx_http_upstream_session_sticky_module_cn.md",
"chars": 2279,
"preview": "# Name 模块\n**ngx\\_http\\_upstream\\_session\\_sticky\\_module**\n\n该模块是一个负载均衡模块,通过cookie实现客户端与后端服务器的会话保持, 在一定条件下可以保证同一个客户端访问的都是"
},
{
"path": "docs/modules/ngx_http_upstream_vnswrr_module.md",
"chars": 2791,
"preview": "\n## Name\n\nngx_http_upstream_vnswrr_module.\n\n\n## Introduction\n\nThe `VNSWRR` module is an efficient load balancing algorit"
},
{
"path": "docs/modules/ngx_http_upstream_vnswrr_module_cn.md",
"chars": 2212,
"preview": "\n## 名称 \n\nngx_http_upstream_vnswrr_module.\n\n\n## 介绍\n\n`VNSWRR`模块是一个高效的负载均衡算法,同Nginx官方的加权轮询算法`SWRR`相比,`VNSWRR` 具备 平滑、散列和高性能特"
},
{
"path": "docs/modules/ngx_http_user_agent.md",
"chars": 2069,
"preview": "# Name #\n\n**ngx\\_http\\_user\\_agent\\_module**\n\nThis module can analyse the header of User-Agent.\n\nThis module is enabled "
},
{
"path": "docs/modules/ngx_limit_upstream.md",
"chars": 1692,
"preview": "# Name #\n\n**limit upstream retries**\n\nLimits retries for upstream servers (proxy, memcached, fastcgi, scgi, uwsgi).\nUsin"
},
{
"path": "docs/modules/ngx_limit_upstream_cn.md",
"chars": 1210,
"preview": "# Name #\n\n**limit upstream retries**\n\n限制每个请求对后端服务器访问的最大尝试次数,支持proxy、memcached、fastcgi、scgi和uwsgi模块。\n可以使用下面的指令开启访问次数进行限制。"
},
{
"path": "docs/modules/ngx_log_pipe.md",
"chars": 1595,
"preview": "# log pipe\nSyntax: **pipe:rollback** [logpath] **interval=**[interval] **baknum=**[baknum] **maxsize=**[maxsize] **adjus"
},
{
"path": "docs/modules/ngx_log_pipe_cn.md",
"chars": 1206,
"preview": "# log pipe\nSyntax: **pipe:rollback** [logpath] **interval=**[interval] **baknum=**[baknum] **maxsize=**[maxsize] **adjus"
},
{
"path": "docs/modules/ngx_procs_module.md",
"chars": 1359,
"preview": "# Name #\n## Proc Module ##\n\nprovides a mechanism to support standalone processes\n\n# Code Examples #\n\na daytime server mo"
},
{
"path": "docs/modules/ngx_procs_module_cn.md",
"chars": 1054,
"preview": "# 模块名 #\n## Proc 模块 ##\n\n提供一个让Tengine可以通过写不同模块启动独立进程的机制。\n\n# 代码实例 #\n\n一个时间回送服务器模块,它运行在一个独立的进程里。\n\nhttp://tengine.taobao.org/e"
},
{
"path": "html/50x.html",
"chars": 496,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n<title>Error</title>\n<style>\n body {\n width: 35em;\n margin: 0 auto;\n "
},
{
"path": "html/index.html",
"chars": 555,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n<title>Welcome to tengine!</title>\n<style>\n body {\n width: 35em;\n margin:"
},
{
"path": "man/nginx.8",
"chars": 5284,
"preview": ".\\\"\n.\\\" Copyright (C) 2010 Sergey A. Osokin\n.\\\" Copyright (C) Nginx, Inc.\n.\\\" All rights reserved.\n.\\\"\n.\\\" Redistributio"
},
{
"path": "modules/mod_common/config",
"chars": 516,
"preview": "\n\nNGX_ADDON_SRCS=\"$NGX_ADDON_SRCS \\\n $ngx_addon_dir/ngx_comm_string.c \\\n $ngx_addon_dir/ngx_comm_shm.c \\\n $ngx_"
},
{
"path": "modules/mod_common/ngx_comm_encrypt.c",
"chars": 432,
"preview": "\n/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#include \"ngx_comm_encrypt.h\"\n\n#include <ngx_md5.h>\n\nv"
},
{
"path": "modules/mod_common/ngx_comm_encrypt.h",
"chars": 470,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#ifndef NGX_COMM_ENCRYPT_H\n#define NGX_COMM_ENCRYPT_H\n\n"
},
{
"path": "modules/mod_common/ngx_comm_serialize.c",
"chars": 4295,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#include <ngx_comm_serialize.h>\n\nngx_inline ngx_int_t\nn"
},
{
"path": "modules/mod_common/ngx_comm_serialize.h",
"chars": 5050,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#ifndef NGX_COMM_SERIALIZE_H\n#define NGX_COMM_SERIALIZE"
},
{
"path": "modules/mod_common/ngx_comm_shm.c",
"chars": 6127,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#include \"ngx_comm_shm.h\"\n\n\nngx_shm_pool_t * ngx_shm_cr"
},
{
"path": "modules/mod_common/ngx_comm_shm.h",
"chars": 7210,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#ifndef NGX_COMM_SHM_H\n#define NGX_COMM_SHM_H\n\n#include"
},
{
"path": "modules/mod_common/ngx_comm_string.c",
"chars": 6084,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#include \"ngx_comm_string.h\"\n\n\nngx_int_t\ncomm_split_str"
},
{
"path": "modules/mod_common/ngx_comm_string.h",
"chars": 6187,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#ifndef NGX_COMM_STRING_H\n#define NGX_COMM_STRING_H\n\n#i"
},
{
"path": "modules/mod_config/config",
"chars": 615,
"preview": "if [ \"$NGX_PLATFORM\" != win32 ]; then\n ngx_feature=\"compiler structure-packing pragma\"\n ngx_feature_name=\"NGX_HAVE"
},
{
"path": "modules/mod_dubbo/README.md",
"chars": 3680,
"preview": "# Quick Start\r\n\r\n## Install Tengine\r\n\r\n### Get Tengine\r\n```\r\ngit clone https://github.com/alibaba/tengine.git\r\n```\r\n### "
},
{
"path": "modules/mod_dubbo/config",
"chars": 1057,
"preview": "ngx_addon_name=ngx_http_dubbo_module\n\nHTTP_DUBBO_DEPS=\" \\\n $ngx_addon_dir/ngx_http_dubbo_module.h \\\n $ngx_addon_di"
},
{
"path": "modules/mod_dubbo/hessian2/hessian2_ext.cc",
"chars": 12461,
"preview": "#include \"hessian2_ext.h\"\n#include \"utils.h\"\n#include \"hessian2_input.h\"\n#include \"hessian2_output.h\"\n#include <memory>\n"
},
{
"path": "modules/mod_dubbo/hessian2/hessian2_ext.h",
"chars": 739,
"preview": "#ifndef _HESSIAN2_EXTENSION_H_\n#define _HESSIAN2_EXTENSION_H_\n\n#include \"objects.h\"\n#include <string>\n\nnamespace hessian"
},
{
"path": "modules/mod_dubbo/hessian2/hessian2_input.cc",
"chars": 42747,
"preview": "#include \"hessian2_input.h\"\n#include \"objects.h\"\n#include \"hessian2_ext.h\"\n#include \"utils.h\"\n#include <map>\n#include <s"
},
{
"path": "modules/mod_dubbo/hessian2/hessian2_input.h",
"chars": 3958,
"preview": "#ifndef _HESSIAN2_INPUT_H_\n#define _HESSIAN2_INPUT_H_\n\n#include \"exceptions.h\"\n#include \"utils.h\"\n#include <stdint.h>\n#i"
},
{
"path": "modules/mod_dubbo/hessian2/hessian2_output.cc",
"chars": 7338,
"preview": "#include \"hessian2_output.h\"\n#include \"hessian2_ext.h\"\n#include \"objects.h\"\n#include \"utils.h\"\n\nnamespace hessian {\n\nusi"
},
{
"path": "modules/mod_dubbo/hessian2/hessian2_output.h",
"chars": 3696,
"preview": "#ifndef _HESSIAN2_OUTPUT_H_\n#define _HESSIAN2_OUTPUT_H_\n\n#include \"utils.h\"\n#include <stdint.h>\n#include <string>\n#inclu"
},
{
"path": "modules/mod_dubbo/ngx_dubbo.c",
"chars": 13965,
"preview": "\n/*\n * Copyright (C) Mengqi Wu (Pull)\n * Copyright (C) 2018-2019 Alibaba Group Holding Limited\n */\n\n#include <ngx_config"
},
{
"path": "modules/mod_dubbo/ngx_dubbo.h",
"chars": 4004,
"preview": "\n/*\n * Copyright (C) Mengqi Wu (Pull)\n * Copyright (C) 2017-2019 Alibaba Group Holding Limited\n */\n\n#ifndef _NGX_DUBBO_H"
},
{
"path": "modules/mod_dubbo/ngx_dubbo_util.cpp",
"chars": 6522,
"preview": "\n/*\n * Copyright (C) Mengqi Wu (Pull)\n * Copyright (C) 2017-2019 Alibaba Group Holding Limited\n */\n\n#include <string>\n#i"
},
{
"path": "modules/mod_dubbo/ngx_http_dubbo_module.c",
"chars": 47953,
"preview": "\n/*\n * Copyright (C) Mengqi Wu (Pull)\n * Copyright (C) 2017-2019 Alibaba Group Holding Limited\n */\n\n#include <ngx_config"
},
{
"path": "modules/mod_dubbo/ngx_http_dubbo_module.h",
"chars": 986,
"preview": "\n/*\n * Copyright (C) Mengqi Wu (Pull)\n * Copyright (C) 2017-2019 Alibaba Group Holding Limited\n */\n\n\n#ifndef _NGX_HTTP_D"
},
{
"path": "modules/mod_dubbo/utils/exceptions.h",
"chars": 842,
"preview": "#ifndef _HESSIAN_EXCEPTIONS_H_\n#define _HESSIAN_EXCEPTIONS_H_\n\n#include <string>\n\nnamespace hessian {\n\nclass Object;\n\ncl"
},
{
"path": "modules/mod_dubbo/utils/objects.cc",
"chars": 13204,
"preview": "#include \"objects.h\"\n#include \"utils.h\"\n#include \"hessian2_output.h\"\n#include <sstream>\n\n/*\n * Object implementation\n * "
},
{
"path": "modules/mod_dubbo/utils/objects.h",
"chars": 16753,
"preview": "#ifndef _HESSIAN_OBJECTS_H_\n#define _HESSIAN_OBJECTS_H_\n\n#include \"exceptions.h\"\n#include <stdint.h>\n#include <string>\n#"
},
{
"path": "modules/mod_dubbo/utils/utils.cc",
"chars": 3012,
"preview": "#ifndef __STDC_FORMAT_MACROS\n#define __STDC_FORMAT_MACROS\n#endif\n\n#include \"utils.h\"\n#include <string>\n#include <sstream"
},
{
"path": "modules/mod_dubbo/utils/utils.h",
"chars": 2370,
"preview": "#ifndef DUBBO_UTILS_H\n#define DUBBO_UTILS_H\n\n#ifndef __STDC_LIMIT_MACROS\n#define __STDC_LIMIT_MACROS\n#endif\n\n#include <s"
},
{
"path": "modules/mod_strategy/config",
"chars": 353,
"preview": "\n\n# proc for strategy sync\nPROCS_MODULES=\"$PROCS_MODULES ngx_proc_strategy_module\"\nNGX_ADDON_SRCS=\"$NGX_ADDON_SRCS $ngx_"
},
{
"path": "modules/mod_strategy/ngx_http_strategy_module.c",
"chars": 5220,
"preview": "\n /*\n * Copyright (C) 2010-2019 Alibaba Group Holding Limited\n */\n\n\n#include <ngx_config.h>\n#include <ngx_core.h>\n#inclu"
},
{
"path": "modules/mod_strategy/ngx_proc_strategy_module.c",
"chars": 16255,
"preview": "\n /*\n * Copyright (C) 2010-2019 Alibaba Group Holding Limited\n */\n\n\n#include \"ngx_proc_strategy_module.h\"\n\nstatic ngx_in"
},
{
"path": "modules/mod_strategy/ngx_proc_strategy_module.h",
"chars": 4646,
"preview": "\n /*\n * Copyright (C) 2010-2019 Alibaba Group Holding Limited\n */\n\n\n#ifndef NGX_PROC_STRATEGY_MODULE_H\n#define NGX_PROC_"
},
{
"path": "modules/mod_xudp/config",
"chars": 1302,
"preview": "ngx_addon_name=ngx_xudp_module\n\nngx_feature=\"xudp\"\nngx_feature_name=\"T_NGX_HAVE_XUDP\"\nngx_feature_run=no\nngx_feature_inc"
},
{
"path": "modules/mod_xudp/ngx_xudp.c",
"chars": 2964,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#include <ngx_xudp.h>\n#include <ngx_xudp_internal.h>\n#i"
},
{
"path": "modules/mod_xudp/ngx_xudp.h",
"chars": 1163,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#ifndef _NGX_XUDP_H_INCLUDED_\n#define _NGX_XUDP_H_INCLU"
},
{
"path": "modules/mod_xudp/ngx_xudp_inc.h",
"chars": 899,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#ifndef _NGX_XUDP_INC_H_INCLUDED_\n#define _NGX_XUDP_INC"
},
{
"path": "modules/mod_xudp/ngx_xudp_internal.h",
"chars": 1305,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#ifndef _NGX_XUDP_INTERNAL_H_INCLUDED_\n#define _NGX_XUD"
},
{
"path": "modules/mod_xudp/ngx_xudp_module.c",
"chars": 35946,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#include <ngx_xudp_module.h>\n#include <ngx_xudp_interna"
},
{
"path": "modules/mod_xudp/ngx_xudp_module.h",
"chars": 935,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#ifndef _NGX_XUDP_MODULE_H_INCLUDED_\n#define _NGX_XUDP_"
},
{
"path": "modules/mod_xudp/xquic-xdp/dispatch_xquic.c",
"chars": 3641,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n * SPDX-License-Identifier: GPL-2.0\n */\n\n#include \"kern_core"
},
{
"path": "modules/mod_xudp/xquic-xdp/readme.md",
"chars": 239,
"preview": "## config\n```\nmake config root=/path/to/libxudp\n```\n\n## build\n```\nmake\n```\n\n## how to use\n\nsee test.c. this from libxudp"
},
{
"path": "modules/mod_xudp/xquic-xdp/test.c",
"chars": 3797,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#include \"xudp.h\"\n#include <sys/epoll.h>\n#include <mall"
},
{
"path": "modules/mod_xudp/xquic-xdp/xquic_xdp.h",
"chars": 526,
"preview": "/*\n * Copyright (C) 2020-2023 Alibaba Group Holding Limited\n */\n\n#ifndef __XQUIC_H__\n#define __XQUIC_H__\n\nstruct kern_x"
},
{
"path": "modules/ngx_backtrace_module/config",
"chars": 638,
"preview": "ngx_addon_name=ngx_backtrace_module\nHTTP_MODULES=\"$HTTP_MODULES ngx_backtrace_module\"\nNGX_ADDON_SRCS=\"$NGX_ADDON_SRCS $n"
}
]
// ... and 1464 more files (download for full content)
About this extraction
This page contains the full source code of the alibaba/tengine GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1664 files (16.1 MB), approximately 4.0M tokens, and a symbol index with 5319 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.