Merge branch 'nginx' (nginx-1.11.11).
Change-Id: I565537a83127ce2106cd829a8f7c0e2f961f3ccf
Signed-off-by: Piotr Sikora <piotrsikora@google.com>
diff --git a/.hgtags b/.hgtags
index ef1868f..e8e3a96 100644
--- a/.hgtags
+++ b/.hgtags
@@ -409,3 +409,4 @@
4591da489a30f790def29bc5987f43409b503cae release-1.11.8
20a45c768e5ed26b740679d0e22045c98727c3cc release-1.11.9
1ad0999a7ded3d4fb01c7acf8ff57c80b643da7e release-1.11.10
+d8b321a876d6254e9e98795e3b194ef053290354 release-1.11.11
diff --git a/BUILD b/BUILD
index 81e6982..8c3f51b 100644
--- a/BUILD
+++ b/BUILD
@@ -1468,5 +1468,5 @@
preinst = "@nginx_pkgoss//:debian_preinst",
prerm = "@nginx_pkgoss//:debian_prerm",
section = "httpd",
- version = "1.11.10",
+ version = "1.11.11",
)
diff --git a/auto/modules b/auto/modules
index 7b4f2fe..cf95e30 100644
--- a/auto/modules
+++ b/auto/modules
@@ -56,832 +56,829 @@
fi
-HTTP_MODULES=
-HTTP_DEPS=
-HTTP_INCS=
+if [ $HTTP = YES ]; then
+ HTTP_MODULES=
+ HTTP_DEPS=
+ HTTP_INCS=
-ngx_module_type=HTTP
+ ngx_module_type=HTTP
-if :; then
- ngx_module_name="ngx_http_module \
- ngx_http_core_module \
- ngx_http_log_module \
- ngx_http_upstream_module"
- ngx_module_incs="src/http src/http/modules"
- ngx_module_deps="src/http/ngx_http.h \
- src/http/ngx_http_request.h \
- src/http/ngx_http_config.h \
- src/http/ngx_http_core_module.h \
- src/http/ngx_http_cache.h \
- src/http/ngx_http_variables.h \
- src/http/ngx_http_script.h \
- src/http/ngx_http_upstream.h \
- src/http/ngx_http_upstream_round_robin.h"
- ngx_module_srcs="src/http/ngx_http.c \
- src/http/ngx_http_core_module.c \
- src/http/ngx_http_special_response.c \
- src/http/ngx_http_request.c \
- src/http/ngx_http_parse.c \
- src/http/modules/ngx_http_log_module.c \
- src/http/ngx_http_request_body.c \
- src/http/ngx_http_variables.c \
- src/http/ngx_http_script.c \
- src/http/ngx_http_upstream.c \
- src/http/ngx_http_upstream_round_robin.c"
- ngx_module_libs=
- ngx_module_link=YES
+ if :; then
+ ngx_module_name="ngx_http_module \
+ ngx_http_core_module \
+ ngx_http_log_module \
+ ngx_http_upstream_module"
+ ngx_module_incs="src/http src/http/modules"
+ ngx_module_deps="src/http/ngx_http.h \
+ src/http/ngx_http_request.h \
+ src/http/ngx_http_config.h \
+ src/http/ngx_http_core_module.h \
+ src/http/ngx_http_cache.h \
+ src/http/ngx_http_variables.h \
+ src/http/ngx_http_script.h \
+ src/http/ngx_http_upstream.h \
+ src/http/ngx_http_upstream_round_robin.h"
+ ngx_module_srcs="src/http/ngx_http.c \
+ src/http/ngx_http_core_module.c \
+ src/http/ngx_http_special_response.c \
+ src/http/ngx_http_request.c \
+ src/http/ngx_http_parse.c \
+ src/http/modules/ngx_http_log_module.c \
+ src/http/ngx_http_request_body.c \
+ src/http/ngx_http_variables.c \
+ src/http/ngx_http_script.c \
+ src/http/ngx_http_upstream.c \
+ src/http/ngx_http_upstream_round_robin.c"
+ ngx_module_libs=
+ ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP != YES ]; then
- have=NGX_CRYPT . $NGX_AUTO/nohave
- CRYPT_LIB=
-fi
+ if [ $HTTP_CACHE = YES ]; then
+ have=NGX_HTTP_CACHE . $NGX_AUTO/have
+ HTTP_SRCS="$HTTP_SRCS $HTTP_FILE_CACHE_SRCS"
+ fi
-if [ $HTTP_CACHE = YES ]; then
- have=NGX_HTTP_CACHE . $NGX_AUTO/have
- HTTP_SRCS="$HTTP_SRCS $HTTP_FILE_CACHE_SRCS"
-fi
+ if [ $HTTP_SSI = YES ]; then
+ HTTP_POSTPONE=YES
+ fi
-if [ $HTTP_SSI = YES ]; then
- HTTP_POSTPONE=YES
-fi
+ if [ $HTTP_SLICE = YES ]; then
+ HTTP_POSTPONE=YES
+ fi
-if [ $HTTP_SLICE = YES ]; then
- HTTP_POSTPONE=YES
-fi
+ if [ $HTTP_ADDITION = YES ]; then
+ HTTP_POSTPONE=YES
+ fi
-if [ $HTTP_ADDITION = YES ]; then
- HTTP_POSTPONE=YES
-fi
+ # the module order is important
+ # ngx_http_static_module
+ # ngx_http_gzip_static_module
+ # ngx_http_dav_module
+ # ngx_http_autoindex_module
+ # ngx_http_index_module
+ # ngx_http_random_index_module
+ #
+ # ngx_http_access_module
+ # ngx_http_realip_module
+ #
+ #
+ # the filter order is important
+ # ngx_http_write_filter
+ # ngx_http_header_filter
+ # ngx_http_chunked_filter
+ # ngx_http_v2_filter
+ # ngx_http_range_header_filter
+ # ngx_http_gzip_filter
+ # ngx_http_postpone_filter
+ # ngx_http_ssi_filter
+ # ngx_http_charset_filter
+ # ngx_http_xslt_filter
+ # ngx_http_image_filter
+ # ngx_http_sub_filter
+ # ngx_http_addition_filter
+ # ngx_http_gunzip_filter
+ # ngx_http_userid_filter
+ # ngx_http_headers_filter
+ # ngx_http_copy_filter
+ # ngx_http_range_body_filter
+ # ngx_http_not_modified_filter
+ # ngx_http_slice_filter
+ ngx_module_type=HTTP_FILTER
+ HTTP_FILTER_MODULES=
-# the module order is important
-# ngx_http_static_module
-# ngx_http_gzip_static_module
-# ngx_http_dav_module
-# ngx_http_autoindex_module
-# ngx_http_index_module
-# ngx_http_random_index_module
-#
-# ngx_http_access_module
-# ngx_http_realip_module
-#
-#
-# the filter order is important
-# ngx_http_write_filter
-# ngx_http_header_filter
-# ngx_http_chunked_filter
-# ngx_http_v2_filter
-# ngx_http_range_header_filter
-# ngx_http_gzip_filter
-# ngx_http_postpone_filter
-# ngx_http_ssi_filter
-# ngx_http_charset_filter
-# ngx_http_xslt_filter
-# ngx_http_image_filter
-# ngx_http_sub_filter
-# ngx_http_addition_filter
-# ngx_http_gunzip_filter
-# ngx_http_userid_filter
-# ngx_http_headers_filter
-# ngx_http_copy_filter
-# ngx_http_range_body_filter
-# ngx_http_not_modified_filter
-# ngx_http_slice_filter
+ ngx_module_order="ngx_http_static_module \
+ ngx_http_gzip_static_module \
+ ngx_http_dav_module \
+ ngx_http_autoindex_module \
+ ngx_http_index_module \
+ ngx_http_random_index_module \
+ ngx_http_access_module \
+ ngx_http_realip_module \
+ ngx_http_write_filter_module \
+ ngx_http_header_filter_module \
+ ngx_http_chunked_filter_module \
+ ngx_http_v2_filter_module \
+ ngx_http_range_header_filter_module \
+ ngx_http_gzip_filter_module \
+ ngx_http_postpone_filter_module \
+ ngx_http_ssi_filter_module \
+ ngx_http_charset_filter_module \
+ ngx_http_xslt_filter_module \
+ ngx_http_image_filter_module \
+ ngx_http_sub_filter_module \
+ ngx_http_addition_filter_module \
+ ngx_http_gunzip_filter_module \
+ ngx_http_userid_filter_module \
+ ngx_http_headers_filter_module \
+ ngx_http_copy_filter_module \
+ ngx_http_range_body_filter_module \
+ ngx_http_not_modified_filter_module \
+ ngx_http_slice_filter_module"
-ngx_module_type=HTTP_FILTER
-HTTP_FILTER_MODULES=
+ if :; then
+ ngx_module_name=ngx_http_write_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/ngx_http_write_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=YES
-ngx_module_order="ngx_http_static_module \
- ngx_http_gzip_static_module \
- ngx_http_dav_module \
- ngx_http_autoindex_module \
- ngx_http_index_module \
- ngx_http_random_index_module \
- ngx_http_access_module \
- ngx_http_realip_module \
- ngx_http_write_filter_module \
- ngx_http_header_filter_module \
- ngx_http_chunked_filter_module \
- ngx_http_v2_filter_module \
- ngx_http_range_header_filter_module \
- ngx_http_gzip_filter_module \
- ngx_http_postpone_filter_module \
- ngx_http_ssi_filter_module \
- ngx_http_charset_filter_module \
- ngx_http_xslt_filter_module \
- ngx_http_image_filter_module \
- ngx_http_sub_filter_module \
- ngx_http_addition_filter_module \
- ngx_http_gunzip_filter_module \
- ngx_http_userid_filter_module \
- ngx_http_headers_filter_module \
- ngx_http_copy_filter_module \
- ngx_http_range_body_filter_module \
- ngx_http_not_modified_filter_module \
- ngx_http_slice_filter_module"
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_write_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/ngx_http_write_filter_module.c
- ngx_module_libs=
- ngx_module_link=YES
+ if :; then
+ ngx_module_name=ngx_http_header_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/ngx_http_header_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_header_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/ngx_http_header_filter_module.c
- ngx_module_libs=
- ngx_module_link=YES
+ if :; then
+ ngx_module_name=ngx_http_chunked_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_chunked_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_chunked_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_chunked_filter_module.c
- ngx_module_libs=
- ngx_module_link=YES
+ if [ $HTTP_V2 = YES ]; then
+ ngx_module_name=ngx_http_v2_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/v2/ngx_http_v2_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_V2
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_V2 = YES ]; then
- ngx_module_name=ngx_http_v2_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/v2/ngx_http_v2_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_V2
+ if :; then
+ ngx_module_name=ngx_http_range_header_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_range_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_range_header_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_range_filter_module.c
- ngx_module_libs=
- ngx_module_link=YES
+ if [ $HTTP_GZIP = YES ]; then
+ have=NGX_HTTP_GZIP . $NGX_AUTO/have
+ USE_ZLIB=YES
- . $NGX_AUTO/module
-fi
+ ngx_module_name=ngx_http_gzip_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_gzip_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_GZIP
-if [ $HTTP_GZIP = YES ]; then
- have=NGX_HTTP_GZIP . $NGX_AUTO/have
- USE_ZLIB=YES
+ . $NGX_AUTO/module
+ fi
- ngx_module_name=ngx_http_gzip_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_gzip_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_GZIP
+ if [ $HTTP_POSTPONE = YES ]; then
+ ngx_module_name=ngx_http_postpone_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/ngx_http_postpone_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_POSTPONE
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_POSTPONE = YES ]; then
- ngx_module_name=ngx_http_postpone_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/ngx_http_postpone_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_POSTPONE
+ if [ $HTTP_SSI = YES ]; then
+ have=NGX_HTTP_SSI . $NGX_AUTO/have
- . $NGX_AUTO/module
-fi
+ ngx_module_name=ngx_http_ssi_filter_module
+ ngx_module_incs=
+ ngx_module_deps=src/http/modules/ngx_http_ssi_filter_module.h
+ ngx_module_srcs=src/http/modules/ngx_http_ssi_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_SSI
-if [ $HTTP_SSI = YES ]; then
- have=NGX_HTTP_SSI . $NGX_AUTO/have
+ . $NGX_AUTO/module
+ fi
- ngx_module_name=ngx_http_ssi_filter_module
- ngx_module_incs=
- ngx_module_deps=src/http/modules/ngx_http_ssi_filter_module.h
- ngx_module_srcs=src/http/modules/ngx_http_ssi_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_SSI
+ if [ $HTTP_CHARSET = YES ]; then
+ ngx_module_name=ngx_http_charset_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_charset_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_CHARSET
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_CHARSET = YES ]; then
- ngx_module_name=ngx_http_charset_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_charset_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_CHARSET
+ if [ $HTTP_XSLT != NO ]; then
+ ngx_module_name=ngx_http_xslt_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_xslt_filter_module.c
+ ngx_module_libs=LIBXSLT
+ ngx_module_link=$HTTP_XSLT
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_XSLT != NO ]; then
- ngx_module_name=ngx_http_xslt_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_xslt_filter_module.c
- ngx_module_libs=LIBXSLT
- ngx_module_link=$HTTP_XSLT
+ if [ $HTTP_IMAGE_FILTER != NO ]; then
+ ngx_module_name=ngx_http_image_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_image_filter_module.c
+ ngx_module_libs=LIBGD
+ ngx_module_link=$HTTP_IMAGE_FILTER
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_IMAGE_FILTER != NO ]; then
- ngx_module_name=ngx_http_image_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_image_filter_module.c
- ngx_module_libs=LIBGD
- ngx_module_link=$HTTP_IMAGE_FILTER
+ if [ $HTTP_SUB = YES ]; then
+ ngx_module_name=ngx_http_sub_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_sub_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_SUB
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_SUB = YES ]; then
- ngx_module_name=ngx_http_sub_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_sub_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_SUB
+ if [ $HTTP_ADDITION = YES ]; then
+ ngx_module_name=ngx_http_addition_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_addition_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_ADDITION
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_ADDITION = YES ]; then
- ngx_module_name=ngx_http_addition_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_addition_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_ADDITION
+ if [ $HTTP_GUNZIP = YES ]; then
+ have=NGX_HTTP_GZIP . $NGX_AUTO/have
+ USE_ZLIB=YES
- . $NGX_AUTO/module
-fi
+ ngx_module_name=ngx_http_gunzip_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_gunzip_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_GUNZIP
-if [ $HTTP_GUNZIP = YES ]; then
- have=NGX_HTTP_GZIP . $NGX_AUTO/have
- USE_ZLIB=YES
+ . $NGX_AUTO/module
+ fi
- ngx_module_name=ngx_http_gunzip_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_gunzip_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_GUNZIP
+ if [ $HTTP_USERID = YES ]; then
+ ngx_module_name=ngx_http_userid_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_userid_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_USERID
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_USERID = YES ]; then
- ngx_module_name=ngx_http_userid_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_userid_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_USERID
+ if :; then
+ ngx_module_name=ngx_http_headers_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_headers_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_headers_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_headers_filter_module.c
- ngx_module_libs=
- ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ ngx_module_type=HTTP_INIT_FILTER
+ HTTP_INIT_FILTER_MODULES=
+ if :; then
+ ngx_module_name=ngx_http_copy_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/ngx_http_copy_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=YES
-ngx_module_type=HTTP_INIT_FILTER
-HTTP_INIT_FILTER_MODULES=
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_copy_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/ngx_http_copy_filter_module.c
- ngx_module_libs=
- ngx_module_link=YES
+ if :; then
+ ngx_module_name=ngx_http_range_body_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=
+ ngx_module_libs=
+ ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_range_body_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=
- ngx_module_libs=
- ngx_module_link=YES
+ if :; then
+ ngx_module_name=ngx_http_not_modified_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_not_modified_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_not_modified_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_not_modified_filter_module.c
- ngx_module_libs=
- ngx_module_link=YES
+ if [ $HTTP_SLICE = YES ]; then
+ ngx_module_name=ngx_http_slice_filter_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_slice_filter_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_SLICE
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_SLICE = YES ]; then
- ngx_module_name=ngx_http_slice_filter_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_slice_filter_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_SLICE
- . $NGX_AUTO/module
-fi
+ ngx_module_type=HTTP
+ if [ $HTTP_V2 = YES ]; then
+ have=NGX_HTTP_V2 . $NGX_AUTO/have
-ngx_module_type=HTTP
+ ngx_module_name=ngx_http_v2_module
+ ngx_module_incs=src/http/v2
+ ngx_module_deps="src/http/v2/ngx_http_v2.h \
+ src/http/v2/ngx_http_v2_module.h"
+ ngx_module_srcs="src/http/v2/ngx_http_v2.c \
+ src/http/v2/ngx_http_v2_table.c \
+ src/http/v2/ngx_http_v2_huff_decode.c \
+ src/http/v2/ngx_http_v2_huff_encode.c \
+ src/http/v2/ngx_http_v2_module.c"
+ ngx_module_libs=
+ ngx_module_link=$HTTP_V2
-if [ $HTTP_V2 = YES ]; then
- have=NGX_HTTP_V2 . $NGX_AUTO/have
+ . $NGX_AUTO/module
+ fi
- ngx_module_name=ngx_http_v2_module
- ngx_module_incs=src/http/v2
- ngx_module_deps="src/http/v2/ngx_http_v2.h src/http/v2/ngx_http_v2_module.h"
- ngx_module_srcs="src/http/v2/ngx_http_v2.c \
- src/http/v2/ngx_http_v2_table.c \
- src/http/v2/ngx_http_v2_huff_decode.c \
- src/http/v2/ngx_http_v2_huff_encode.c \
- src/http/v2/ngx_http_v2_module.c"
- ngx_module_libs=
- ngx_module_link=$HTTP_V2
+ if :; then
+ ngx_module_name=ngx_http_static_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_static_module.c
+ ngx_module_libs=
+ ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_static_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_static_module.c
- ngx_module_libs=
- ngx_module_link=YES
+ if [ $HTTP_GZIP_STATIC = YES ]; then
+ have=NGX_HTTP_GZIP . $NGX_AUTO/have
- . $NGX_AUTO/module
-fi
+ ngx_module_name=ngx_http_gzip_static_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_gzip_static_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_GZIP_STATIC
-if [ $HTTP_GZIP_STATIC = YES ]; then
- have=NGX_HTTP_GZIP . $NGX_AUTO/have
+ . $NGX_AUTO/module
+ fi
- ngx_module_name=ngx_http_gzip_static_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_gzip_static_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_GZIP_STATIC
+ if [ $HTTP_DAV = YES ]; then
+ have=NGX_HTTP_DAV . $NGX_AUTO/have
- . $NGX_AUTO/module
-fi
-
-if [ $HTTP_DAV = YES ]; then
- have=NGX_HTTP_DAV . $NGX_AUTO/have
-
- ngx_module_name=ngx_http_dav_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_dav_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_DAV
+ ngx_module_name=ngx_http_dav_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_dav_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_DAV
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_AUTOINDEX = YES ]; then
- ngx_module_name=ngx_http_autoindex_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_autoindex_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_AUTOINDEX
+ if [ $HTTP_AUTOINDEX = YES ]; then
+ ngx_module_name=ngx_http_autoindex_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_autoindex_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_AUTOINDEX
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if :; then
- ngx_module_name=ngx_http_index_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_index_module.c
- ngx_module_libs=
- ngx_module_link=YES
+ if :; then
+ ngx_module_name=ngx_http_index_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_index_module.c
+ ngx_module_libs=
+ ngx_module_link=YES
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_RANDOM_INDEX = YES ]; then
- ngx_module_name=ngx_http_random_index_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_random_index_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_RANDOM_INDEX
+ if [ $HTTP_RANDOM_INDEX = YES ]; then
+ ngx_module_name=ngx_http_random_index_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_random_index_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_RANDOM_INDEX
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_AUTH_REQUEST = YES ]; then
- ngx_module_name=ngx_http_auth_request_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_auth_request_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_AUTH_REQUEST
+ if [ $HTTP_AUTH_REQUEST = YES ]; then
+ ngx_module_name=ngx_http_auth_request_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_auth_request_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_AUTH_REQUEST
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_AUTH_BASIC = YES ]; then
- have=NGX_CRYPT . $NGX_AUTO/have
+ if [ $HTTP_AUTH_BASIC = YES ]; then
+ have=NGX_CRYPT . $NGX_AUTO/have
- ngx_module_name=ngx_http_auth_basic_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_auth_basic_module.c
- ngx_module_libs=$CRYPT_LIB
- ngx_module_link=$HTTP_AUTH_BASIC
+ ngx_module_name=ngx_http_auth_basic_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_auth_basic_module.c
+ ngx_module_libs=$CRYPT_LIB
+ ngx_module_link=$HTTP_AUTH_BASIC
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_ACCESS = YES ]; then
- ngx_module_name=ngx_http_access_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_access_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_ACCESS
+ if [ $HTTP_ACCESS = YES ]; then
+ ngx_module_name=ngx_http_access_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_access_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_ACCESS
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_LIMIT_CONN = YES ]; then
- ngx_module_name=ngx_http_limit_conn_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_limit_conn_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_LIMIT_CONN
+ if [ $HTTP_LIMIT_CONN = YES ]; then
+ ngx_module_name=ngx_http_limit_conn_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_limit_conn_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_LIMIT_CONN
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_LIMIT_REQ = YES ]; then
- ngx_module_name=ngx_http_limit_req_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_limit_req_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_LIMIT_REQ
+ if [ $HTTP_LIMIT_REQ = YES ]; then
+ ngx_module_name=ngx_http_limit_req_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_limit_req_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_LIMIT_REQ
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_REALIP = YES ]; then
- have=NGX_HTTP_REALIP . $NGX_AUTO/have
- have=NGX_HTTP_X_FORWARDED_FOR . $NGX_AUTO/have
+ if [ $HTTP_REALIP = YES ]; then
+ have=NGX_HTTP_REALIP . $NGX_AUTO/have
+ have=NGX_HTTP_X_FORWARDED_FOR . $NGX_AUTO/have
- ngx_module_name=ngx_http_realip_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_realip_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_REALIP
+ ngx_module_name=ngx_http_realip_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_realip_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_REALIP
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_STATUS = YES ]; then
- ngx_module_name=ngx_http_status_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_status_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_STATUS
+ if [ $HTTP_STATUS = YES ]; then
+ ngx_module_name=ngx_http_status_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_status_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_STATUS
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_GEO = YES ]; then
- have=NGX_HTTP_X_FORWARDED_FOR . $NGX_AUTO/have
+ if [ $HTTP_GEO = YES ]; then
+ have=NGX_HTTP_X_FORWARDED_FOR . $NGX_AUTO/have
- ngx_module_name=ngx_http_geo_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_geo_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_GEO
+ ngx_module_name=ngx_http_geo_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_geo_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_GEO
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_GEOIP != NO ]; then
- have=NGX_HTTP_X_FORWARDED_FOR . $NGX_AUTO/have
+ if [ $HTTP_GEOIP != NO ]; then
+ have=NGX_HTTP_X_FORWARDED_FOR . $NGX_AUTO/have
- ngx_module_name=ngx_http_geoip_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_geoip_module.c
- ngx_module_libs=GEOIP
- ngx_module_link=$HTTP_GEOIP
+ ngx_module_name=ngx_http_geoip_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_geoip_module.c
+ ngx_module_libs=GEOIP
+ ngx_module_link=$HTTP_GEOIP
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_MAP = YES ]; then
- ngx_module_name=ngx_http_map_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_map_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_MAP
+ if [ $HTTP_MAP = YES ]; then
+ ngx_module_name=ngx_http_map_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_map_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_MAP
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_SPLIT_CLIENTS = YES ]; then
- ngx_module_name=ngx_http_split_clients_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_split_clients_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_SPLIT_CLIENTS
+ if [ $HTTP_SPLIT_CLIENTS = YES ]; then
+ ngx_module_name=ngx_http_split_clients_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_split_clients_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_SPLIT_CLIENTS
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_REFERER = YES ]; then
- ngx_module_name=ngx_http_referer_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_referer_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_REFERER
+ if [ $HTTP_REFERER = YES ]; then
+ ngx_module_name=ngx_http_referer_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_referer_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_REFERER
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_REWRITE = YES -a $USE_PCRE != DISABLED ]; then
- USE_PCRE=YES
+ if [ $HTTP_REWRITE = YES -a $USE_PCRE != DISABLED ]; then
+ USE_PCRE=YES
- ngx_module_name=ngx_http_rewrite_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_rewrite_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_REWRITE
+ ngx_module_name=ngx_http_rewrite_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_rewrite_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_REWRITE
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_SSL = YES ]; then
- USE_OPENSSL=YES
- have=NGX_HTTP_SSL . $NGX_AUTO/have
+ if [ $HTTP_SSL = YES ]; then
+ USE_OPENSSL=YES
+ have=NGX_HTTP_SSL . $NGX_AUTO/have
- ngx_module_name=ngx_http_ssl_module
- ngx_module_incs=
- ngx_module_deps=src/http/modules/ngx_http_ssl_module.h
- ngx_module_srcs=src/http/modules/ngx_http_ssl_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_SSL
+ ngx_module_name=ngx_http_ssl_module
+ ngx_module_incs=
+ ngx_module_deps=src/http/modules/ngx_http_ssl_module.h
+ ngx_module_srcs=src/http/modules/ngx_http_ssl_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_SSL
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_PROXY = YES ]; then
- have=NGX_HTTP_X_FORWARDED_FOR . $NGX_AUTO/have
+ if [ $HTTP_PROXY = YES ]; then
+ have=NGX_HTTP_X_FORWARDED_FOR . $NGX_AUTO/have
- ngx_module_name=ngx_http_proxy_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_proxy_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_PROXY
+ ngx_module_name=ngx_http_proxy_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_proxy_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_PROXY
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_FASTCGI = YES ]; then
- ngx_module_name=ngx_http_fastcgi_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_fastcgi_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_FASTCGI
+ if [ $HTTP_FASTCGI = YES ]; then
+ ngx_module_name=ngx_http_fastcgi_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_fastcgi_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_FASTCGI
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_UWSGI = YES ]; then
- ngx_module_name=ngx_http_uwsgi_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_uwsgi_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_UWSGI
+ if [ $HTTP_UWSGI = YES ]; then
+ ngx_module_name=ngx_http_uwsgi_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_uwsgi_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_UWSGI
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_SCGI = YES ]; then
- ngx_module_name=ngx_http_scgi_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_scgi_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_SCGI
+ if [ $HTTP_SCGI = YES ]; then
+ ngx_module_name=ngx_http_scgi_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_scgi_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_SCGI
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_PERL != NO ]; then
- ngx_module_name=ngx_http_perl_module
- ngx_module_incs=src/http/modules/perl
- ngx_module_deps=src/http/modules/perl/ngx_http_perl_module.h
- ngx_module_srcs=src/http/modules/perl/ngx_http_perl_module.c
- ngx_module_libs=PERL
- ngx_module_link=$HTTP_PERL
+ if [ $HTTP_PERL != NO ]; then
+ ngx_module_name=ngx_http_perl_module
+ ngx_module_incs=src/http/modules/perl
+ ngx_module_deps=src/http/modules/perl/ngx_http_perl_module.h
+ ngx_module_srcs=src/http/modules/perl/ngx_http_perl_module.c
+ ngx_module_libs=PERL
+ ngx_module_link=$HTTP_PERL
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_MEMCACHED = YES ]; then
- ngx_module_name=ngx_http_memcached_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_memcached_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_MEMCACHED
+ if [ $HTTP_MEMCACHED = YES ]; then
+ ngx_module_name=ngx_http_memcached_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_memcached_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_MEMCACHED
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_EMPTY_GIF = YES ]; then
- ngx_module_name=ngx_http_empty_gif_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_empty_gif_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_EMPTY_GIF
+ if [ $HTTP_EMPTY_GIF = YES ]; then
+ ngx_module_name=ngx_http_empty_gif_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_empty_gif_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_EMPTY_GIF
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_BROWSER = YES ]; then
- ngx_module_name=ngx_http_browser_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_browser_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_BROWSER
+ if [ $HTTP_BROWSER = YES ]; then
+ ngx_module_name=ngx_http_browser_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_browser_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_BROWSER
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_SECURE_LINK = YES ]; then
- ngx_module_name=ngx_http_secure_link_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_secure_link_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_SECURE_LINK
+ if [ $HTTP_SECURE_LINK = YES ]; then
+ ngx_module_name=ngx_http_secure_link_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_secure_link_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_SECURE_LINK
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_DEGRADATION = YES ]; then
- have=NGX_HTTP_DEGRADATION . $NGX_AUTO/have
+ if [ $HTTP_DEGRADATION = YES ]; then
+ have=NGX_HTTP_DEGRADATION . $NGX_AUTO/have
- ngx_module_name=ngx_http_degradation_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_degradation_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_DEGRADATION
+ ngx_module_name=ngx_http_degradation_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_degradation_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_DEGRADATION
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_FLV = YES ]; then
- ngx_module_name=ngx_http_flv_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_flv_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_FLV
+ if [ $HTTP_FLV = YES ]; then
+ ngx_module_name=ngx_http_flv_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_flv_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_FLV
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_MP4 = YES ]; then
- ngx_module_name=ngx_http_mp4_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_mp4_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_MP4
+ if [ $HTTP_MP4 = YES ]; then
+ ngx_module_name=ngx_http_mp4_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_mp4_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_MP4
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_UPSTREAM_HASH = YES ]; then
- ngx_module_name=ngx_http_upstream_hash_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_upstream_hash_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_UPSTREAM_HASH
+ if [ $HTTP_UPSTREAM_HASH = YES ]; then
+ ngx_module_name=ngx_http_upstream_hash_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_upstream_hash_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_UPSTREAM_HASH
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_UPSTREAM_IP_HASH = YES ]; then
- ngx_module_name=ngx_http_upstream_ip_hash_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_upstream_ip_hash_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_UPSTREAM_IP_HASH
+ if [ $HTTP_UPSTREAM_IP_HASH = YES ]; then
+ ngx_module_name=ngx_http_upstream_ip_hash_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_upstream_ip_hash_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_UPSTREAM_IP_HASH
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_UPSTREAM_LEAST_CONN = YES ]; then
- ngx_module_name=ngx_http_upstream_least_conn_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_upstream_least_conn_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_UPSTREAM_LEAST_CONN
+ if [ $HTTP_UPSTREAM_LEAST_CONN = YES ]; then
+ ngx_module_name=ngx_http_upstream_least_conn_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_upstream_least_conn_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_UPSTREAM_LEAST_CONN
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_UPSTREAM_KEEPALIVE = YES ]; then
- ngx_module_name=ngx_http_upstream_keepalive_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_upstream_keepalive_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_UPSTREAM_KEEPALIVE
+ if [ $HTTP_UPSTREAM_KEEPALIVE = YES ]; then
+ ngx_module_name=ngx_http_upstream_keepalive_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_upstream_keepalive_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_UPSTREAM_KEEPALIVE
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_UPSTREAM_ZONE = YES ]; then
- have=NGX_HTTP_UPSTREAM_ZONE . $NGX_AUTO/have
+ if [ $HTTP_UPSTREAM_ZONE = YES ]; then
+ have=NGX_HTTP_UPSTREAM_ZONE . $NGX_AUTO/have
- ngx_module_name=ngx_http_upstream_zone_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_upstream_zone_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_UPSTREAM_ZONE
+ ngx_module_name=ngx_http_upstream_zone_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_upstream_zone_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_UPSTREAM_ZONE
- . $NGX_AUTO/module
-fi
+ . $NGX_AUTO/module
+ fi
-if [ $HTTP_STUB_STATUS = YES ]; then
- have=NGX_STAT_STUB . $NGX_AUTO/have
+ if [ $HTTP_STUB_STATUS = YES ]; then
+ have=NGX_STAT_STUB . $NGX_AUTO/have
- ngx_module_name=ngx_http_stub_status_module
- ngx_module_incs=
- ngx_module_deps=
- ngx_module_srcs=src/http/modules/ngx_http_stub_status_module.c
- ngx_module_libs=
- ngx_module_link=$HTTP_STUB_STATUS
+ ngx_module_name=ngx_http_stub_status_module
+ ngx_module_incs=
+ ngx_module_deps=
+ ngx_module_srcs=src/http/modules/ngx_http_stub_status_module.c
+ ngx_module_libs=
+ ngx_module_link=$HTTP_STUB_STATUS
- . $NGX_AUTO/module
+ . $NGX_AUTO/module
+ fi
fi
@@ -966,6 +963,8 @@
STREAM_INCS=
ngx_module_type=STREAM
+ ngx_module_libs=
+ ngx_module_link=YES
ngx_module_order=
diff --git a/auto/options b/auto/options
index e90a653..2311b48 100644
--- a/auto/options
+++ b/auto/options
@@ -574,19 +574,6 @@
fi
-if [ $HTTP = NO ]; then
- HTTP_CHARSET=NO
- HTTP_GZIP=NO
- HTTP_SSI=NO
- HTTP_USERID=NO
- HTTP_ACCESS=NO
- HTTP_STATUS=NO
- HTTP_REWRITE=NO
- HTTP_PROXY=NO
- HTTP_FASTCGI=NO
-fi
-
-
if [ ".$NGX_PLATFORM" = ".win32" ]; then
NGX_WINE=$WINE
fi
diff --git a/build.bzl b/build.bzl
index a48752d..94bf20e 100644
--- a/build.bzl
+++ b/build.bzl
@@ -663,7 +663,7 @@
name = "nginx_pkgoss",
build_file_content = _PKGOSS_BUILD_FILE.format(nginx = nginx) +
_PKGOSS_BUILD_FILE_TAIL,
- commit = "d32bf01ba9785ace73e8da01dfe792fd229dcc7a", # nginx-1.11.10
+ commit = "d80a760096c57ba3db2560557e5db9a63d2fed47", # nginx-1.11.11
remote = "https://nginx.googlesource.com/nginx-pkgoss",
)
diff --git a/contrib/vim/syntax/nginx.vim b/contrib/vim/syntax/nginx.vim
index f1fd48a..a52891b 100644
--- a/contrib/vim/syntax/nginx.vim
+++ b/contrib/vim/syntax/nginx.vim
@@ -13,7 +13,7 @@
syn match ngxVariableBlock '\$\(\w\+\|{\w\+}\)' contained
syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained
syn region ngxBlock start=+^+ end=+{+ skip=+\${+ contains=ngxComment,ngxDirectiveBlock,ngxVariableBlock,ngxString oneline
-syn region ngxString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString
+syn region ngxString start=+[^:a-zA-Z>!\\@]\z(["']\)+lc=1 end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString
syn match ngxComment ' *#.*$'
syn keyword ngxBoolean on
@@ -37,7 +37,8 @@
syn keyword ngxDirectiveImportant root
syn keyword ngxDirectiveImportant server
syn keyword ngxDirectiveImportant server_name
-syn keyword ngxDirectiveImportant listen
+syn keyword ngxDirectiveImportant listen contained
+syn region ngxDirectiveImportantListen matchgroup=ngxDirectiveImportant start=+listen+ skip=+\\\\\|\\\;+ end=+;+he=e-1 contains=ngxListenOptions,ngxString
syn keyword ngxDirectiveImportant internal
syn keyword ngxDirectiveImportant proxy_pass
syn keyword ngxDirectiveImportant memcached_pass
@@ -46,6 +47,24 @@
syn keyword ngxDirectiveImportant uwsgi_pass
syn keyword ngxDirectiveImportant try_files
+syn keyword ngxListenOptions default_server contained
+syn keyword ngxListenOptions ssl contained
+syn keyword ngxListenOptions http2 contained
+syn keyword ngxListenOptions spdy contained
+syn keyword ngxListenOptions proxy_protocol contained
+syn keyword ngxListenOptions setfib contained
+syn keyword ngxListenOptions fastopen contained
+syn keyword ngxListenOptions backlog contained
+syn keyword ngxListenOptions rcvbuf contained
+syn keyword ngxListenOptions sndbuf contained
+syn keyword ngxListenOptions accept_filter contained
+syn keyword ngxListenOptions deferred contained
+syn keyword ngxListenOptions bind contained
+syn keyword ngxListenOptions ipv6only contained
+syn keyword ngxListenOptions reuseport contained
+syn keyword ngxListenOptions so_keepalive contained
+syn keyword ngxListenOptions keepidle contained
+
syn keyword ngxDirectiveControl break
syn keyword ngxDirectiveControl return
syn keyword ngxDirectiveControl rewrite
@@ -63,6 +82,7 @@
syn keyword ngxDirectiveDeprecated satisfy_any
syn keyword ngxDirectiveDeprecated so_keepalive
+syn keyword ngxDirective absolute_redirect
syn keyword ngxDirective accept_mutex
syn keyword ngxDirective accept_mutex_delay
syn keyword ngxDirective acceptex_read
@@ -72,6 +92,7 @@
syn keyword ngxDirective add_header
syn keyword ngxDirective addition_types
syn keyword ngxDirective aio
+syn keyword ngxDirective aio_write
syn keyword ngxDirective alias
syn keyword ngxDirective allow
syn keyword ngxDirective ancient_browser
@@ -80,13 +101,18 @@
syn keyword ngxDirective auth_basic_user_file
syn keyword ngxDirective auth_http
syn keyword ngxDirective auth_http_header
+syn keyword ngxDirective auth_http_pass_client_cert
syn keyword ngxDirective auth_http_timeout
+syn keyword ngxDirective auth_jwt
+syn keyword ngxDirective auth_jwt_key_file
syn keyword ngxDirective auth_request
syn keyword ngxDirective auth_request_set
syn keyword ngxDirective autoindex
syn keyword ngxDirective autoindex_exact_size
+syn keyword ngxDirective autoindex_format
syn keyword ngxDirective autoindex_localtime
syn keyword ngxDirective charset
+syn keyword ngxDirective charset_map
syn keyword ngxDirective charset_types
syn keyword ngxDirective chunked_transfer_encoding
syn keyword ngxDirective client_body_buffer_size
@@ -120,6 +146,8 @@
syn keyword ngxDirective etag
syn keyword ngxDirective eventport_events
syn keyword ngxDirective expires
+syn keyword ngxDirective f4f
+syn keyword ngxDirective f4f_buffer_size
syn keyword ngxDirective fastcgi_bind
syn keyword ngxDirective fastcgi_buffer_size
syn keyword ngxDirective fastcgi_buffering
@@ -129,10 +157,13 @@
syn keyword ngxDirective fastcgi_cache_bypass
syn keyword ngxDirective fastcgi_cache_key
syn keyword ngxDirective fastcgi_cache_lock
+syn keyword ngxDirective fastcgi_cache_lock_age
syn keyword ngxDirective fastcgi_cache_lock_timeout
+syn keyword ngxDirective fastcgi_cache_max_range_offset
syn keyword ngxDirective fastcgi_cache_methods
syn keyword ngxDirective fastcgi_cache_min_uses
syn keyword ngxDirective fastcgi_cache_path
+syn keyword ngxDirective fastcgi_cache_purge
syn keyword ngxDirective fastcgi_cache_revalidate
syn keyword ngxDirective fastcgi_cache_use_stale
syn keyword ngxDirective fastcgi_cache_valid
@@ -145,6 +176,7 @@
syn keyword ngxDirective fastcgi_index
syn keyword ngxDirective fastcgi_intercept_errors
syn keyword ngxDirective fastcgi_keep_conn
+syn keyword ngxDirective fastcgi_limit_rate
syn keyword ngxDirective fastcgi_max_temp_file_size
syn keyword ngxDirective fastcgi_next_upstream
syn keyword ngxDirective fastcgi_next_upstream_timeout
@@ -155,6 +187,7 @@
syn keyword ngxDirective fastcgi_pass_request_body
syn keyword ngxDirective fastcgi_pass_request_headers
syn keyword ngxDirective fastcgi_read_timeout
+syn keyword ngxDirective fastcgi_request_buffering
syn keyword ngxDirective fastcgi_send_lowat
syn keyword ngxDirective fastcgi_send_timeout
syn keyword ngxDirective fastcgi_split_path_info
@@ -185,6 +218,23 @@
syn keyword ngxDirective gzip_vary
syn keyword ngxDirective gzip_window
syn keyword ngxDirective hash
+syn keyword ngxDirective health_check
+syn keyword ngxDirective health_check_timeout
+syn keyword ngxDirective hls
+syn keyword ngxDirective hls_buffers
+syn keyword ngxDirective hls_forward_args
+syn keyword ngxDirective hls_fragment
+syn keyword ngxDirective hls_mp4_buffer_size
+syn keyword ngxDirective hls_mp4_max_buffer_size
+syn keyword ngxDirective http2_chunk_size
+syn keyword ngxDirective http2_body_preread_size
+syn keyword ngxDirective http2_idle_timeout
+syn keyword ngxDirective http2_max_concurrent_streams
+syn keyword ngxDirective http2_max_field_size
+syn keyword ngxDirective http2_max_header_size
+syn keyword ngxDirective http2_max_requests
+syn keyword ngxDirective http2_recv_buffer_size
+syn keyword ngxDirective http2_recv_timeout
syn keyword ngxDirective if_modified_since
syn keyword ngxDirective ignore_invalid_headers
syn keyword ngxDirective image_filter
@@ -193,12 +243,19 @@
syn keyword ngxDirective image_filter_jpeg_quality
syn keyword ngxDirective image_filter_sharpen
syn keyword ngxDirective image_filter_transparency
+syn keyword ngxDirective image_filter_webp_quality
syn keyword ngxDirective imap_auth
syn keyword ngxDirective imap_capabilities
syn keyword ngxDirective imap_client_buffer
syn keyword ngxDirective index
syn keyword ngxDirective iocp_threads
syn keyword ngxDirective ip_hash
+syn keyword ngxDirective js_access
+syn keyword ngxDirective js_content
+syn keyword ngxDirective js_filter
+syn keyword ngxDirective js_include
+syn keyword ngxDirective js_preread
+syn keyword ngxDirective js_set
syn keyword ngxDirective keepalive
syn keyword ngxDirective keepalive_disable
syn keyword ngxDirective keepalive_requests
@@ -207,6 +264,7 @@
syn keyword ngxDirective kqueue_events
syn keyword ngxDirective large_client_header_buffers
syn keyword ngxDirective least_conn
+syn keyword ngxDirective least_time
syn keyword ngxDirective limit_conn
syn keyword ngxDirective limit_conn_log_level
syn keyword ngxDirective limit_conn_status
@@ -220,17 +278,20 @@
syn keyword ngxDirective lingering_close
syn keyword ngxDirective lingering_time
syn keyword ngxDirective lingering_timeout
+syn keyword ngxDirective load_module
syn keyword ngxDirective lock_file
syn keyword ngxDirective log_format
syn keyword ngxDirective log_not_found
syn keyword ngxDirective log_subrequest
syn keyword ngxDirective map_hash_bucket_size
syn keyword ngxDirective map_hash_max_size
+syn keyword ngxDirective match
syn keyword ngxDirective master_process
syn keyword ngxDirective max_ranges
syn keyword ngxDirective memcached_bind
syn keyword ngxDirective memcached_buffer_size
syn keyword ngxDirective memcached_connect_timeout
+syn keyword ngxDirective memcached_force_ranges
syn keyword ngxDirective memcached_gzip_flag
syn keyword ngxDirective memcached_next_upstream
syn keyword ngxDirective memcached_next_upstream_timeout
@@ -244,9 +305,12 @@
syn keyword ngxDirective mp4
syn keyword ngxDirective mp4_buffer_size
syn keyword ngxDirective mp4_max_buffer_size
+syn keyword ngxDirective mp4_limit_rate
+syn keyword ngxDirective mp4_limit_rate_after
syn keyword ngxDirective msie_padding
syn keyword ngxDirective msie_refresh
syn keyword ngxDirective multi_accept
+syn keyword ngxDirective ntlm
syn keyword ngxDirective open_file_cache
syn keyword ngxDirective open_file_cache_errors
syn keyword ngxDirective open_file_cache_events
@@ -267,7 +331,10 @@
syn keyword ngxDirective post_acceptex
syn keyword ngxDirective postpone_gzipping
syn keyword ngxDirective postpone_output
-syn keyword ngxDirective protocol
+syn keyword ngxDirective preread_buffer_size
+syn keyword ngxDirective preread_timeout
+syn keyword ngxDirective protocol nextgroup=ngxMailProtocol skipwhite
+syn keyword ngxMailProtocol imap pop3 smtp contained
syn keyword ngxDirective proxy
syn keyword ngxDirective proxy_bind
syn keyword ngxDirective proxy_buffer
@@ -277,18 +344,23 @@
syn keyword ngxDirective proxy_busy_buffers_size
syn keyword ngxDirective proxy_cache
syn keyword ngxDirective proxy_cache_bypass
+syn keyword ngxDirective proxy_cache_convert_head
syn keyword ngxDirective proxy_cache_key
syn keyword ngxDirective proxy_cache_lock
+syn keyword ngxDirective proxy_cache_lock_age
syn keyword ngxDirective proxy_cache_lock_timeout
+syn keyword ngxDirective proxy_cache_max_range_offset
syn keyword ngxDirective proxy_cache_methods
syn keyword ngxDirective proxy_cache_min_uses
syn keyword ngxDirective proxy_cache_path
+syn keyword ngxDirective proxy_cache_purge
syn keyword ngxDirective proxy_cache_revalidate
syn keyword ngxDirective proxy_cache_use_stale
syn keyword ngxDirective proxy_cache_valid
syn keyword ngxDirective proxy_connect_timeout
syn keyword ngxDirective proxy_cookie_domain
syn keyword ngxDirective proxy_cookie_path
+syn keyword ngxDirective proxy_download_rate
syn keyword ngxDirective proxy_force_ranges
syn keyword ngxDirective proxy_headers_hash_bucket_size
syn keyword ngxDirective proxy_headers_hash_max_size
@@ -297,6 +369,7 @@
syn keyword ngxDirective proxy_ignore_client_abort
syn keyword ngxDirective proxy_ignore_headers
syn keyword ngxDirective proxy_intercept_errors
+syn keyword ngxDirective proxy_limit_rate
syn keyword ngxDirective proxy_max_temp_file_size
syn keyword ngxDirective proxy_method
syn keyword ngxDirective proxy_next_upstream
@@ -307,16 +380,23 @@
syn keyword ngxDirective proxy_pass_header
syn keyword ngxDirective proxy_pass_request_body
syn keyword ngxDirective proxy_pass_request_headers
+syn keyword ngxDirective proxy_protocol
+syn keyword ngxDirective proxy_protocol_timeout
syn keyword ngxDirective proxy_read_timeout
syn keyword ngxDirective proxy_redirect
+syn keyword ngxDirective proxy_request_buffering
+syn keyword ngxDirective proxy_responses
syn keyword ngxDirective proxy_send_lowat
syn keyword ngxDirective proxy_send_timeout
syn keyword ngxDirective proxy_set_body
syn keyword ngxDirective proxy_set_header
+syn keyword ngxDirective proxy_ssl_certificate
+syn keyword ngxDirective proxy_ssl_certificate_key
syn keyword ngxDirective proxy_ssl_ciphers
syn keyword ngxDirective proxy_ssl_crl
syn keyword ngxDirective proxy_ssl_name
-syn keyword ngxDirective proxy_ssl_protocols
+syn keyword ngxDirective proxy_ssl_password_file
+syn keyword ngxDirective proxy_ssl_protocols nextgroup=ngxSSLProtocol skipwhite
syn keyword ngxDirective proxy_ssl_server_name
syn keyword ngxDirective proxy_ssl_session_reuse
syn keyword ngxDirective proxy_ssl_trusted_certificate
@@ -327,6 +407,8 @@
syn keyword ngxDirective proxy_temp_file_write_size
syn keyword ngxDirective proxy_temp_path
syn keyword ngxDirective proxy_timeout
+syn keyword ngxDirective proxy_upload_rate
+syn keyword ngxDirective queue
syn keyword ngxDirective random_index
syn keyword ngxDirective read_ahead
syn keyword ngxDirective real_ip_header
@@ -353,10 +435,13 @@
syn keyword ngxDirective scgi_cache_bypass
syn keyword ngxDirective scgi_cache_key
syn keyword ngxDirective scgi_cache_lock
+syn keyword ngxDirective scgi_cache_lock_age
syn keyword ngxDirective scgi_cache_lock_timeout
+syn keyword ngxDirective scgi_cache_max_range_offset
syn keyword ngxDirective scgi_cache_methods
syn keyword ngxDirective scgi_cache_min_uses
syn keyword ngxDirective scgi_cache_path
+syn keyword ngxDirective scgi_cache_purge
syn keyword ngxDirective scgi_cache_revalidate
syn keyword ngxDirective scgi_cache_use_stale
syn keyword ngxDirective scgi_cache_valid
@@ -366,6 +451,7 @@
syn keyword ngxDirective scgi_ignore_client_abort
syn keyword ngxDirective scgi_ignore_headers
syn keyword ngxDirective scgi_intercept_errors
+syn keyword ngxDirective scgi_limit_rate
syn keyword ngxDirective scgi_max_temp_file_size
syn keyword ngxDirective scgi_next_upstream
syn keyword ngxDirective scgi_next_upstream_timeout
@@ -376,6 +462,7 @@
syn keyword ngxDirective scgi_pass_request_body
syn keyword ngxDirective scgi_pass_request_headers
syn keyword ngxDirective scgi_read_timeout
+syn keyword ngxDirective scgi_request_buffering
syn keyword ngxDirective scgi_send_timeout
syn keyword ngxDirective scgi_store
syn keyword ngxDirective scgi_store_access
@@ -392,7 +479,11 @@
syn keyword ngxDirective server_names_hash_bucket_size
syn keyword ngxDirective server_names_hash_max_size
syn keyword ngxDirective server_tokens
+syn keyword ngxDirective session_log
+syn keyword ngxDirective session_log_format
+syn keyword ngxDirective session_log_zone
syn keyword ngxDirective set_real_ip_from
+syn keyword ngxDirective slice
syn keyword ngxDirective smtp_auth
syn keyword ngxDirective smtp_capabilities
syn keyword ngxDirective smtp_client_buffer
@@ -423,9 +514,12 @@
syn keyword ngxDirective ssl_dhparam
syn keyword ngxDirective ssl_ecdh_curve
syn keyword ngxDirective ssl_engine
+syn keyword ngxDirective ssl_handshake_timeout
syn keyword ngxDirective ssl_password_file
syn keyword ngxDirective ssl_prefer_server_ciphers
-syn keyword ngxDirective ssl_protocols
+syn keyword ngxDirective ssl_preread
+syn keyword ngxDirective ssl_protocols nextgroup=ngxSSLProtocol skipwhite
+syn keyword ngxSSLProtocol SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 contained nextgroup=ngxSSLProtocol skipwhite
syn keyword ngxDirective ssl_session_cache
syn keyword ngxDirective ssl_session_ticket_key
syn keyword ngxDirective ssl_session_tickets
@@ -438,6 +532,12 @@
syn keyword ngxDirective ssl_verify_client
syn keyword ngxDirective ssl_verify_depth
syn keyword ngxDirective starttls
+syn keyword ngxDirective state
+syn keyword ngxDirective status
+syn keyword ngxDirective status_format
+syn keyword ngxDirective status_zone
+syn keyword ngxDirective sticky
+syn keyword ngxDirective sticky_cookie_insert
syn keyword ngxDirective stub_status
syn keyword ngxDirective sub_filter
syn keyword ngxDirective sub_filter_last_modified
@@ -445,6 +545,7 @@
syn keyword ngxDirective sub_filter_types
syn keyword ngxDirective tcp_nodelay
syn keyword ngxDirective tcp_nopush
+syn keyword ngxDirective thread_pool
syn keyword ngxDirective thread_stack_size
syn keyword ngxDirective timeout
syn keyword ngxDirective timer_resolution
@@ -452,6 +553,7 @@
syn keyword ngxDirective types_hash_max_size
syn keyword ngxDirective underscores_in_headers
syn keyword ngxDirective uninitialized_variable_warn
+syn keyword ngxDirective upstream_conf
syn keyword ngxDirective use
syn keyword ngxDirective user
syn keyword ngxDirective userid
@@ -471,10 +573,12 @@
syn keyword ngxDirective uwsgi_cache_bypass
syn keyword ngxDirective uwsgi_cache_key
syn keyword ngxDirective uwsgi_cache_lock
+syn keyword ngxDirective uwsgi_cache_lock_age
syn keyword ngxDirective uwsgi_cache_lock_timeout
syn keyword ngxDirective uwsgi_cache_methods
syn keyword ngxDirective uwsgi_cache_min_uses
syn keyword ngxDirective uwsgi_cache_path
+syn keyword ngxDirective uwsgi_cache_purge
syn keyword ngxDirective uwsgi_cache_revalidate
syn keyword ngxDirective uwsgi_cache_use_stale
syn keyword ngxDirective uwsgi_cache_valid
@@ -484,6 +588,7 @@
syn keyword ngxDirective uwsgi_ignore_client_abort
syn keyword ngxDirective uwsgi_ignore_headers
syn keyword ngxDirective uwsgi_intercept_errors
+syn keyword ngxDirective uwsgi_limit_rate
syn keyword ngxDirective uwsgi_max_temp_file_size
syn keyword ngxDirective uwsgi_modifier1
syn keyword ngxDirective uwsgi_modifier2
@@ -492,15 +597,20 @@
syn keyword ngxDirective uwsgi_next_upstream_tries
syn keyword ngxDirective uwsgi_no_cache
syn keyword ngxDirective uwsgi_param
+syn keyword ngxDirective uwsgi_pass
syn keyword ngxDirective uwsgi_pass_header
syn keyword ngxDirective uwsgi_pass_request_body
syn keyword ngxDirective uwsgi_pass_request_headers
syn keyword ngxDirective uwsgi_read_timeout
+syn keyword ngxDirective uwsgi_request_buffering
syn keyword ngxDirective uwsgi_send_timeout
+syn keyword ngxDirective uwsgi_ssl_certificate
+syn keyword ngxDirective uwsgi_ssl_certificate_key
syn keyword ngxDirective uwsgi_ssl_ciphers
syn keyword ngxDirective uwsgi_ssl_crl
syn keyword ngxDirective uwsgi_ssl_name
-syn keyword ngxDirective uwsgi_ssl_protocols
+syn keyword ngxDirective uwsgi_ssl_password_file
+syn keyword ngxDirective uwsgi_ssl_protocols nextgroup=ngxSSLProtocol skipwhite
syn keyword ngxDirective uwsgi_ssl_server_name
syn keyword ngxDirective uwsgi_ssl_session_reuse
syn keyword ngxDirective uwsgi_ssl_trusted_certificate
@@ -531,129 +641,370 @@
syn keyword ngxDirective xslt_string_param
syn keyword ngxDirective xslt_stylesheet
syn keyword ngxDirective xslt_types
+syn keyword ngxDirective zone
" 3rd party module list:
-" http://wiki.nginx.org/Nginx3rdPartyModules
+" https://www.nginx.com/resources/wiki/modules/
-" Accept Language Module <http://wiki.nginx.org/NginxAcceptLanguageModule>
+" Accept Language Module <https://www.nginx.com/resources/wiki/modules/accept_language/>
" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
syn keyword ngxDirectiveThirdParty set_from_accept_language
-" Access Key Module <http://wiki.nginx.org/NginxHttpAccessKeyModule>
+" Access Key Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpAccessKeyModule>
" Denies access unless the request URL contains an access key.
-syn keyword ngxDirectiveThirdParty accesskey
-syn keyword ngxDirectiveThirdParty accesskey_arg
-syn keyword ngxDirectiveThirdParty accesskey_hashmethod
-syn keyword ngxDirectiveThirdParty accesskey_signature
+syn keyword ngxDirectiveDeprecated accesskey
+syn keyword ngxDirectiveDeprecated accesskey_arg
+syn keyword ngxDirectiveDeprecated accesskey_hashmethod
+syn keyword ngxDirectiveDeprecated accesskey_signature
-" Auth PAM Module <http://web.iti.upv.es/~sto/nginx/>
-" HTTP Basic Authentication using PAM.
-syn keyword ngxDirectiveThirdParty auth_pam
-syn keyword ngxDirectiveThirdParty auth_pam_service_name
+" Asynchronous FastCGI Module <https://github.com/rsms/afcgi>
+" Primarily a modified version of the Nginx FastCGI module which implements multiplexing of connections, allowing a single FastCGI server to handle many concurrent requests.
+" syn keyword ngxDirectiveThirdParty fastcgi_bind
+" syn keyword ngxDirectiveThirdParty fastcgi_buffer_size
+" syn keyword ngxDirectiveThirdParty fastcgi_buffers
+" syn keyword ngxDirectiveThirdParty fastcgi_busy_buffers_size
+" syn keyword ngxDirectiveThirdParty fastcgi_cache
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_key
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_methods
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_min_uses
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_path
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_use_stale
+" syn keyword ngxDirectiveThirdParty fastcgi_cache_valid
+" syn keyword ngxDirectiveThirdParty fastcgi_catch_stderr
+" syn keyword ngxDirectiveThirdParty fastcgi_connect_timeout
+" syn keyword ngxDirectiveThirdParty fastcgi_hide_header
+" syn keyword ngxDirectiveThirdParty fastcgi_ignore_client_abort
+" syn keyword ngxDirectiveThirdParty fastcgi_ignore_headers
+" syn keyword ngxDirectiveThirdParty fastcgi_index
+" syn keyword ngxDirectiveThirdParty fastcgi_intercept_errors
+" syn keyword ngxDirectiveThirdParty fastcgi_max_temp_file_size
+" syn keyword ngxDirectiveThirdParty fastcgi_next_upstream
+" syn keyword ngxDirectiveThirdParty fastcgi_param
+" syn keyword ngxDirectiveThirdParty fastcgi_pass
+" syn keyword ngxDirectiveThirdParty fastcgi_pass_header
+" syn keyword ngxDirectiveThirdParty fastcgi_pass_request_body
+" syn keyword ngxDirectiveThirdParty fastcgi_pass_request_headers
+" syn keyword ngxDirectiveThirdParty fastcgi_read_timeout
+" syn keyword ngxDirectiveThirdParty fastcgi_send_lowat
+" syn keyword ngxDirectiveThirdParty fastcgi_send_timeout
+" syn keyword ngxDirectiveThirdParty fastcgi_split_path_info
+" syn keyword ngxDirectiveThirdParty fastcgi_store
+" syn keyword ngxDirectiveThirdParty fastcgi_store_access
+" syn keyword ngxDirectiveThirdParty fastcgi_temp_file_write_size
+" syn keyword ngxDirectiveThirdParty fastcgi_temp_path
+syn keyword ngxDirectiveDeprecated fastcgi_upstream_fail_timeout
+syn keyword ngxDirectiveDeprecated fastcgi_upstream_max_fails
-" Cache Purge Module <http://labs.frickle.com/nginx_ngx_cache_purge/>
-" Module adding ability to purge content from FastCGI and proxy caches.
+" Akamai G2O Module <https://github.com/kaltura/nginx_mod_akamai_g2o>
+" Nginx Module for Authenticating Akamai G2O requests
+syn keyword ngxDirectiveThirdParty g2o
+syn keyword ngxDirectiveThirdParty g2o_nonce
+syn keyword ngxDirectiveThirdParty g2o_key
+
+" Lua Module <https://github.com/alacner/nginx_lua_module>
+" You can be very simple to execute lua code for nginx
+syn keyword ngxDirectiveThirdParty lua_file
+
+" Array Variable Module <https://github.com/openresty/array-var-nginx-module>
+" Add support for array-typed variables to nginx config files
+syn keyword ngxDirectiveThirdParty array_split
+syn keyword ngxDirectiveThirdParty array_join
+syn keyword ngxDirectiveThirdParty array_map
+syn keyword ngxDirectiveThirdParty array_map_op
+
+" Nginx Audio Track for HTTP Live Streaming <https://github.com/flavioribeiro/nginx-audio-track-for-hls-module>
+" This nginx module generates audio track for hls streams on the fly.
+syn keyword ngxDirectiveThirdParty ngx_hls_audio_track
+syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_rootpath
+syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_output_format
+syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_output_header
+
+" AWS Proxy Module <https://github.com/anomalizer/ngx_aws_auth>
+" Nginx module to proxy to authenticated AWS services
+syn keyword ngxDirectiveThirdParty aws_access_key
+syn keyword ngxDirectiveThirdParty aws_key_scope
+syn keyword ngxDirectiveThirdParty aws_signing_key
+syn keyword ngxDirectiveThirdParty aws_endpoint
+syn keyword ngxDirectiveThirdParty aws_s3_bucket
+syn keyword ngxDirectiveThirdParty aws_sign
+
+" Backtrace module <https://github.com/alibaba/nginx-backtrace>
+" A Nginx module to dump backtrace when a worker process exits abnormally
+syn keyword ngxDirectiveThirdParty backtrace_log
+syn keyword ngxDirectiveThirdParty backtrace_max_stack_size
+
+" Brotli Module <https://github.com/google/ngx_brotli>
+" Nginx module for Brotli compression
+syn keyword ngxDirectiveThirdParty brotli_static
+syn keyword ngxDirectiveThirdParty brotli
+syn keyword ngxDirectiveThirdParty brotli_types
+syn keyword ngxDirectiveThirdParty brotli_buffers
+syn keyword ngxDirectiveThirdParty brotli_comp_level
+syn keyword ngxDirectiveThirdParty brotli_window
+syn keyword ngxDirectiveThirdParty brotli_min_length
+
+" Cache Purge Module <https://github.com/FRiCKLE/ngx_cache_purge>
+" Adds ability to purge content from FastCGI, proxy, SCGI and uWSGI caches.
syn keyword ngxDirectiveThirdParty fastcgi_cache_purge
syn keyword ngxDirectiveThirdParty proxy_cache_purge
+" syn keyword ngxDirectiveThirdParty scgi_cache_purge
+" syn keyword ngxDirectiveThirdParty uwsgi_cache_purge
-" Chunkin Module <http://wiki.nginx.org/NginxHttpChunkinModule>
+" Chunkin Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpChunkinModule>
" HTTP 1.1 chunked-encoding request body support for Nginx.
-syn keyword ngxDirectiveThirdParty chunkin
-syn keyword ngxDirectiveThirdParty chunkin_keepalive
-syn keyword ngxDirectiveThirdParty chunkin_max_chunks_per_buf
-syn keyword ngxDirectiveThirdParty chunkin_resume
+syn keyword ngxDirectiveDeprecated chunkin
+syn keyword ngxDirectiveDeprecated chunkin_keepalive
+syn keyword ngxDirectiveDeprecated chunkin_max_chunks_per_buf
+syn keyword ngxDirectiveDeprecated chunkin_resume
-" Circle GIF Module <http://wiki.nginx.org/NginxHttpCircleGifModule>
+" Circle GIF Module <https://github.com/evanmiller/nginx_circle_gif>
" Generates simple circle images with the colors and size specified in the URL.
syn keyword ngxDirectiveThirdParty circle_gif
syn keyword ngxDirectiveThirdParty circle_gif_max_radius
syn keyword ngxDirectiveThirdParty circle_gif_min_radius
syn keyword ngxDirectiveThirdParty circle_gif_step_radius
-" Drizzle Module <http://github.com/chaoslawful/drizzle-nginx-module>
-" Make nginx talk directly to mysql, drizzle, and sqlite3 by libdrizzle.
-syn keyword ngxDirectiveThirdParty drizzle_connect_timeout
-syn keyword ngxDirectiveThirdParty drizzle_dbname
+" Nginx-Clojure Module <http://nginx-clojure.github.io/index.html>
+" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
+syn keyword ngxDirectiveThirdParty jvm_path
+syn keyword ngxDirectiveThirdParty jvm_var
+syn keyword ngxDirectiveThirdParty jvm_classpath
+syn keyword ngxDirectiveThirdParty jvm_classpath_check
+syn keyword ngxDirectiveThirdParty jvm_workers
+syn keyword ngxDirectiveThirdParty jvm_options
+syn keyword ngxDirectiveThirdParty jvm_handler_type
+syn keyword ngxDirectiveThirdParty jvm_init_handler_name
+syn keyword ngxDirectiveThirdParty jvm_init_handler_code
+syn keyword ngxDirectiveThirdParty jvm_exit_handler_name
+syn keyword ngxDirectiveThirdParty jvm_exit_handler_code
+syn keyword ngxDirectiveThirdParty handlers_lazy_init
+syn keyword ngxDirectiveThirdParty auto_upgrade_ws
+syn keyword ngxDirectiveThirdParty content_handler_type
+syn keyword ngxDirectiveThirdParty content_handler_name
+syn keyword ngxDirectiveThirdParty content_handler_code
+syn keyword ngxDirectiveThirdParty rewrite_handler_type
+syn keyword ngxDirectiveThirdParty rewrite_handler_name
+syn keyword ngxDirectiveThirdParty rewrite_handler_code
+syn keyword ngxDirectiveThirdParty access_handler_type
+syn keyword ngxDirectiveThirdParty access_handler_name
+syn keyword ngxDirectiveThirdParty access_handler_code
+syn keyword ngxDirectiveThirdParty header_filter_type
+syn keyword ngxDirectiveThirdParty header_filter_name
+syn keyword ngxDirectiveThirdParty header_filter_code
+syn keyword ngxDirectiveThirdParty content_handler_property
+syn keyword ngxDirectiveThirdParty rewrite_handler_property
+syn keyword ngxDirectiveThirdParty access_handler_property
+syn keyword ngxDirectiveThirdParty header_filter_property
+syn keyword ngxDirectiveThirdParty always_read_body
+syn keyword ngxDirectiveThirdParty shared_map
+syn keyword ngxDirectiveThirdParty write_page_size
+
+" Upstream Consistent Hash <https://www.nginx.com/resources/wiki/modules/consistent_hash/>
+" A load balancer that uses an internal consistent hash ring to select the right backend node.
+syn keyword ngxDirectiveThirdParty consistent_hash
+
+" Nginx Development Kit <https://github.com/simpl/ngx_devel_kit>
+" The NDK is an Nginx module that is designed to extend the core functionality of the excellent Nginx webserver in a way that can be used as a basis of other Nginx modules.
+" NDK_UPSTREAM_LIST
+" This submodule provides a directive that creates a list of upstreams, with optional weighting. This list can then be used by other modules to hash over the upstreams however they choose.
+syn keyword ngxDirectiveThirdParty upstream_list
+
+" Drizzle Module <https://www.nginx.com/resources/wiki/modules/drizzle/>
+" Upstream module for talking to MySQL and Drizzle directly
+syn keyword ngxDirectiveThirdParty drizzle_server
syn keyword ngxDirectiveThirdParty drizzle_keepalive
-syn keyword ngxDirectiveThirdParty drizzle_module_header
-syn keyword ngxDirectiveThirdParty drizzle_pass
syn keyword ngxDirectiveThirdParty drizzle_query
+syn keyword ngxDirectiveThirdParty drizzle_pass
+syn keyword ngxDirectiveThirdParty drizzle_connect_timeout
+syn keyword ngxDirectiveThirdParty drizzle_send_query_timeout
syn keyword ngxDirectiveThirdParty drizzle_recv_cols_timeout
syn keyword ngxDirectiveThirdParty drizzle_recv_rows_timeout
-syn keyword ngxDirectiveThirdParty drizzle_send_query_timeout
-syn keyword ngxDirectiveThirdParty drizzle_server
+syn keyword ngxDirectiveThirdParty drizzle_buffer_size
+syn keyword ngxDirectiveThirdParty drizzle_module_header
+syn keyword ngxDirectiveThirdParty drizzle_status
-" Echo Module <http://wiki.nginx.org/NginxHttpEchoModule>
-" Brings 'echo', 'sleep', 'time', 'exec' and more shell-style goodies to Nginx config file.
+" Dynamic ETags Module <https://github.com/kali/nginx-dynamic-etags>
+" Attempt at handling ETag / If-None-Match on proxied content.
+syn keyword ngxDirectiveThirdParty dynamic_etags
+
+" Echo Module <https://www.nginx.com/resources/wiki/modules/echo/>
+" Bringing the power of "echo", "sleep", "time" and more to Nginx's config file
syn keyword ngxDirectiveThirdParty echo
-syn keyword ngxDirectiveThirdParty echo_after_body
-syn keyword ngxDirectiveThirdParty echo_before_body
-syn keyword ngxDirectiveThirdParty echo_blocking_sleep
syn keyword ngxDirectiveThirdParty echo_duplicate
-syn keyword ngxDirectiveThirdParty echo_end
-syn keyword ngxDirectiveThirdParty echo_exec
syn keyword ngxDirectiveThirdParty echo_flush
-syn keyword ngxDirectiveThirdParty echo_foreach_split
-syn keyword ngxDirectiveThirdParty echo_location
-syn keyword ngxDirectiveThirdParty echo_location_async
-syn keyword ngxDirectiveThirdParty echo_read_request_body
-syn keyword ngxDirectiveThirdParty echo_request_body
-syn keyword ngxDirectiveThirdParty echo_reset_timer
syn keyword ngxDirectiveThirdParty echo_sleep
-syn keyword ngxDirectiveThirdParty echo_subrequest
+syn keyword ngxDirectiveThirdParty echo_blocking_sleep
+syn keyword ngxDirectiveThirdParty echo_reset_timer
+syn keyword ngxDirectiveThirdParty echo_read_request_body
+syn keyword ngxDirectiveThirdParty echo_location_async
+syn keyword ngxDirectiveThirdParty echo_location
syn keyword ngxDirectiveThirdParty echo_subrequest_async
+syn keyword ngxDirectiveThirdParty echo_subrequest
+syn keyword ngxDirectiveThirdParty echo_foreach_split
+syn keyword ngxDirectiveThirdParty echo_end
+syn keyword ngxDirectiveThirdParty echo_request_body
+syn keyword ngxDirectiveThirdParty echo_exec
+syn keyword ngxDirectiveThirdParty echo_status
+syn keyword ngxDirectiveThirdParty echo_before_body
+syn keyword ngxDirectiveThirdParty echo_after_body
-" Events Module <http://docs.dutov.org/nginx_modules_events_en.html>
+" Encrypted Session Module <https://github.com/openresty/encrypted-session-nginx-module>
+" Encrypt and decrypt nginx variable values
+syn keyword ngxDirectiveThirdParty encrypted_session_key
+syn keyword ngxDirectiveThirdParty encrypted_session_iv
+syn keyword ngxDirectiveThirdParty encrypted_session_expires
+syn keyword ngxDirectiveThirdParty set_encrypt_session
+syn keyword ngxDirectiveThirdParty set_decrypt_session
+
+" Enhanced Memcached Module <https://github.com/bpaquet/ngx_http_enhanced_memcached_module>
+" This module is based on the standard Nginx Memcached module, with some additonal features
+syn keyword ngxDirectiveThirdParty enhanced_memcached_pass
+syn keyword ngxDirectiveThirdParty enhanced_memcached_hash_keys_with_md5
+syn keyword ngxDirectiveThirdParty enhanced_memcached_allow_put
+syn keyword ngxDirectiveThirdParty enhanced_memcached_allow_delete
+syn keyword ngxDirectiveThirdParty enhanced_memcached_stats
+syn keyword ngxDirectiveThirdParty enhanced_memcached_flush
+syn keyword ngxDirectiveThirdParty enhanced_memcached_flush_namespace
+syn keyword ngxDirectiveThirdParty enhanced_memcached_bind
+syn keyword ngxDirectiveThirdParty enhanced_memcached_connect_timeout
+syn keyword ngxDirectiveThirdParty enhanced_memcached_send_timeout
+syn keyword ngxDirectiveThirdParty enhanced_memcached_buffer_size
+syn keyword ngxDirectiveThirdParty enhanced_memcached_read_timeout
+
+" Events Module (DEPRECATED) <http://docs.dutov.org/nginx_modules_events_en.html>
" Provides options for start/stop events.
-syn keyword ngxDirectiveThirdParty on_start
-syn keyword ngxDirectiveThirdParty on_stop
+syn keyword ngxDirectiveDeprecated on_start
+syn keyword ngxDirectiveDeprecated on_stop
-" EY Balancer Module <http://github.com/ry/nginx-ey-balancer>
+" EY Balancer Module <https://github.com/ezmobius/nginx-ey-balancer>
" Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.
syn keyword ngxDirectiveThirdParty max_connections
syn keyword ngxDirectiveThirdParty max_connections_max_queue_length
syn keyword ngxDirectiveThirdParty max_connections_queue_timeout
-" Fancy Indexes Module <https://connectical.com/projects/ngx-fancyindex/wiki>
+" Upstream Fair Balancer <https://www.nginx.com/resources/wiki/modules/fair_balancer/>
+" Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.
+syn keyword ngxDirectiveThirdParty fair
+syn keyword ngxDirectiveThirdParty upstream_fair_shm_size
+
+" Fancy Indexes Module <https://github.com/aperezdc/ngx-fancyindex>
" Like the built-in autoindex module, but fancier.
syn keyword ngxDirectiveThirdParty fancyindex
+syn keyword ngxDirectiveThirdParty fancyindex_default_sort
+syn keyword ngxDirectiveThirdParty fancyindex_directories_first
+syn keyword ngxDirectiveThirdParty fancyindex_css_href
syn keyword ngxDirectiveThirdParty fancyindex_exact_size
+syn keyword ngxDirectiveThirdParty fancyindex_name_length
syn keyword ngxDirectiveThirdParty fancyindex_footer
syn keyword ngxDirectiveThirdParty fancyindex_header
+syn keyword ngxDirectiveThirdParty fancyindex_show_path
+syn keyword ngxDirectiveThirdParty fancyindex_ignore
+syn keyword ngxDirectiveThirdParty fancyindex_hide_symlinks
syn keyword ngxDirectiveThirdParty fancyindex_localtime
-syn keyword ngxDirectiveThirdParty fancyindex_readme
-syn keyword ngxDirectiveThirdParty fancyindex_readme_mode
+syn keyword ngxDirectiveThirdParty fancyindex_time_format
+
+" Form Auth Module <https://github.com/veruu/ngx_form_auth>
+" Provides authentication and authorization with credentials submitted via POST request
+syn keyword ngxDirectiveThirdParty form_auth
+syn keyword ngxDirectiveThirdParty form_auth_pam_service
+syn keyword ngxDirectiveThirdParty form_auth_login
+syn keyword ngxDirectiveThirdParty form_auth_password
+syn keyword ngxDirectiveThirdParty form_auth_remote_user
+
+" Form Input Module <https://github.com/calio/form-input-nginx-module>
+" Reads HTTP POST and PUT request body encoded in "application/x-www-form-urlencoded" and parses the arguments into nginx variables.
+syn keyword ngxDirectiveThirdParty set_form_input
+syn keyword ngxDirectiveThirdParty set_form_input_multi
" GeoIP Module (DEPRECATED) <http://wiki.nginx.org/NginxHttp3rdPartyGeoIPModule>
" Country code lookups via the MaxMind GeoIP API.
-syn keyword ngxDirectiveThirdParty geoip_country_file
+syn keyword ngxDirectiveDeprecated geoip_country_file
-" Headers More Module <http://wiki.nginx.org/NginxHttpHeadersMoreModule>
+" GeoIP 2 Module <https://github.com/leev/ngx_http_geoip2_module>
+" Creates variables with values from the maxmind geoip2 databases based on the client IP
+syn keyword ngxDirectiveThirdParty geoip2
+
+" GridFS Module <https://github.com/mdirolf/nginx-gridfs>
+" Nginx module for serving files from MongoDB's GridFS
+syn keyword ngxDirectiveThirdParty gridfs
+
+" Headers More Module <https://github.com/openresty/headers-more-nginx-module>
" Set and clear input and output headers...more than "add"!
syn keyword ngxDirectiveThirdParty more_clear_headers
syn keyword ngxDirectiveThirdParty more_clear_input_headers
syn keyword ngxDirectiveThirdParty more_set_headers
syn keyword ngxDirectiveThirdParty more_set_input_headers
-" HTTP Push Module <http://pushmodule.slact.net/>
-" Turn Nginx into an adept long-polling HTTP Push (Comet) server.
-syn keyword ngxDirectiveThirdParty push_buffer_size
-syn keyword ngxDirectiveThirdParty push_listener
-syn keyword ngxDirectiveThirdParty push_message_timeout
-syn keyword ngxDirectiveThirdParty push_queue_messages
-syn keyword ngxDirectiveThirdParty push_sender
+" Health Checks Upstreams Module <https://www.nginx.com/resources/wiki/modules/healthcheck/>
+" Polls backends and if they respond with HTTP 200 + an optional request body, they are marked good. Otherwise, they are marked bad.
+syn keyword ngxDirectiveThirdParty healthcheck_enabled
+syn keyword ngxDirectiveThirdParty healthcheck_delay
+syn keyword ngxDirectiveThirdParty healthcheck_timeout
+syn keyword ngxDirectiveThirdParty healthcheck_failcount
+syn keyword ngxDirectiveThirdParty healthcheck_send
+syn keyword ngxDirectiveThirdParty healthcheck_expected
+syn keyword ngxDirectiveThirdParty healthcheck_buffer
+syn keyword ngxDirectiveThirdParty healthcheck_status
-" HTTP Redis Module <http://people.FreeBSD.ORG/~osa/ngx_http_redis-0.3.1.tar.gz>>
-" Redis <http://code.google.com/p/redis/> support.>
-syn keyword ngxDirectiveThirdParty redis_bind
-syn keyword ngxDirectiveThirdParty redis_buffer_size
-syn keyword ngxDirectiveThirdParty redis_connect_timeout
-syn keyword ngxDirectiveThirdParty redis_next_upstream
-syn keyword ngxDirectiveThirdParty redis_pass
-syn keyword ngxDirectiveThirdParty redis_read_timeout
-syn keyword ngxDirectiveThirdParty redis_send_timeout
+" HTTP Accounting Module <https://github.com/Lax/ngx_http_accounting_module>
+" Add traffic stat function to nginx. Useful for http accounting based on nginx configuration logic
+syn keyword ngxDirectiveThirdParty http_accounting
+syn keyword ngxDirectiveThirdParty http_accounting_log
+syn keyword ngxDirectiveThirdParty http_accounting_id
+syn keyword ngxDirectiveThirdParty http_accounting_interval
+syn keyword ngxDirectiveThirdParty http_accounting_perturb
-" HTTP JavaScript Module <http://wiki.github.com/kung-fu-tzu/ngx_http_js_module>
+" Nginx Digest Authentication module <https://github.com/atomx/nginx-http-auth-digest>
+" Digest Authentication for Nginx
+syn keyword ngxDirectiveThirdParty auth_digest
+syn keyword ngxDirectiveThirdParty auth_digest_user_file
+syn keyword ngxDirectiveThirdParty auth_digest_timeout
+syn keyword ngxDirectiveThirdParty auth_digest_expires
+syn keyword ngxDirectiveThirdParty auth_digest_replays
+syn keyword ngxDirectiveThirdParty auth_digest_shm_size
+
+" Auth PAM Module <https://github.com/sto/ngx_http_auth_pam_module>
+" HTTP Basic Authentication using PAM.
+syn keyword ngxDirectiveThirdParty auth_pam
+syn keyword ngxDirectiveThirdParty auth_pam_service_name
+
+" HTTP Auth Request Module <http://nginx.org/en/docs/http/ngx_http_auth_request_module.html>
+" Implements client authorization based on the result of a subrequest
+" syn keyword ngxDirectiveThirdParty auth_request
+" syn keyword ngxDirectiveThirdParty auth_request_set
+
+" HTTP Concatenation module for Nginx <https://github.com/alibaba/nginx-http-concat>
+" A Nginx module for concatenating files in a given context: CSS and JS files usually
+syn keyword ngxDirectiveThirdParty concat
+syn keyword ngxDirectiveThirdParty concat_types
+syn keyword ngxDirectiveThirdParty concat_unique
+syn keyword ngxDirectiveThirdParty concat_max_files
+syn keyword ngxDirectiveThirdParty concat_delimiter
+syn keyword ngxDirectiveThirdParty concat_ignore_file_error
+
+" HTTP Dynamic Upstream Module <https://github.com/yzprofile/ngx_http_dyups_module>
+" Update upstreams' config by restful interface
+syn keyword ngxDirectiveThirdParty dyups_interface
+syn keyword ngxDirectiveThirdParty dyups_read_msg_timeout
+syn keyword ngxDirectiveThirdParty dyups_shm_zone_size
+syn keyword ngxDirectiveThirdParty dyups_upstream_conf
+syn keyword ngxDirectiveThirdParty dyups_trylock
+
+" HTTP Footer If Filter Module <https://github.com/flygoast/ngx_http_footer_if_filter>
+" The ngx_http_footer_if_filter_module is used to add given content to the end of the response according to the condition specified.
+syn keyword ngxDirectiveThirdParty footer_if
+
+" HTTP Footer Filter Module <https://github.com/alibaba/nginx-http-footer-filter>
+" This module implements a body filter that adds a given string to the page footer.
+syn keyword ngxDirectiveThirdParty footer
+syn keyword ngxDirectiveThirdParty footer_types
+
+" HTTP Internal Redirect Module <https://github.com/flygoast/ngx_http_internal_redirect>
+" Make an internal redirect to the uri specified according to the condition specified.
+syn keyword ngxDirectiveThirdParty internal_redirect_if
+syn keyword ngxDirectiveThirdParty internal_redirect_if_no_postponed
+
+" HTTP JavaScript Module <https://github.com/peter-leonov/ngx_http_js_module>
" Embedding SpiderMonkey. Nearly full port on Perl module.
syn keyword ngxDirectiveThirdParty js
syn keyword ngxDirectiveThirdParty js_filter
@@ -664,12 +1015,152 @@
syn keyword ngxDirectiveThirdParty js_set
syn keyword ngxDirectiveThirdParty js_utf8
-" Log Request Speed <http://wiki.nginx.org/NginxHttpLogRequestSpeed>
-" Log the time it took to process each request.
-syn keyword ngxDirectiveThirdParty log_request_speed_filter
-syn keyword ngxDirectiveThirdParty log_request_speed_filter_timeout
+" HTTP Push Module (DEPRECATED) <http://pushmodule.slact.net/>
+" Turn Nginx into an adept long-polling HTTP Push (Comet) server.
+syn keyword ngxDirectiveDeprecated push_buffer_size
+syn keyword ngxDirectiveDeprecated push_listener
+syn keyword ngxDirectiveDeprecated push_message_timeout
+syn keyword ngxDirectiveDeprecated push_queue_messages
+syn keyword ngxDirectiveDeprecated push_sender
-" Memc Module <http://wiki.nginx.org/NginxHttpMemcModule>
+" HTTP Redis Module <https://www.nginx.com/resources/wiki/modules/redis/>
+" Redis <http://code.google.com/p/redis/> support.
+syn keyword ngxDirectiveThirdParty redis_bind
+syn keyword ngxDirectiveThirdParty redis_buffer_size
+syn keyword ngxDirectiveThirdParty redis_connect_timeout
+syn keyword ngxDirectiveThirdParty redis_next_upstream
+syn keyword ngxDirectiveThirdParty redis_pass
+syn keyword ngxDirectiveThirdParty redis_read_timeout
+syn keyword ngxDirectiveThirdParty redis_send_timeout
+
+" Iconv Module <https://github.com/calio/iconv-nginx-module>
+" A character conversion nginx module using libiconv
+syn keyword ngxDirectiveThirdParty set_iconv
+syn keyword ngxDirectiveThirdParty iconv_buffer_size
+syn keyword ngxDirectiveThirdParty iconv_filter
+
+" IP Blocker Module <https://github.com/tmthrgd/nginx-ip-blocker>
+" An efficient shared memory IP blocking system for nginx.
+syn keyword ngxDirectiveThirdParty ip_blocker
+
+" IP2Location Module <https://github.com/chrislim2888/ip2location-nginx>
+" Allows user to lookup for geolocation information using IP2Location database
+syn keyword ngxDirectiveThirdParty ip2location_database
+
+" JS Module <https://github.com/peter-leonov/ngx_http_js_module>
+" Reflect the nginx functionality in JS
+syn keyword ngxDirectiveThirdParty js
+syn keyword ngxDirectiveThirdParty js_access
+syn keyword ngxDirectiveThirdParty js_load
+syn keyword ngxDirectiveThirdParty js_set
+
+" Limit Upload Rate Module <https://github.com/cfsego/limit_upload_rate>
+" Limit client-upload rate when they are sending request bodies to you
+syn keyword ngxDirectiveThirdParty limit_upload_rate
+syn keyword ngxDirectiveThirdParty limit_upload_rate_after
+
+" Limit Upstream Module <https://github.com/cfsego/nginx-limit-upstream>
+" Limit the number of connections to upstream for NGINX
+syn keyword ngxDirectiveThirdParty limit_upstream_zone
+syn keyword ngxDirectiveThirdParty limit_upstream_conn
+syn keyword ngxDirectiveThirdParty limit_upstream_log_level
+
+" Log If Module <https://github.com/cfsego/ngx_log_if>
+" Conditional accesslog for nginx
+syn keyword ngxDirectiveThirdParty access_log_bypass_if
+
+" Log Request Speed (DEPRECATED) <http://wiki.nginx.org/NginxHttpLogRequestSpeed>
+" Log the time it took to process each request.
+syn keyword ngxDirectiveDeprecated log_request_speed_filter
+syn keyword ngxDirectiveDeprecated log_request_speed_filter_timeout
+
+" Log ZeroMQ Module <https://github.com/alticelabs/nginx-log-zmq>
+" ZeroMQ logger module for nginx
+syn keyword ngxDirectiveThirdParty log_zmq_server
+syn keyword ngxDirectiveThirdParty log_zmq_endpoint
+syn keyword ngxDirectiveThirdParty log_zmq_format
+syn keyword ngxDirectiveThirdParty log_zmq_off
+
+" Lower/UpperCase Module <https://github.com/replay/ngx_http_lower_upper_case>
+" This module simply uppercases or lowercases a string and saves it into a new variable.
+syn keyword ngxDirectiveThirdParty lower
+syn keyword ngxDirectiveThirdParty upper
+
+" Lua Upstream Module <https://github.com/openresty/lua-upstream-nginx-module>
+" Nginx C module to expose Lua API to ngx_lua for Nginx upstreams
+
+" Lua Module <https://github.com/openresty/lua-nginx-module>
+" Embed the Power of Lua into NGINX HTTP servers
+syn keyword ngxDirectiveThirdParty lua_use_default_type
+syn keyword ngxDirectiveThirdParty lua_malloc_trim
+syn keyword ngxDirectiveThirdParty lua_code_cache
+syn keyword ngxDirectiveThirdParty lua_regex_cache_max_entries
+syn keyword ngxDirectiveThirdParty lua_regex_match_limit
+syn keyword ngxDirectiveThirdParty lua_package_path
+syn keyword ngxDirectiveThirdParty lua_package_cpath
+syn keyword ngxDirectiveThirdParty init_by_lua
+syn keyword ngxDirectiveThirdParty init_by_lua_block
+syn keyword ngxDirectiveThirdParty init_by_lua_file
+syn keyword ngxDirectiveThirdParty init_worker_by_lua
+syn keyword ngxDirectiveThirdParty init_worker_by_lua_block
+syn keyword ngxDirectiveThirdParty init_worker_by_lua_file
+syn keyword ngxDirectiveThirdParty set_by_lua
+syn keyword ngxDirectiveThirdParty set_by_lua_block
+syn keyword ngxDirectiveThirdParty set_by_lua_file
+syn keyword ngxDirectiveThirdParty content_by_lua
+syn keyword ngxDirectiveThirdParty content_by_lua_block
+syn keyword ngxDirectiveThirdParty content_by_lua_file
+syn keyword ngxDirectiveThirdParty rewrite_by_lua
+syn keyword ngxDirectiveThirdParty rewrite_by_lua_block
+syn keyword ngxDirectiveThirdParty rewrite_by_lua_file
+syn keyword ngxDirectiveThirdParty access_by_lua
+syn keyword ngxDirectiveThirdParty access_by_lua_block
+syn keyword ngxDirectiveThirdParty access_by_lua_file
+syn keyword ngxDirectiveThirdParty header_filter_by_lua
+syn keyword ngxDirectiveThirdParty header_filter_by_lua_block
+syn keyword ngxDirectiveThirdParty header_filter_by_lua_file
+syn keyword ngxDirectiveThirdParty body_filter_by_lua
+syn keyword ngxDirectiveThirdParty body_filter_by_lua_block
+syn keyword ngxDirectiveThirdParty body_filter_by_lua_file
+syn keyword ngxDirectiveThirdParty log_by_lua
+syn keyword ngxDirectiveThirdParty log_by_lua_block
+syn keyword ngxDirectiveThirdParty log_by_lua_file
+syn keyword ngxDirectiveThirdParty balancer_by_lua_block
+syn keyword ngxDirectiveThirdParty balancer_by_lua_file
+syn keyword ngxDirectiveThirdParty lua_need_request_body
+syn keyword ngxDirectiveThirdParty ssl_certificate_by_lua_block
+syn keyword ngxDirectiveThirdParty ssl_certificate_by_lua_file
+syn keyword ngxDirectiveThirdParty ssl_session_fetch_by_lua_block
+syn keyword ngxDirectiveThirdParty ssl_session_fetch_by_lua_file
+syn keyword ngxDirectiveThirdParty ssl_session_store_by_lua_block
+syn keyword ngxDirectiveThirdParty ssl_session_store_by_lua_file
+syn keyword ngxDirectiveThirdParty lua_shared_dict
+syn keyword ngxDirectiveThirdParty lua_socket_connect_timeout
+syn keyword ngxDirectiveThirdParty lua_socket_send_timeout
+syn keyword ngxDirectiveThirdParty lua_socket_send_lowat
+syn keyword ngxDirectiveThirdParty lua_socket_read_timeout
+syn keyword ngxDirectiveThirdParty lua_socket_buffer_size
+syn keyword ngxDirectiveThirdParty lua_socket_pool_size
+syn keyword ngxDirectiveThirdParty lua_socket_keepalive_timeout
+syn keyword ngxDirectiveThirdParty lua_socket_log_errors
+syn keyword ngxDirectiveThirdParty lua_ssl_ciphers
+syn keyword ngxDirectiveThirdParty lua_ssl_crl
+syn keyword ngxDirectiveThirdParty lua_ssl_protocols
+syn keyword ngxDirectiveThirdParty lua_ssl_trusted_certificate
+syn keyword ngxDirectiveThirdParty lua_ssl_verify_depth
+syn keyword ngxDirectiveThirdParty lua_http10_buffering
+syn keyword ngxDirectiveThirdParty rewrite_by_lua_no_postpone
+syn keyword ngxDirectiveThirdParty access_by_lua_no_postpone
+syn keyword ngxDirectiveThirdParty lua_transform_underscores_in_response_headers
+syn keyword ngxDirectiveThirdParty lua_check_client_abort
+syn keyword ngxDirectiveThirdParty lua_max_pending_timers
+syn keyword ngxDirectiveThirdParty lua_max_running_timers
+
+" MD5 Filter Module <https://github.com/kainswor/nginx_md5_filter>
+" A content filter for nginx, which returns the md5 hash of the content otherwise returned.
+syn keyword ngxDirectiveThirdParty md5_filter
+
+" Memc Module <https://github.com/openresty/memc-nginx-module>
" An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.
syn keyword ngxDirectiveThirdParty memc_buffer_size
syn keyword ngxDirectiveThirdParty memc_cmds_allowed
@@ -682,65 +1173,596 @@
syn keyword ngxDirectiveThirdParty memc_upstream_fail_timeout
syn keyword ngxDirectiveThirdParty memc_upstream_max_fails
+" Mod Security Module <https://github.com/SpiderLabs/ModSecurity>
+" ModSecurity is an open source, cross platform web application firewall (WAF) engine
+syn keyword ngxDirectiveThirdParty ModSecurityConfig
+syn keyword ngxDirectiveThirdParty ModSecurityEnabled
+syn keyword ngxDirectiveThirdParty pool_context
+syn keyword ngxDirectiveThirdParty pool_context_hash_size
+
" Mogilefs Module <http://www.grid.net.ru/nginx/mogilefs.en.html>
-" Implements a MogileFS client, provides a replace to the Perlbal reverse proxy of the original MogileFS.
-syn keyword ngxDirectiveThirdParty mogilefs_connect_timeout
-syn keyword ngxDirectiveThirdParty mogilefs_domain
-syn keyword ngxDirectiveThirdParty mogilefs_methods
-syn keyword ngxDirectiveThirdParty mogilefs_noverify
+" MogileFS client for nginx web server.
syn keyword ngxDirectiveThirdParty mogilefs_pass
-syn keyword ngxDirectiveThirdParty mogilefs_read_timeout
-syn keyword ngxDirectiveThirdParty mogilefs_send_timeout
+syn keyword ngxDirectiveThirdParty mogilefs_methods
+syn keyword ngxDirectiveThirdParty mogilefs_domain
+syn keyword ngxDirectiveThirdParty mogilefs_class
syn keyword ngxDirectiveThirdParty mogilefs_tracker
+syn keyword ngxDirectiveThirdParty mogilefs_noverify
+syn keyword ngxDirectiveThirdParty mogilefs_connect_timeout
+syn keyword ngxDirectiveThirdParty mogilefs_send_timeout
+syn keyword ngxDirectiveThirdParty mogilefs_read_timeout
-" MP4 Streaming Lite Module <http://wiki.nginx.org/NginxMP4StreamingLite>
+" Mongo Module <https://github.com/simpl/ngx_mongo>
+" Upstream module that allows nginx to communicate directly with MongoDB database.
+syn keyword ngxDirectiveThirdParty mongo_auth
+syn keyword ngxDirectiveThirdParty mongo_pass
+syn keyword ngxDirectiveThirdParty mongo_query
+syn keyword ngxDirectiveThirdParty mongo_json
+syn keyword ngxDirectiveThirdParty mongo_bind
+syn keyword ngxDirectiveThirdParty mongo_connect_timeout
+syn keyword ngxDirectiveThirdParty mongo_send_timeout
+syn keyword ngxDirectiveThirdParty mongo_read_timeout
+syn keyword ngxDirectiveThirdParty mongo_buffering
+syn keyword ngxDirectiveThirdParty mongo_buffer_size
+syn keyword ngxDirectiveThirdParty mongo_buffers
+syn keyword ngxDirectiveThirdParty mongo_busy_buffers_size
+syn keyword ngxDirectiveThirdParty mongo_next_upstream
+
+" MP4 Streaming Lite Module <https://www.nginx.com/resources/wiki/modules/mp4_streaming/>
" Will seek to a certain time within H.264/MP4 files when provided with a 'start' parameter in the URL.
-syn keyword ngxDirectiveThirdParty mp4
+" syn keyword ngxDirectiveThirdParty mp4
-" Nginx Notice Module <http://xph.us/software/nginx-notice/>
+" NAXSI Module <https://github.com/nbs-system/naxsi>
+" NAXSI is an open-source, high performance, low rules maintenance WAF for NGINX
+syn keyword ngxDirectiveThirdParty DeniedUrl denied_url
+syn keyword ngxDirectiveThirdParty LearningMode learning_mode
+syn keyword ngxDirectiveThirdParty SecRulesEnabled rules_enabled
+syn keyword ngxDirectiveThirdParty SecRulesDisabled rules_disabled
+syn keyword ngxDirectiveThirdParty CheckRule check_rule
+syn keyword ngxDirectiveThirdParty BasicRule basic_rule
+syn keyword ngxDirectiveThirdParty MainRule main_rule
+syn keyword ngxDirectiveThirdParty LibInjectionSql libinjection_sql
+syn keyword ngxDirectiveThirdParty LibInjectionXss libinjection_xss
+
+" Nchan Module <https://nchan.slact.net/>
+" Fast, horizontally scalable, multiprocess pub/sub queuing server and proxy for HTTP, long-polling, Websockets and EventSource (SSE)
+syn keyword ngxDirectiveThirdParty nchan_channel_id
+syn keyword ngxDirectiveThirdParty nchan_channel_id_split_delimiter
+syn keyword ngxDirectiveThirdParty nchan_eventsource_event
+syn keyword ngxDirectiveThirdParty nchan_longpoll_multipart_response
+syn keyword ngxDirectiveThirdParty nchan_publisher
+syn keyword ngxDirectiveThirdParty nchan_publisher_channel_id
+syn keyword ngxDirectiveThirdParty nchan_publisher_upstream_request
+syn keyword ngxDirectiveThirdParty nchan_pubsub
+syn keyword ngxDirectiveThirdParty nchan_subscribe_request
+syn keyword ngxDirectiveThirdParty nchan_subscriber
+syn keyword ngxDirectiveThirdParty nchan_subscriber_channel_id
+syn keyword ngxDirectiveThirdParty nchan_subscriber_compound_etag_message_id
+syn keyword ngxDirectiveThirdParty nchan_subscriber_first_message
+syn keyword ngxDirectiveThirdParty nchan_subscriber_http_raw_stream_separator
+syn keyword ngxDirectiveThirdParty nchan_subscriber_last_message_id
+syn keyword ngxDirectiveThirdParty nchan_subscriber_message_id_custom_etag_header
+syn keyword ngxDirectiveThirdParty nchan_subscriber_timeout
+syn keyword ngxDirectiveThirdParty nchan_unsubscribe_request
+syn keyword ngxDirectiveThirdParty nchan_websocket_ping_interval
+syn keyword ngxDirectiveThirdParty nchan_authorize_request
+syn keyword ngxDirectiveThirdParty nchan_max_reserved_memory
+syn keyword ngxDirectiveThirdParty nchan_message_buffer_length
+syn keyword ngxDirectiveThirdParty nchan_message_timeout
+syn keyword ngxDirectiveThirdParty nchan_redis_idle_channel_cache_timeout
+syn keyword ngxDirectiveThirdParty nchan_redis_namespace
+syn keyword ngxDirectiveThirdParty nchan_redis_pass
+syn keyword ngxDirectiveThirdParty nchan_redis_ping_interval
+syn keyword ngxDirectiveThirdParty nchan_redis_server
+syn keyword ngxDirectiveThirdParty nchan_redis_storage_mode
+syn keyword ngxDirectiveThirdParty nchan_redis_url
+syn keyword ngxDirectiveThirdParty nchan_store_messages
+syn keyword ngxDirectiveThirdParty nchan_use_redis
+syn keyword ngxDirectiveThirdParty nchan_access_control_allow_origin
+syn keyword ngxDirectiveThirdParty nchan_channel_group
+syn keyword ngxDirectiveThirdParty nchan_channel_group_accounting
+syn keyword ngxDirectiveThirdParty nchan_group_location
+syn keyword ngxDirectiveThirdParty nchan_group_max_channels
+syn keyword ngxDirectiveThirdParty nchan_group_max_messages
+syn keyword ngxDirectiveThirdParty nchan_group_max_messages_disk
+syn keyword ngxDirectiveThirdParty nchan_group_max_messages_memory
+syn keyword ngxDirectiveThirdParty nchan_group_max_subscribers
+syn keyword ngxDirectiveThirdParty nchan_subscribe_existing_channels_only
+syn keyword ngxDirectiveThirdParty nchan_channel_event_string
+syn keyword ngxDirectiveThirdParty nchan_channel_events_channel_id
+syn keyword ngxDirectiveThirdParty nchan_stub_status
+syn keyword ngxDirectiveThirdParty nchan_max_channel_id_length
+syn keyword ngxDirectiveThirdParty nchan_max_channel_subscribers
+syn keyword ngxDirectiveThirdParty nchan_channel_timeout
+syn keyword ngxDirectiveThirdParty nchan_storage_engine
+
+" Nginx Notice Module <https://github.com/kr/nginx-notice>
" Serve static file to POST requests.
syn keyword ngxDirectiveThirdParty notice
syn keyword ngxDirectiveThirdParty notice_type
-" Phusion Passenger <http://www.modrails.com/documentation.html>
-" Easy and robust deployment of Ruby on Rails application on Apache and Nginx webservers.
-syn keyword ngxDirectiveThirdParty passenger_base_uri
-syn keyword ngxDirectiveThirdParty passenger_default_user
-syn keyword ngxDirectiveThirdParty passenger_enabled
-syn keyword ngxDirectiveThirdParty passenger_log_level
-syn keyword ngxDirectiveThirdParty passenger_max_instances_per_app
-syn keyword ngxDirectiveThirdParty passenger_max_pool_size
-syn keyword ngxDirectiveThirdParty passenger_pool_idle_time
+" OCSP Proxy Module <https://github.com/kyprizel/nginx_ocsp_proxy-module>
+" Nginx OCSP processing module designed for response caching
+syn keyword ngxDirectiveThirdParty ocsp_proxy
+syn keyword ngxDirectiveThirdParty ocsp_cache_timeout
+
+" Eval Module <https://github.com/openresty/nginx-eval-module>
+" Module for nginx web server evaluates response of proxy or memcached module into variables.
+syn keyword ngxDirectiveThirdParty eval
+syn keyword ngxDirectiveThirdParty eval_escalate
+syn keyword ngxDirectiveThirdParty eval_buffer_size
+syn keyword ngxDirectiveThirdParty eval_override_content_type
+syn keyword ngxDirectiveThirdParty eval_subrequest_in_memory
+
+" OpenSSL Version Module <https://github.com/apcera/nginx-openssl-version>
+" Nginx OpenSSL version check at startup
+syn keyword ngxDirectiveThirdParty openssl_version_minimum
+syn keyword ngxDirectiveThirdParty openssl_builddate_minimum
+
+" Owner Match Module <https://www.nginx.com/resources/wiki/modules/owner_match/>
+" Control access for specific owners and groups of files
+syn keyword ngxDirectiveThirdParty omallow
+syn keyword ngxDirectiveThirdParty omdeny
+
+" Accept Language Module <https://www.nginx.com/resources/wiki/modules/accept_language/>
+" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
+syn keyword ngxDirectiveThirdParty pagespeed
+
+" PHP Memcache Standard Balancer Module <https://github.com/replay/ngx_http_php_memcache_standard_balancer>
+" Loadbalancer that is compatible to the standard loadbalancer in the php-memcache module
+syn keyword ngxDirectiveThirdParty hash_key
+
+" PHP Session Module <https://github.com/replay/ngx_http_php_session>
+" Nginx module to parse php sessions
+syn keyword ngxDirectiveThirdParty php_session_parse
+syn keyword ngxDirectiveThirdParty php_session_strip_formatting
+
+" Phusion Passenger Module <https://www.phusionpassenger.com/library/config/nginx/>
+" Passenger is an open source web application server.
syn keyword ngxDirectiveThirdParty passenger_root
+syn keyword ngxDirectiveThirdParty passenger_enabled
+syn keyword ngxDirectiveThirdParty passenger_base_uri
+syn keyword ngxDirectiveThirdParty passenger_document_root
syn keyword ngxDirectiveThirdParty passenger_ruby
-syn keyword ngxDirectiveThirdParty passenger_use_global_queue
+syn keyword ngxDirectiveThirdParty passenger_python
+syn keyword ngxDirectiveThirdParty passenger_nodejs
+syn keyword ngxDirectiveThirdParty passenger_meteor_app_settings
+syn keyword ngxDirectiveThirdParty passenger_app_env
+syn keyword ngxDirectiveThirdParty passenger_app_root
+syn keyword ngxDirectiveThirdParty passenger_app_group_name
+syn keyword ngxDirectiveThirdParty passenger_app_type
+syn keyword ngxDirectiveThirdParty passenger_startup_file
+syn keyword ngxDirectiveThirdParty passenger_restart_dir
+syn keyword ngxDirectiveThirdParty passenger_spawn_method
+syn keyword ngxDirectiveThirdParty passenger_env_var
+syn keyword ngxDirectiveThirdParty passenger_load_shell_envvars
+syn keyword ngxDirectiveThirdParty passenger_rolling_restarts
+syn keyword ngxDirectiveThirdParty passenger_resist_deployment_errors
syn keyword ngxDirectiveThirdParty passenger_user_switching
-syn keyword ngxDirectiveThirdParty rack_env
-syn keyword ngxDirectiveThirdParty rails_app_spawner_idle_time
-syn keyword ngxDirectiveThirdParty rails_env
-syn keyword ngxDirectiveThirdParty rails_framework_spawner_idle_time
-syn keyword ngxDirectiveThirdParty rails_spawn_method
+syn keyword ngxDirectiveThirdParty passenger_user
+syn keyword ngxDirectiveThirdParty passenger_group
+syn keyword ngxDirectiveThirdParty passenger_default_user
+syn keyword ngxDirectiveThirdParty passenger_default_group
+syn keyword ngxDirectiveThirdParty passenger_show_version_in_header
+syn keyword ngxDirectiveThirdParty passenger_friendly_error_pages
+syn keyword ngxDirectiveThirdParty passenger_disable_security_update_check
+syn keyword ngxDirectiveThirdParty passenger_security_update_check_proxy
+syn keyword ngxDirectiveThirdParty passenger_max_pool_size
+syn keyword ngxDirectiveThirdParty passenger_min_instances
+syn keyword ngxDirectiveThirdParty passenger_max_instances
+syn keyword ngxDirectiveThirdParty passenger_max_instances_per_app
+syn keyword ngxDirectiveThirdParty passenger_pool_idle_time
+syn keyword ngxDirectiveThirdParty passenger_max_preloader_idle_time
+syn keyword ngxDirectiveThirdParty passenger_force_max_concurrent_requests_per_process
+syn keyword ngxDirectiveThirdParty passenger_start_timeout
+syn keyword ngxDirectiveThirdParty passenger_concurrency_model
+syn keyword ngxDirectiveThirdParty passenger_thread_count
+syn keyword ngxDirectiveThirdParty passenger_max_requests
+syn keyword ngxDirectiveThirdParty passenger_max_request_time
+syn keyword ngxDirectiveThirdParty passenger_memory_limit
+syn keyword ngxDirectiveThirdParty passenger_stat_throttle_rate
+syn keyword ngxDirectiveThirdParty passenger_core_file_descriptor_ulimit
+syn keyword ngxDirectiveThirdParty passenger_app_file_descriptor_ulimit
+syn keyword ngxDirectiveThirdParty passenger_pre_start
+syn keyword ngxDirectiveThirdParty passenger_set_header
+syn keyword ngxDirectiveThirdParty passenger_max_request_queue_size
+syn keyword ngxDirectiveThirdParty passenger_request_queue_overflow_status_code
+syn keyword ngxDirectiveThirdParty passenger_sticky_sessions
+syn keyword ngxDirectiveThirdParty passenger_sticky_sessions_cookie_name
+syn keyword ngxDirectiveThirdParty passenger_abort_websockets_on_process_shutdown
+syn keyword ngxDirectiveThirdParty passenger_ignore_client_abort
+syn keyword ngxDirectiveThirdParty passenger_intercept_errors
+syn keyword ngxDirectiveThirdParty passenger_pass_header
+syn keyword ngxDirectiveThirdParty passenger_ignore_headers
+syn keyword ngxDirectiveThirdParty passenger_headers_hash_bucket_size
+syn keyword ngxDirectiveThirdParty passenger_headers_hash_max_size
+syn keyword ngxDirectiveThirdParty passenger_buffer_response
+syn keyword ngxDirectiveThirdParty passenger_response_buffer_high_watermark
+syn keyword ngxDirectiveThirdParty passenger_buffer_size, passenger_buffers, passenger_busy_buffers_size
+syn keyword ngxDirectiveThirdParty passenger_socket_backlog
+syn keyword ngxDirectiveThirdParty passenger_log_level
+syn keyword ngxDirectiveThirdParty passenger_log_file
+syn keyword ngxDirectiveThirdParty passenger_file_descriptor_log_file
+syn keyword ngxDirectiveThirdParty passenger_debugger
+syn keyword ngxDirectiveThirdParty passenger_instance_registry_dir
+syn keyword ngxDirectiveThirdParty passenger_data_buffer_dir
+syn keyword ngxDirectiveThirdParty passenger_fly_with
+syn keyword ngxDirectiveThirdParty union_station_support
+syn keyword ngxDirectiveThirdParty union_station_key
+syn keyword ngxDirectiveThirdParty union_station_proxy_address
+syn keyword ngxDirectiveThirdParty union_station_filter
+syn keyword ngxDirectiveThirdParty union_station_gateway_address
+syn keyword ngxDirectiveThirdParty union_station_gateway_port
+syn keyword ngxDirectiveThirdParty union_station_gateway_cert
+syn keyword ngxDirectiveDeprecated rails_spawn_method
+syn keyword ngxDirectiveDeprecated passenger_debug_log_file
-" RDS JSON Module <http://github.com/agentzh/rds-json-nginx-module>
-" Help ngx_drizzle and other DBD modules emit JSON data.
+" Postgres Module <http://labs.frickle.com/nginx_ngx_postgres/>
+" Upstream module that allows nginx to communicate directly with PostgreSQL database.
+syn keyword ngxDirectiveThirdParty postgres_server
+syn keyword ngxDirectiveThirdParty postgres_keepalive
+syn keyword ngxDirectiveThirdParty postgres_pass
+syn keyword ngxDirectiveThirdParty postgres_query
+syn keyword ngxDirectiveThirdParty postgres_rewrite
+syn keyword ngxDirectiveThirdParty postgres_output
+syn keyword ngxDirectiveThirdParty postgres_set
+syn keyword ngxDirectiveThirdParty postgres_escape
+syn keyword ngxDirectiveThirdParty postgres_connect_timeout
+syn keyword ngxDirectiveThirdParty postgres_result_timeout
+
+" Pubcookie Module <https://www.vanko.me/book/page/pubcookie-module-nginx>
+" Authorizes users using encrypted cookies
+syn keyword ngxDirectiveThirdParty pubcookie_inactive_expire
+syn keyword ngxDirectiveThirdParty pubcookie_hard_expire
+syn keyword ngxDirectiveThirdParty pubcookie_app_id
+syn keyword ngxDirectiveThirdParty pubcookie_dir_depth
+syn keyword ngxDirectiveThirdParty pubcookie_catenate_app_ids
+syn keyword ngxDirectiveThirdParty pubcookie_app_srv_id
+syn keyword ngxDirectiveThirdParty pubcookie_login
+syn keyword ngxDirectiveThirdParty pubcookie_login_method
+syn keyword ngxDirectiveThirdParty pubcookie_post
+syn keyword ngxDirectiveThirdParty pubcookie_domain
+syn keyword ngxDirectiveThirdParty pubcookie_granting_cert_file
+syn keyword ngxDirectiveThirdParty pubcookie_session_key_file
+syn keyword ngxDirectiveThirdParty pubcookie_session_cert_file
+syn keyword ngxDirectiveThirdParty pubcookie_crypt_key_file
+syn keyword ngxDirectiveThirdParty pubcookie_end_session
+syn keyword ngxDirectiveThirdParty pubcookie_encryption
+syn keyword ngxDirectiveThirdParty pubcookie_session_reauth
+syn keyword ngxDirectiveThirdParty pubcookie_auth_type_names
+syn keyword ngxDirectiveThirdParty pubcookie_no_prompt
+syn keyword ngxDirectiveThirdParty pubcookie_on_demand
+syn keyword ngxDirectiveThirdParty pubcookie_addl_request
+syn keyword ngxDirectiveThirdParty pubcookie_no_obscure_cookies
+syn keyword ngxDirectiveThirdParty pubcookie_no_clean_creds
+syn keyword ngxDirectiveThirdParty pubcookie_egd_device
+syn keyword ngxDirectiveThirdParty pubcookie_no_blank
+syn keyword ngxDirectiveThirdParty pubcookie_super_debug
+syn keyword ngxDirectiveThirdParty pubcookie_set_remote_user
+
+" Push Stream Module <https://github.com/wandenberg/nginx-push-stream-module>
+" A pure stream http push technology for your Nginx setup
+syn keyword ngxDirectiveThirdParty push_stream_channels_statistics
+syn keyword ngxDirectiveThirdParty push_stream_publisher
+syn keyword ngxDirectiveThirdParty push_stream_subscriber
+syn keyword ngxDirectiveThirdParty push_stream_shared_memory_size
+syn keyword ngxDirectiveThirdParty push_stream_channel_deleted_message_text
+syn keyword ngxDirectiveThirdParty push_stream_channel_inactivity_time
+syn keyword ngxDirectiveThirdParty push_stream_ping_message_text
+syn keyword ngxDirectiveThirdParty push_stream_timeout_with_body
+syn keyword ngxDirectiveThirdParty push_stream_message_ttl
+syn keyword ngxDirectiveThirdParty push_stream_max_subscribers_per_channel
+syn keyword ngxDirectiveThirdParty push_stream_max_messages_stored_per_channel
+syn keyword ngxDirectiveThirdParty push_stream_max_channel_id_length
+syn keyword ngxDirectiveThirdParty push_stream_max_number_of_channels
+syn keyword ngxDirectiveThirdParty push_stream_max_number_of_wildcard_channels
+syn keyword ngxDirectiveThirdParty push_stream_wildcard_channel_prefix
+syn keyword ngxDirectiveThirdParty push_stream_events_channel_id
+syn keyword ngxDirectiveThirdParty push_stream_channels_path
+syn keyword ngxDirectiveThirdParty push_stream_store_messages
+syn keyword ngxDirectiveThirdParty push_stream_channel_info_on_publish
+syn keyword ngxDirectiveThirdParty push_stream_authorized_channels_only
+syn keyword ngxDirectiveThirdParty push_stream_header_template_file
+syn keyword ngxDirectiveThirdParty push_stream_header_template
+syn keyword ngxDirectiveThirdParty push_stream_message_template
+syn keyword ngxDirectiveThirdParty push_stream_footer_template
+syn keyword ngxDirectiveThirdParty push_stream_wildcard_channel_max_qtd
+syn keyword ngxDirectiveThirdParty push_stream_ping_message_interval
+syn keyword ngxDirectiveThirdParty push_stream_subscriber_connection_ttl
+syn keyword ngxDirectiveThirdParty push_stream_longpolling_connection_ttl
+syn keyword ngxDirectiveThirdParty push_stream_websocket_allow_publish
+syn keyword ngxDirectiveThirdParty push_stream_last_received_message_time
+syn keyword ngxDirectiveThirdParty push_stream_last_received_message_tag
+syn keyword ngxDirectiveThirdParty push_stream_last_event_id
+syn keyword ngxDirectiveThirdParty push_stream_user_agent
+syn keyword ngxDirectiveThirdParty push_stream_padding_by_user_agent
+syn keyword ngxDirectiveThirdParty push_stream_allowed_origins
+syn keyword ngxDirectiveThirdParty push_stream_allow_connections_to_events_channel
+
+" rDNS Module <https://github.com/flant/nginx-http-rdns>
+" Make a reverse DNS (rDNS) lookup for incoming connection and provides simple access control of incoming hostname by allow/deny rules
+syn keyword ngxDirectiveThirdParty rdns
+syn keyword ngxDirectiveThirdParty rdns_allow
+syn keyword ngxDirectiveThirdParty rdns_deny
+
+" RDS CSV Module <https://github.com/openresty/rds-csv-nginx-module>
+" Nginx output filter module to convert Resty-DBD-Streams (RDS) to Comma-Separated Values (CSV)
+syn keyword ngxDirectiveThirdParty rds_csv
+syn keyword ngxDirectiveThirdParty rds_csv_row_terminator
+syn keyword ngxDirectiveThirdParty rds_csv_field_separator
+syn keyword ngxDirectiveThirdParty rds_csv_field_name_header
+syn keyword ngxDirectiveThirdParty rds_csv_content_type
+syn keyword ngxDirectiveThirdParty rds_csv_buffer_size
+
+" RDS JSON Module <https://github.com/openresty/rds-json-nginx-module>
+" An output filter that formats Resty DBD Streams generated by ngx_drizzle and others to JSON
syn keyword ngxDirectiveThirdParty rds_json
-syn keyword ngxDirectiveThirdParty rds_json_content_type
+syn keyword ngxDirectiveThirdParty rds_json_buffer_size
syn keyword ngxDirectiveThirdParty rds_json_format
+syn keyword ngxDirectiveThirdParty rds_json_root
+syn keyword ngxDirectiveThirdParty rds_json_success_property
+syn keyword ngxDirectiveThirdParty rds_json_user_property
+syn keyword ngxDirectiveThirdParty rds_json_errcode_key
+syn keyword ngxDirectiveThirdParty rds_json_errstr_key
syn keyword ngxDirectiveThirdParty rds_json_ret
+syn keyword ngxDirectiveThirdParty rds_json_content_type
-" RRD Graph Module <http://wiki.nginx.org/NginxNgx_rrd_graph>
+" Redis Module <https://www.nginx.com/resources/wiki/modules/redis/>
+" Use this module to perform simple caching
+syn keyword ngxDirectiveThirdParty redis_pass
+syn keyword ngxDirectiveThirdParty redis_bind
+syn keyword ngxDirectiveThirdParty redis_connect_timeout
+syn keyword ngxDirectiveThirdParty redis_read_timeout
+syn keyword ngxDirectiveThirdParty redis_send_timeout
+syn keyword ngxDirectiveThirdParty redis_buffer_size
+syn keyword ngxDirectiveThirdParty redis_next_upstream
+syn keyword ngxDirectiveThirdParty redis_gzip_flag
+
+" Redis 2 Module <https://github.com/openresty/redis2-nginx-module>
+" Nginx upstream module for the Redis 2.0 protocol
+syn keyword ngxDirectiveThirdParty redis2_query
+syn keyword ngxDirectiveThirdParty redis2_raw_query
+syn keyword ngxDirectiveThirdParty redis2_raw_queries
+syn keyword ngxDirectiveThirdParty redis2_literal_raw_query
+syn keyword ngxDirectiveThirdParty redis2_pass
+syn keyword ngxDirectiveThirdParty redis2_connect_timeout
+syn keyword ngxDirectiveThirdParty redis2_send_timeout
+syn keyword ngxDirectiveThirdParty redis2_read_timeout
+syn keyword ngxDirectiveThirdParty redis2_buffer_size
+syn keyword ngxDirectiveThirdParty redis2_next_upstream
+
+" Replace Filter Module <https://github.com/openresty/replace-filter-nginx-module>
+" Streaming regular expression replacement in response bodies
+syn keyword ngxDirectiveThirdParty replace_filter
+syn keyword ngxDirectiveThirdParty replace_filter_types
+syn keyword ngxDirectiveThirdParty replace_filter_max_buffered_size
+syn keyword ngxDirectiveThirdParty replace_filter_last_modified
+syn keyword ngxDirectiveThirdParty replace_filter_skip
+
+" Roboo Module <https://github.com/yuri-gushin/Roboo>
+" HTTP Robot Mitigator
+
+" RRD Graph Module <https://www.nginx.com/resources/wiki/modules/rrd_graph/>
" This module provides an HTTP interface to RRDtool's graphing facilities.
syn keyword ngxDirectiveThirdParty rrd_graph
syn keyword ngxDirectiveThirdParty rrd_graph_root
-" Secure Download <http://wiki.nginx.org/NginxHttpSecureDownload>
-" Create expiring links.
-syn keyword ngxDirectiveThirdParty secure_download
-syn keyword ngxDirectiveThirdParty secure_download_fail_location
-syn keyword ngxDirectiveThirdParty secure_download_path_mode
-syn keyword ngxDirectiveThirdParty secure_download_secret
+" RTMP Module <https://github.com/arut/nginx-rtmp-module>
+" NGINX-based Media Streaming Server
+syn keyword ngxDirectiveThirdParty rtmp
+" syn keyword ngxDirectiveThirdParty server
+" syn keyword ngxDirectiveThirdParty listen
+syn keyword ngxDirectiveThirdParty application
+" syn keyword ngxDirectiveThirdParty timeout
+syn keyword ngxDirectiveThirdParty ping
+syn keyword ngxDirectiveThirdParty ping_timeout
+syn keyword ngxDirectiveThirdParty max_streams
+syn keyword ngxDirectiveThirdParty ack_window
+syn keyword ngxDirectiveThirdParty chunk_size
+syn keyword ngxDirectiveThirdParty max_queue
+syn keyword ngxDirectiveThirdParty max_message
+syn keyword ngxDirectiveThirdParty out_queue
+syn keyword ngxDirectiveThirdParty out_cork
+" syn keyword ngxDirectiveThirdParty allow
+" syn keyword ngxDirectiveThirdParty deny
+syn keyword ngxDirectiveThirdParty exec_push
+syn keyword ngxDirectiveThirdParty exec_pull
+syn keyword ngxDirectiveThirdParty exec
+syn keyword ngxDirectiveThirdParty exec_options
+syn keyword ngxDirectiveThirdParty exec_static
+syn keyword ngxDirectiveThirdParty exec_kill_signal
+syn keyword ngxDirectiveThirdParty respawn
+syn keyword ngxDirectiveThirdParty respawn_timeout
+syn keyword ngxDirectiveThirdParty exec_publish
+syn keyword ngxDirectiveThirdParty exec_play
+syn keyword ngxDirectiveThirdParty exec_play_done
+syn keyword ngxDirectiveThirdParty exec_publish_done
+syn keyword ngxDirectiveThirdParty exec_record_done
+syn keyword ngxDirectiveThirdParty live
+syn keyword ngxDirectiveThirdParty meta
+syn keyword ngxDirectiveThirdParty interleave
+syn keyword ngxDirectiveThirdParty wait_key
+syn keyword ngxDirectiveThirdParty wait_video
+syn keyword ngxDirectiveThirdParty publish_notify
+syn keyword ngxDirectiveThirdParty drop_idle_publisher
+syn keyword ngxDirectiveThirdParty sync
+syn keyword ngxDirectiveThirdParty play_restart
+syn keyword ngxDirectiveThirdParty idle_streams
+syn keyword ngxDirectiveThirdParty record
+syn keyword ngxDirectiveThirdParty record_path
+syn keyword ngxDirectiveThirdParty record_suffix
+syn keyword ngxDirectiveThirdParty record_unique
+syn keyword ngxDirectiveThirdParty record_append
+syn keyword ngxDirectiveThirdParty record_lock
+syn keyword ngxDirectiveThirdParty record_max_size
+syn keyword ngxDirectiveThirdParty record_max_frames
+syn keyword ngxDirectiveThirdParty record_interval
+syn keyword ngxDirectiveThirdParty recorder
+syn keyword ngxDirectiveThirdParty record_notify
+syn keyword ngxDirectiveThirdParty play
+syn keyword ngxDirectiveThirdParty play_temp_path
+syn keyword ngxDirectiveThirdParty play_local_path
+syn keyword ngxDirectiveThirdParty pull
+syn keyword ngxDirectiveThirdParty push
+syn keyword ngxDirectiveThirdParty push_reconnect
+syn keyword ngxDirectiveThirdParty session_relay
+syn keyword ngxDirectiveThirdParty on_connect
+syn keyword ngxDirectiveThirdParty on_play
+syn keyword ngxDirectiveThirdParty on_publish
+syn keyword ngxDirectiveThirdParty on_done
+syn keyword ngxDirectiveThirdParty on_play_done
+syn keyword ngxDirectiveThirdParty on_publish_done
+syn keyword ngxDirectiveThirdParty on_record_done
+syn keyword ngxDirectiveThirdParty on_update
+syn keyword ngxDirectiveThirdParty notify_update_timeout
+syn keyword ngxDirectiveThirdParty notify_update_strict
+syn keyword ngxDirectiveThirdParty notify_relay_redirect
+syn keyword ngxDirectiveThirdParty notify_method
+syn keyword ngxDirectiveThirdParty hls
+syn keyword ngxDirectiveThirdParty hls_path
+syn keyword ngxDirectiveThirdParty hls_fragment
+syn keyword ngxDirectiveThirdParty hls_playlist_length
+syn keyword ngxDirectiveThirdParty hls_sync
+syn keyword ngxDirectiveThirdParty hls_continuous
+syn keyword ngxDirectiveThirdParty hls_nested
+syn keyword ngxDirectiveThirdParty hls_base_url
+syn keyword ngxDirectiveThirdParty hls_cleanup
+syn keyword ngxDirectiveThirdParty hls_fragment_naming
+syn keyword ngxDirectiveThirdParty hls_fragment_slicing
+syn keyword ngxDirectiveThirdParty hls_variant
+syn keyword ngxDirectiveThirdParty hls_type
+syn keyword ngxDirectiveThirdParty hls_keys
+syn keyword ngxDirectiveThirdParty hls_key_path
+syn keyword ngxDirectiveThirdParty hls_key_url
+syn keyword ngxDirectiveThirdParty hls_fragments_per_key
+syn keyword ngxDirectiveThirdParty dash
+syn keyword ngxDirectiveThirdParty dash_path
+syn keyword ngxDirectiveThirdParty dash_fragment
+syn keyword ngxDirectiveThirdParty dash_playlist_length
+syn keyword ngxDirectiveThirdParty dash_nested
+syn keyword ngxDirectiveThirdParty dash_cleanup
+" syn keyword ngxDirectiveThirdParty access_log
+" syn keyword ngxDirectiveThirdParty log_format
+syn keyword ngxDirectiveThirdParty max_connections
+syn keyword ngxDirectiveThirdParty rtmp_stat
+syn keyword ngxDirectiveThirdParty rtmp_stat_stylesheet
+syn keyword ngxDirectiveThirdParty rtmp_auto_push
+syn keyword ngxDirectiveThirdParty rtmp_auto_push_reconnect
+syn keyword ngxDirectiveThirdParty rtmp_socket_dir
+syn keyword ngxDirectiveThirdParty rtmp_control
-" SlowFS Cache Module <http://labs.frickle.com/nginx_ngx_slowfs_cache/>
+" RTMPT Module <https://github.com/kwojtek/nginx-rtmpt-proxy-module>
+" Module for nginx to proxy rtmp using http protocol
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_target
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_rtmp_timeout
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_http_timeout
+syn keyword ngxDirectiveThirdParty rtmpt_proxy
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_stat
+syn keyword ngxDirectiveThirdParty rtmpt_proxy_stylesheet
+
+" Syntactically Awesome Module <https://github.com/mneudert/sass-nginx-module>
+" Providing on-the-fly compiling of Sass files as an NGINX module.
+syn keyword ngxDirectiveThirdParty sass_compile
+syn keyword ngxDirectiveThirdParty sass_error_log
+syn keyword ngxDirectiveThirdParty sass_include_path
+syn keyword ngxDirectiveThirdParty sass_indent
+syn keyword ngxDirectiveThirdParty sass_is_indented_syntax
+syn keyword ngxDirectiveThirdParty sass_linefeed
+syn keyword ngxDirectiveThirdParty sass_precision
+syn keyword ngxDirectiveThirdParty sass_output_style
+syn keyword ngxDirectiveThirdParty sass_source_comments
+syn keyword ngxDirectiveThirdParty sass_source_map_embed
+
+" Secure Download Module <https://www.nginx.com/resources/wiki/modules/secure_download/>
+" Enables you to create links which are only valid until a certain datetime is reached
+syn keyword ngxDirectiveThirdParty secure_download
+syn keyword ngxDirectiveThirdParty secure_download_secret
+syn keyword ngxDirectiveThirdParty secure_download_path_mode
+
+" Selective Cache Purge Module <https://github.com/wandenberg/nginx-selective-cache-purge-module>
+" A module to purge cache by GLOB patterns. The supported patterns are the same as supported by Redis.
+syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_unix_socket
+syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_host
+syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_port
+syn keyword ngxDirectiveThirdParty selective_cache_purge_redis_database
+syn keyword ngxDirectiveThirdParty selective_cache_purge_query
+
+" Set cconv Module <https://github.com/liseen/set-cconv-nginx-module>
+" Cconv rewrite set commands
+syn keyword ngxDirectiveThirdParty set_cconv_to_simp
+syn keyword ngxDirectiveThirdParty set_cconv_to_trad
+syn keyword ngxDirectiveThirdParty set_pinyin_to_normal
+
+" Set Hash Module <https://github.com/simpl/ngx_http_set_hash>
+" Nginx module that allows the setting of variables to the value of a variety of hashes
+syn keyword ngxDirectiveThirdParty set_md5
+syn keyword ngxDirectiveThirdParty set_md5_upper
+syn keyword ngxDirectiveThirdParty set_murmur2
+syn keyword ngxDirectiveThirdParty set_murmur2_upper
+syn keyword ngxDirectiveThirdParty set_sha1
+syn keyword ngxDirectiveThirdParty set_sha1_upper
+
+" Set Lang Module <https://github.com/simpl/ngx_http_set_lang>
+" Provides a variety of ways for setting a variable denoting the langauge that content should be returned in.
+syn keyword ngxDirectiveThirdParty set_lang
+syn keyword ngxDirectiveThirdParty set_lang_method
+syn keyword ngxDirectiveThirdParty lang_cookie
+syn keyword ngxDirectiveThirdParty lang_get_var
+syn keyword ngxDirectiveThirdParty lang_list
+syn keyword ngxDirectiveThirdParty lang_post_var
+syn keyword ngxDirectiveThirdParty lang_host
+syn keyword ngxDirectiveThirdParty lang_referer
+
+" Set Misc Module <https://github.com/openresty/set-misc-nginx-module>
+" Various set_xxx directives added to nginx's rewrite module
+syn keyword ngxDirectiveThirdParty set_if_empty
+syn keyword ngxDirectiveThirdParty set_quote_sql_str
+syn keyword ngxDirectiveThirdParty set_quote_pgsql_str
+syn keyword ngxDirectiveThirdParty set_quote_json_str
+syn keyword ngxDirectiveThirdParty set_unescape_uri
+syn keyword ngxDirectiveThirdParty set_escape_uri
+syn keyword ngxDirectiveThirdParty set_hashed_upstream
+syn keyword ngxDirectiveThirdParty set_encode_base32
+syn keyword ngxDirectiveThirdParty set_base32_padding
+syn keyword ngxDirectiveThirdParty set_misc_base32_padding
+syn keyword ngxDirectiveThirdParty set_base32_alphabet
+syn keyword ngxDirectiveThirdParty set_decode_base32
+syn keyword ngxDirectiveThirdParty set_encode_base64
+syn keyword ngxDirectiveThirdParty set_decode_base64
+syn keyword ngxDirectiveThirdParty set_encode_hex
+syn keyword ngxDirectiveThirdParty set_decode_hex
+syn keyword ngxDirectiveThirdParty set_sha1
+syn keyword ngxDirectiveThirdParty set_md5
+syn keyword ngxDirectiveThirdParty set_hmac_sha1
+syn keyword ngxDirectiveThirdParty set_random
+syn keyword ngxDirectiveThirdParty set_secure_random_alphanum
+syn keyword ngxDirectiveThirdParty set_secure_random_lcalpha
+syn keyword ngxDirectiveThirdParty set_rotate
+syn keyword ngxDirectiveThirdParty set_local_today
+syn keyword ngxDirectiveThirdParty set_formatted_gmt_time
+syn keyword ngxDirectiveThirdParty set_formatted_local_time
+
+" SFlow Module <https://github.com/sflow/nginx-sflow-module>
+" A binary, random-sampling nginx module designed for: lightweight, centralized, continuous, real-time monitoring of very large and very busy web farms.
+syn keyword ngxDirectiveThirdParty sflow
+
+" Shibboleth Module <https://github.com/nginx-shib/nginx-http-shibboleth>
+" Shibboleth auth request module for nginx
+syn keyword ngxDirectiveThirdParty shib_request
+syn keyword ngxDirectiveThirdParty shib_request_set
+syn keyword ngxDirectiveThirdParty shib_request_use_headers
+
+" Slice Module <https://github.com/alibaba/nginx-http-slice>
+" Nginx module for serving a file in slices (reverse byte-range)
+" syn keyword ngxDirectiveThirdParty slice
+syn keyword ngxDirectiveThirdParty slice_arg_begin
+syn keyword ngxDirectiveThirdParty slice_arg_end
+syn keyword ngxDirectiveThirdParty slice_header
+syn keyword ngxDirectiveThirdParty slice_footer
+syn keyword ngxDirectiveThirdParty slice_header_first
+syn keyword ngxDirectiveThirdParty slice_footer_last
+
+" SlowFS Cache Module <https://github.com/FRiCKLE/ngx_slowfs_cache/>
" Module adding ability to cache static files.
syn keyword ngxDirectiveThirdParty slowfs_big_file_size
syn keyword ngxDirectiveThirdParty slowfs_cache
@@ -751,16 +1773,140 @@
syn keyword ngxDirectiveThirdParty slowfs_cache_valid
syn keyword ngxDirectiveThirdParty slowfs_temp_path
-" Strip Module <http://wiki.nginx.org/NginxHttpStripModule>
+" Small Light Module <https://github.com/cubicdaiya/ngx_small_light>
+" Dynamic Image Transformation Module For nginx.
+syn keyword ngxDirectiveThirdParty small_light
+syn keyword ngxDirectiveThirdParty small_light_getparam_mode
+syn keyword ngxDirectiveThirdParty small_light_material_dir
+syn keyword ngxDirectiveThirdParty small_light_pattern_define
+syn keyword ngxDirectiveThirdParty small_light_radius_max
+syn keyword ngxDirectiveThirdParty small_light_sigma_max
+syn keyword ngxDirectiveThirdParty small_light_imlib2_temp_dir
+syn keyword ngxDirectiveThirdParty small_light_buffer
+
+" Sorted Querystring Filter Module <https://github.com/wandenberg/nginx-sorted-querystring-module>
+" Nginx module to expose querystring parameters sorted in a variable to be used on cache_key as example
+syn keyword ngxDirectiveThirdParty sorted_querystring_filter_parameter
+
+" Sphinx2 Module <https://github.com/reeteshranjan/sphinx2-nginx-module>
+" Nginx upstream module for Sphinx 2.x
+syn keyword ngxDirectiveThirdParty sphinx2_pass
+syn keyword ngxDirectiveThirdParty sphinx2_bind
+syn keyword ngxDirectiveThirdParty sphinx2_connect_timeout
+syn keyword ngxDirectiveThirdParty sphinx2_send_timeout
+syn keyword ngxDirectiveThirdParty sphinx2_buffer_size
+syn keyword ngxDirectiveThirdParty sphinx2_read_timeout
+syn keyword ngxDirectiveThirdParty sphinx2_next_upstream
+
+" HTTP SPNEGO auth Module <https://github.com/stnoonan/spnego-http-auth-nginx-module>
+" This module implements adds SPNEGO support to nginx(http://nginx.org). It currently supports only Kerberos authentication via GSSAPI
+syn keyword ngxDirectiveThirdParty auth_gss
+syn keyword ngxDirectiveThirdParty auth_gss_keytab
+syn keyword ngxDirectiveThirdParty auth_gss_realm
+syn keyword ngxDirectiveThirdParty auth_gss_service_name
+syn keyword ngxDirectiveThirdParty auth_gss_authorized_principal
+syn keyword ngxDirectiveThirdParty auth_gss_allow_basic_fallback
+
+" SR Cache Module <https://github.com/openresty/srcache-nginx-module>
+" Transparent subrequest-based caching layout for arbitrary nginx locations
+syn keyword ngxDirectiveThirdParty srcache_fetch
+syn keyword ngxDirectiveThirdParty srcache_fetch_skip
+syn keyword ngxDirectiveThirdParty srcache_store
+syn keyword ngxDirectiveThirdParty srcache_store_max_size
+syn keyword ngxDirectiveThirdParty srcache_store_skip
+syn keyword ngxDirectiveThirdParty srcache_store_statuses
+syn keyword ngxDirectiveThirdParty srcache_store_ranges
+syn keyword ngxDirectiveThirdParty srcache_header_buffer_size
+syn keyword ngxDirectiveThirdParty srcache_store_hide_header
+syn keyword ngxDirectiveThirdParty srcache_store_pass_header
+syn keyword ngxDirectiveThirdParty srcache_methods
+syn keyword ngxDirectiveThirdParty srcache_ignore_content_encoding
+syn keyword ngxDirectiveThirdParty srcache_request_cache_control
+syn keyword ngxDirectiveThirdParty srcache_response_cache_control
+syn keyword ngxDirectiveThirdParty srcache_store_no_store
+syn keyword ngxDirectiveThirdParty srcache_store_no_cache
+syn keyword ngxDirectiveThirdParty srcache_store_private
+syn keyword ngxDirectiveThirdParty srcache_default_expire
+syn keyword ngxDirectiveThirdParty srcache_max_expire
+
+" SSSD Info Module <https://github.com/veruu/ngx_sssd_info>
+" Retrives additional attributes from SSSD for current authentizated user
+syn keyword ngxDirectiveThirdParty sssd_info
+syn keyword ngxDirectiveThirdParty sssd_info_output_to
+syn keyword ngxDirectiveThirdParty sssd_info_groups
+syn keyword ngxDirectiveThirdParty sssd_info_group
+syn keyword ngxDirectiveThirdParty sssd_info_group_separator
+syn keyword ngxDirectiveThirdParty sssd_info_attributes
+syn keyword ngxDirectiveThirdParty sssd_info_attribute
+syn keyword ngxDirectiveThirdParty sssd_info_attribute_separator
+
+" Static Etags Module <https://github.com/mikewest/nginx-static-etags>
+" Generate etags for static content
+syn keyword ngxDirectiveThirdParty FileETag
+
+" Statsd Module <https://github.com/zebrafishlabs/nginx-statsd>
+" An nginx module for sending statistics to statsd
+syn keyword ngxDirectiveThirdParty statsd_server
+syn keyword ngxDirectiveThirdParty statsd_sample_rate
+syn keyword ngxDirectiveThirdParty statsd_count
+syn keyword ngxDirectiveThirdParty statsd_timing
+
+" Sticky Module <https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng>
+" Add a sticky cookie to be always forwarded to the same upstream server
+" syn keyword ngxDirectiveThirdParty sticky
+
+" Stream Echo Module <https://github.com/openresty/stream-echo-nginx-module>
+" TCP/stream echo module for NGINX (a port of ngx_http_echo_module)
+syn keyword ngxDirectiveThirdParty echo
+syn keyword ngxDirectiveThirdParty echo_duplicate
+syn keyword ngxDirectiveThirdParty echo_flush_wait
+syn keyword ngxDirectiveThirdParty echo_sleep
+syn keyword ngxDirectiveThirdParty echo_send_timeout
+syn keyword ngxDirectiveThirdParty echo_read_bytes
+syn keyword ngxDirectiveThirdParty echo_read_line
+syn keyword ngxDirectiveThirdParty echo_request_data
+syn keyword ngxDirectiveThirdParty echo_discard_request
+syn keyword ngxDirectiveThirdParty echo_read_buffer_size
+syn keyword ngxDirectiveThirdParty echo_read_timeout
+syn keyword ngxDirectiveThirdParty echo_client_error_log_level
+syn keyword ngxDirectiveThirdParty echo_lingering_close
+syn keyword ngxDirectiveThirdParty echo_lingering_time
+syn keyword ngxDirectiveThirdParty echo_lingering_timeout
+
+" Stream Lua Module <https://github.com/openresty/stream-lua-nginx-module>
+" Embed the power of Lua into Nginx stream/TCP Servers.
+syn keyword ngxDirectiveThirdParty lua_resolver
+syn keyword ngxDirectiveThirdParty lua_resolver_timeout
+syn keyword ngxDirectiveThirdParty lua_lingering_close
+syn keyword ngxDirectiveThirdParty lua_lingering_time
+syn keyword ngxDirectiveThirdParty lua_lingering_timeout
+
+" Stream Upsync Module <https://github.com/xiaokai-wang/nginx-stream-upsync-module>
+" Sync upstreams from consul or others, dynamiclly modify backend-servers attribute(weight, max_fails,...), needn't reload nginx.
+syn keyword ngxDirectiveThirdParty upsync
+syn keyword ngxDirectiveThirdParty upsync_dump_path
+syn keyword ngxDirectiveThirdParty upsync_lb
+syn keyword ngxDirectiveThirdParty upsync_show
+
+" Strip Module <https://github.com/evanmiller/mod_strip>
" Whitespace remover.
syn keyword ngxDirectiveThirdParty strip
-" Substitutions Module <http://wiki.nginx.org/NginxHttpSubsModule>
+" Subrange Module <https://github.com/Qihoo360/ngx_http_subrange_module>
+" Split one big HTTP/Range request to multiple subrange requesets
+syn keyword ngxDirectiveThirdParty subrange
+
+" Substitutions Module <https://www.nginx.com/resources/wiki/modules/substitutions/>
" A filter module which can do both regular expression and fixed string substitutions on response bodies.
syn keyword ngxDirectiveThirdParty subs_filter
syn keyword ngxDirectiveThirdParty subs_filter_types
-" Supervisord Module <http://labs.frickle.com/nginx_ngx_supervisord/>
+" Summarizer Module <https://github.com/reeteshranjan/summarizer-nginx-module>
+" Upstream nginx module to get summaries of documents using the summarizer daemon service
+syn keyword ngxDirectiveThirdParty smrzr_filename
+syn keyword ngxDirectiveThirdParty smrzr_ratio
+
+" Supervisord Module <https://github.com/FRiCKLE/ngx_supervisord/>
" Module providing nginx with API to communicate with supervisord and manage (start/stop) backends on-demand.
syn keyword ngxDirectiveThirdParty supervisord
syn keyword ngxDirectiveThirdParty supervisord_inherit_backend_status
@@ -768,52 +1914,210 @@
syn keyword ngxDirectiveThirdParty supervisord_start
syn keyword ngxDirectiveThirdParty supervisord_stop
-" Upload Module <http://www.grid.net.ru/nginx/upload.en.html>
-" Parses multipart/form-data allowing arbitrary handling of uploaded files.
-syn keyword ngxDirectiveThirdParty upload_aggregate_form_field
-syn keyword ngxDirectiveThirdParty upload_buffer_size
-syn keyword ngxDirectiveThirdParty upload_cleanup
-syn keyword ngxDirectiveThirdParty upload_limit_rate
-syn keyword ngxDirectiveThirdParty upload_max_file_size
-syn keyword ngxDirectiveThirdParty upload_max_output_body_len
-syn keyword ngxDirectiveThirdParty upload_max_part_header_len
-syn keyword ngxDirectiveThirdParty upload_pass
-syn keyword ngxDirectiveThirdParty upload_pass_args
-syn keyword ngxDirectiveThirdParty upload_pass_form_field
-syn keyword ngxDirectiveThirdParty upload_set_form_field
-syn keyword ngxDirectiveThirdParty upload_store
-syn keyword ngxDirectiveThirdParty upload_store_access
+" Tarantool Upstream Module <https://github.com/tarantool/nginx_upstream_module>
+" Tarantool NginX upstream module (REST, JSON API, websockets, load balancing)
+syn keyword ngxDirectiveThirdParty tnt_pass
+syn keyword ngxDirectiveThirdParty tnt_http_methods
+syn keyword ngxDirectiveThirdParty tnt_http_rest_methods
+syn keyword ngxDirectiveThirdParty tnt_pass_http_request
+syn keyword ngxDirectiveThirdParty tnt_pass_http_request_buffer_size
+syn keyword ngxDirectiveThirdParty tnt_method
+syn keyword ngxDirectiveThirdParty tnt_http_allowed_methods - experemental
+syn keyword ngxDirectiveThirdParty tnt_send_timeout
+syn keyword ngxDirectiveThirdParty tnt_read_timeout
+syn keyword ngxDirectiveThirdParty tnt_buffer_size
+syn keyword ngxDirectiveThirdParty tnt_next_upstream
+syn keyword ngxDirectiveThirdParty tnt_connect_timeout
+syn keyword ngxDirectiveThirdParty tnt_next_upstream
+syn keyword ngxDirectiveThirdParty tnt_next_upstream_tries
+syn keyword ngxDirectiveThirdParty tnt_next_upstream_timeout
-" Upload Progress Module <http://wiki.nginx.org/NginxHttpUploadProgressModule>
-" Tracks and reports upload progress.
-syn keyword ngxDirectiveThirdParty report_uploads
-syn keyword ngxDirectiveThirdParty track_uploads
+" TCP Proxy Module <http://yaoweibin.github.io/nginx_tcp_proxy_module/>
+" Add the feature of tcp proxy with nginx, with health check and status monitor
+syn keyword ngxDirectiveBlock tcp
+" syn keyword ngxDirectiveThirdParty server
+" syn keyword ngxDirectiveThirdParty listen
+" syn keyword ngxDirectiveThirdParty allow
+" syn keyword ngxDirectiveThirdParty deny
+" syn keyword ngxDirectiveThirdParty so_keepalive
+" syn keyword ngxDirectiveThirdParty tcp_nodelay
+" syn keyword ngxDirectiveThirdParty timeout
+" syn keyword ngxDirectiveThirdParty server_name
+" syn keyword ngxDirectiveThirdParty resolver
+" syn keyword ngxDirectiveThirdParty resolver_timeout
+" syn keyword ngxDirectiveThirdParty upstream
+syn keyword ngxDirectiveThirdParty check
+syn keyword ngxDirectiveThirdParty check_http_send
+syn keyword ngxDirectiveThirdParty check_http_expect_alive
+syn keyword ngxDirectiveThirdParty check_smtp_send
+syn keyword ngxDirectiveThirdParty check_smtp_expect_alive
+syn keyword ngxDirectiveThirdParty check_shm_size
+syn keyword ngxDirectiveThirdParty check_status
+" syn keyword ngxDirectiveThirdParty ip_hash
+" syn keyword ngxDirectiveThirdParty proxy_pass
+" syn keyword ngxDirectiveThirdParty proxy_buffer
+" syn keyword ngxDirectiveThirdParty proxy_connect_timeout
+" syn keyword ngxDirectiveThirdParty proxy_read_timeout
+syn keyword ngxDirectiveThirdParty proxy_write_timeout
+
+" Testcookie Module <https://github.com/kyprizel/testcookie-nginx-module>
+" NGINX module for L7 DDoS attack mitigation
+syn keyword ngxDirectiveThirdParty testcookie
+syn keyword ngxDirectiveThirdParty testcookie_name
+syn keyword ngxDirectiveThirdParty testcookie_domain
+syn keyword ngxDirectiveThirdParty testcookie_expires
+syn keyword ngxDirectiveThirdParty testcookie_path
+syn keyword ngxDirectiveThirdParty testcookie_secret
+syn keyword ngxDirectiveThirdParty testcookie_session
+syn keyword ngxDirectiveThirdParty testcookie_arg
+syn keyword ngxDirectiveThirdParty testcookie_max_attempts
+syn keyword ngxDirectiveThirdParty testcookie_p3p
+syn keyword ngxDirectiveThirdParty testcookie_fallback
+syn keyword ngxDirectiveThirdParty testcookie_whitelist
+syn keyword ngxDirectiveThirdParty testcookie_pass
+syn keyword ngxDirectiveThirdParty testcookie_redirect_via_refresh
+syn keyword ngxDirectiveThirdParty testcookie_refresh_template
+syn keyword ngxDirectiveThirdParty testcookie_refresh_status
+syn keyword ngxDirectiveThirdParty testcookie_deny_keepalive
+syn keyword ngxDirectiveThirdParty testcookie_get_only
+syn keyword ngxDirectiveThirdParty testcookie_https_location
+syn keyword ngxDirectiveThirdParty testcookie_refresh_encrypt_cookie
+syn keyword ngxDirectiveThirdParty testcookie_refresh_encrypt_cookie_key
+syn keyword ngxDirectiveThirdParty testcookie_refresh_encrypt_iv
+syn keyword ngxDirectiveThirdParty testcookie_internal
+syn keyword ngxDirectiveThirdParty testcookie_httponly_flag
+syn keyword ngxDirectiveThirdParty testcookie_secure_flag
+
+" Types Filter Module <https://github.com/flygoast/ngx_http_types_filter>
+" Change the `Content-Type` output header depending on an extension variable according to a condition specified in the 'if' clause.
+syn keyword ngxDirectiveThirdParty types_filter
+syn keyword ngxDirectiveThirdParty types_filter_use_default
+
+" Unzip Module <https://github.com/youzee/nginx-unzip-module>
+" Enabling fetching of files that are stored in zipped archives.
+syn keyword ngxDirectiveThirdParty file_in_unzip_archivefile
+syn keyword ngxDirectiveThirdParty file_in_unzip_extract
+syn keyword ngxDirectiveThirdParty file_in_unzip
+
+" Upload Progress Module <https://www.nginx.com/resources/wiki/modules/upload_progress/>
+" An upload progress system, that monitors RFC1867 POST upload as they are transmitted to upstream servers
syn keyword ngxDirectiveThirdParty upload_progress
+syn keyword ngxDirectiveThirdParty track_uploads
+syn keyword ngxDirectiveThirdParty report_uploads
syn keyword ngxDirectiveThirdParty upload_progress_content_type
syn keyword ngxDirectiveThirdParty upload_progress_header
+syn keyword ngxDirectiveThirdParty upload_progress_jsonp_parameter
syn keyword ngxDirectiveThirdParty upload_progress_json_output
+syn keyword ngxDirectiveThirdParty upload_progress_jsonp_output
syn keyword ngxDirectiveThirdParty upload_progress_template
-" Upstream Fair Balancer <http://wiki.nginx.org/NginxHttpUpstreamFairModule>
-" Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.
+" Upload Module <https://www.nginx.com/resources/wiki/modules/upload/>
+" Parses request body storing all files being uploaded to a directory specified by upload_store directive
+syn keyword ngxDirectiveThirdParty upload_pass
+syn keyword ngxDirectiveThirdParty upload_resumable
+syn keyword ngxDirectiveThirdParty upload_store
+syn keyword ngxDirectiveThirdParty upload_state_store
+syn keyword ngxDirectiveThirdParty upload_store_access
+syn keyword ngxDirectiveThirdParty upload_set_form_field
+syn keyword ngxDirectiveThirdParty upload_aggregate_form_field
+syn keyword ngxDirectiveThirdParty upload_pass_form_field
+syn keyword ngxDirectiveThirdParty upload_cleanup
+syn keyword ngxDirectiveThirdParty upload_buffer_size
+syn keyword ngxDirectiveThirdParty upload_max_part_header_len
+syn keyword ngxDirectiveThirdParty upload_max_file_size
+syn keyword ngxDirectiveThirdParty upload_limit_rate
+syn keyword ngxDirectiveThirdParty upload_max_output_body_len
+syn keyword ngxDirectiveThirdParty upload_tame_arrays
+syn keyword ngxDirectiveThirdParty upload_pass_args
+
+" Upstream Fair Module <https://github.com/gnosek/nginx-upstream-fair>
+" The fair load balancer module for nginx http://nginx.localdomain.pl
syn keyword ngxDirectiveThirdParty fair
syn keyword ngxDirectiveThirdParty upstream_fair_shm_size
-" Upstream Consistent Hash <http://wiki.nginx.org/NginxHttpUpstreamConsistentHash>
-" Select backend based on Consistent hash ring.
-syn keyword ngxDirectiveThirdParty consistent_hash
-
-" Upstream Hash Module <http://wiki.nginx.org/NginxHttpUpstreamRequestHashModule>
+" Upstream Hash Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpUpstreamRequestHashModule>
" Provides simple upstream load distribution by hashing a configurable variable.
-syn keyword ngxDirectiveThirdParty hash
-syn keyword ngxDirectiveThirdParty hash_again
+" syn keyword ngxDirectiveDeprecated hash
+syn keyword ngxDirectiveDeprecated hash_again
-" XSS Module <http://github.com/agentzh/xss-nginx-module>
+" Upstream Domain Resolve Module <https://www.nginx.com/resources/wiki/modules/domain_resolve/>
+" A load-balancer that resolves an upstream domain name asynchronously.
+syn keyword ngxDirectiveThirdParty jdomain
+
+" Upsync Module <https://github.com/weibocom/nginx-upsync-module>
+" Sync upstreams from consul or others, dynamiclly modify backend-servers attribute(weight, max_fails,...), needn't reload nginx
+syn keyword ngxDirectiveThirdParty upsync
+syn keyword ngxDirectiveThirdParty upsync_dump_path
+syn keyword ngxDirectiveThirdParty upsync_lb
+syn keyword ngxDirectiveThirdParty upstream_show
+
+" URL Module <https://github.com/vozlt/nginx-module-url>
+" Nginx url encoding converting module
+syn keyword ngxDirectiveThirdParty url_encoding_convert
+syn keyword ngxDirectiveThirdParty url_encoding_convert_from
+syn keyword ngxDirectiveThirdParty url_encoding_convert_to
+
+" User Agent Module <https://github.com/alibaba/nginx-http-user-agent>
+" Match browsers and crawlers
+syn keyword ngxDirectiveThirdParty user_agent
+
+" Upstrema Ketama Chash Module <https://github.com/flygoast/ngx_http_upstream_ketama_chash>
+" Nginx load-balancer module implementing ketama consistent hashing.
+syn keyword ngxDirectiveThirdParty ketama_chash
+
+" Video Thumbextractor Module <https://github.com/wandenberg/nginx-video-thumbextractor-module>
+" Extract thumbs from a video file
+syn keyword ngxDirectiveThirdParty video_thumbextractor
+syn keyword ngxDirectiveThirdParty video_thumbextractor_video_filename
+syn keyword ngxDirectiveThirdParty video_thumbextractor_video_second
+syn keyword ngxDirectiveThirdParty video_thumbextractor_image_width
+syn keyword ngxDirectiveThirdParty video_thumbextractor_image_height
+syn keyword ngxDirectiveThirdParty video_thumbextractor_only_keyframe
+syn keyword ngxDirectiveThirdParty video_thumbextractor_next_time
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_rows
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_cols
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_max_rows
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_max_cols
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_sample_interval
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_color
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_margin
+syn keyword ngxDirectiveThirdParty video_thumbextractor_tile_padding
+syn keyword ngxDirectiveThirdParty video_thumbextractor_threads
+syn keyword ngxDirectiveThirdParty video_thumbextractor_processes_per_worker
+
+" Eval Module <http://www.grid.net.ru/nginx/eval.en.html>
+" Module for nginx web server evaluates response of proxy or memcached module into variables.
+syn keyword ngxDirectiveThirdParty eval
+syn keyword ngxDirectiveThirdParty eval_escalate
+syn keyword ngxDirectiveThirdParty eval_override_content_type
+
+" VTS Module <https://github.com/vozlt/nginx-module-vts>
+" Nginx virtual host traffic status module
+syn keyword ngxDirectiveThirdParty vhost_traffic_status
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_zone
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_display
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_display_format
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_display_jsonp
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter_by_host
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter_by_set_key
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_filter_check_duplicate
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit_traffic
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit_traffic_by_set_key
+syn keyword ngxDirectiveThirdParty vhost_traffic_status_limit_check_duplicate
+
+" XSS Module <https://github.com/openresty/xss-nginx-module>
" Native support for cross-site scripting (XSS) in an nginx.
-syn keyword ngxDirectiveThirdParty xss_callback_arg
syn keyword ngxDirectiveThirdParty xss_get
+syn keyword ngxDirectiveThirdParty xss_callback_arg
+syn keyword ngxDirectiveThirdParty xss_override_status
+syn keyword ngxDirectiveThirdParty xss_check_status
syn keyword ngxDirectiveThirdParty xss_input_types
-syn keyword ngxDirectiveThirdParty xss_output_type
+
+" ZIP Module <https://www.nginx.com/resources/wiki/modules/zip/>
+" ZIP archiver for nginx
+
" highlight
@@ -833,4 +2137,8 @@
hi link ngxDirective Identifier
hi link ngxDirectiveThirdParty Special
+hi link ngxListenOptions Keyword
+hi link ngxMailProtocol Keyword
+hi link ngxSSLProtocol Keyword
+
let b:current_syntax = "nginx"
diff --git a/docs/xml/nginx/changes.xml b/docs/xml/nginx/changes.xml
index 6041427..ce4a1b9 100644
--- a/docs/xml/nginx/changes.xml
+++ b/docs/xml/nginx/changes.xml
@@ -5,7 +5,78 @@
<change_log title="nginx">
-<changes ver="1.11.10" date="14.02.2017">
+<changes ver="1.11.11" date="2017-03-21">
+
+<change type="feature">
+<para lang="ru">
+директива worker_shutdown_timeout.
+</para>
+<para lang="en">
+the "worker_shutdown_timeout" directive.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+улучшения в скриптах подсветки синтаксиса для vim.<br/>
+Спасибо Wei-Ko Kao.
+</para>
+<para lang="en">
+vim syntax highlighting scripts improvements.<br/>
+Thanks to Wei-Ko Kao.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+при попытке установить переменную $limit_rate в пустую строку
+в рабочем процессе мог произойти segmentation fault.
+</para>
+<para lang="en">
+a segmentation fault might occur in a worker process
+if the $limit_rate variable was set to an empty string.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+директивы proxy_cache_background_update, fastcgi_cache_background_update,
+scgi_cache_background_update и uwsgi_cache_background_update
+могли работать некорректно, если использовалась директива if.
+</para>
+<para lang="en">
+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.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+в рабочем процессе мог произойти segmentation fault,
+если количество large_client_header_buffers в виртуальном сервере
+отличалось от такового в сервере по умолчанию.
+</para>
+<para lang="en">
+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.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+в почтовом прокси-сервере.
+</para>
+<para lang="en">
+in the mail proxy server.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.11.10" date="2017-02-14">
<change type="change">
<para lang="ru">
@@ -66,7 +137,7 @@
<change type="bugfix">
<para lang="ru">
-при обработке запросов со строкой "Expect: 100-continue" в заголовке запроса
+при обработке запросов со строкой "Expect: 100-continue" в заголовке запроса
в логах могли появляться сообщения "[crit] SSL_write() failed".
</para>
<para lang="en">
@@ -107,7 +178,7 @@
</changes>
-<changes ver="1.11.9" date="24.01.2017">
+<changes ver="1.11.9" date="2017-01-24">
<change type="bugfix">
<para lang="ru">
@@ -202,7 +273,7 @@
</changes>
-<changes ver="1.11.8" date="27.12.2016">
+<changes ver="1.11.8" date="2016-12-27">
<change type="feature">
<para lang="ru">
@@ -309,7 +380,7 @@
</changes>
-<changes ver="1.11.7" date="13.12.2016">
+<changes ver="1.11.7" date="2016-12-13">
<change type="change">
<para lang="ru">
@@ -403,7 +474,7 @@
</changes>
-<changes ver="1.11.6" date="15.11.2016">
+<changes ver="1.11.6" date="2016-11-15">
<change type="change">
<para lang="ru">
@@ -533,7 +604,7 @@
</changes>
-<changes ver="1.11.5" date="11.10.2016">
+<changes ver="1.11.5" date="2016-10-11">
<change type="change">
<para lang="ru">
@@ -667,7 +738,7 @@
</changes>
-<changes ver="1.11.4" date="13.09.2016">
+<changes ver="1.11.4" date="2016-09-13">
<change type="feature">
<para lang="ru">
@@ -772,7 +843,7 @@
</changes>
-<changes ver="1.11.3" date="26.07.2016">
+<changes ver="1.11.3" date="2016-07-26">
<change type="change">
<para lang="ru">
@@ -853,7 +924,7 @@
</changes>
-<changes ver="1.11.2" date="05.07.2016">
+<changes ver="1.11.2" date="2016-07-05">
<change type="change">
<para lang="ru">
@@ -966,7 +1037,7 @@
</changes>
-<changes ver="1.11.1" date="31.05.2016">
+<changes ver="1.11.1" date="2016-05-31">
<change type="security">
<para lang="ru">
@@ -986,7 +1057,7 @@
</changes>
-<changes ver="1.11.0" date="24.05.2016">
+<changes ver="1.11.0" date="2016-05-24">
<change type="feature">
<para lang="ru">
@@ -1142,7 +1213,7 @@
</changes>
-<changes ver="1.9.15" date="19.04.2016">
+<changes ver="1.9.15" date="2016-04-19">
<change type="bugfix">
<para lang="ru">
@@ -1197,7 +1268,7 @@
</changes>
-<changes ver="1.9.14" date="05.04.2016">
+<changes ver="1.9.14" date="2016-04-05">
<change type="feature">
<para lang="ru">
@@ -1255,7 +1326,7 @@
</changes>
-<changes ver="1.9.13" date="29.03.2016">
+<changes ver="1.9.13" date="2016-03-29">
<change type="change">
<para lang="ru">
@@ -1420,7 +1491,7 @@
</changes>
-<changes ver="1.9.12" date="24.02.2016">
+<changes ver="1.9.12" date="2016-02-24">
<change type="feature">
<para lang="ru">
@@ -1522,7 +1593,7 @@
</changes>
-<changes ver="1.9.11" date="09.02.2016">
+<changes ver="1.9.11" date="2016-02-09">
<change type="feature">
<para lang="ru">
@@ -1565,7 +1636,7 @@
</changes>
-<changes ver="1.9.10" date="26.01.2016">
+<changes ver="1.9.10" date="2016-01-26">
<change type="security">
<para lang="ru">
@@ -1668,7 +1739,7 @@
</changes>
-<changes ver="1.9.9" date="09.12.2015">
+<changes ver="1.9.9" date="2015-12-09">
<change type="bugfix">
<para lang="ru">
@@ -1684,7 +1755,7 @@
</changes>
-<changes ver="1.9.8" date="08.12.2015">
+<changes ver="1.9.8" date="2015-12-08">
<change type="feature">
<para lang="ru">
@@ -1738,7 +1809,7 @@
</changes>
-<changes ver="1.9.7" date="17.11.2015">
+<changes ver="1.9.7" date="2015-11-17">
<change type="feature">
<para lang="ru">
@@ -1814,7 +1885,7 @@
</changes>
-<changes ver="1.9.6" date="27.10.2015">
+<changes ver="1.9.6" date="2015-10-27">
<change type="bugfix">
<para lang="ru">
@@ -1898,7 +1969,7 @@
</changes>
-<changes ver="1.9.5" date="22.09.2015">
+<changes ver="1.9.5" date="2015-09-22">
<change type="feature">
<para lang="ru">
@@ -1995,7 +2066,7 @@
</changes>
-<changes ver="1.9.4" date="18.08.2015">
+<changes ver="1.9.4" date="2015-08-18">
<change type="change">
<para lang="ru">
@@ -2106,7 +2177,7 @@
</changes>
-<changes ver="1.9.3" date="14.07.2015">
+<changes ver="1.9.3" date="2015-07-14">
<change type="change">
<para lang="ru">
@@ -2197,7 +2268,7 @@
</changes>
-<changes ver="1.9.2" date="16.06.2015">
+<changes ver="1.9.2" date="2015-06-16">
<change type="feature">
<para lang="ru">
@@ -2280,7 +2351,7 @@
</changes>
-<changes ver="1.9.1" date="26.05.2015">
+<changes ver="1.9.1" date="2015-05-26">
<change type="change">
<para lang="ru">
@@ -2354,7 +2425,7 @@
</changes>
-<changes ver="1.9.0" date="28.04.2015">
+<changes ver="1.9.0" date="2015-04-28">
<change type="change">
<para lang="ru">
@@ -2432,7 +2503,7 @@
</changes>
-<changes ver="1.7.12" date="07.04.2015">
+<changes ver="1.7.12" date="2015-04-07">
<change type="feature">
<para lang="ru">
@@ -2495,7 +2566,7 @@
</changes>
-<changes ver="1.7.11" date="24.03.2015">
+<changes ver="1.7.11" date="2015-03-24">
<change type="change">
<para lang="ru">
@@ -2663,7 +2734,7 @@
</changes>
-<changes ver="1.7.10" date="10.02.2015">
+<changes ver="1.7.10" date="2015-02-10">
<change type="feature">
<para lang="ru">
@@ -2755,7 +2826,7 @@
</changes>
-<changes ver="1.7.9" date="23.12.2014">
+<changes ver="1.7.9" date="2014-12-23">
<change type="feature">
<para lang="ru">
@@ -2859,7 +2930,7 @@
</changes>
-<changes ver="1.7.8" date="02.12.2014">
+<changes ver="1.7.8" date="2014-12-02">
<change type="change">
<para lang="ru">
@@ -3025,7 +3096,7 @@
</changes>
-<changes ver="1.7.7" date="28.10.2014">
+<changes ver="1.7.7" date="2014-10-28">
<change type="change">
<para lang="ru">
@@ -3135,7 +3206,7 @@
</changes>
-<changes ver="1.7.6" date="30.09.2014">
+<changes ver="1.7.6" date="2014-09-30">
<change type="change">
<para lang="ru">
@@ -3180,7 +3251,7 @@
</changes>
-<changes ver="1.7.5" date="16.09.2014">
+<changes ver="1.7.5" date="2014-09-16">
<change type="security">
<para lang="ru">
@@ -3325,7 +3396,7 @@
</changes>
-<changes ver="1.7.4" date="05.08.2014">
+<changes ver="1.7.4" date="2014-08-05">
<change type="security">
<para lang="ru">
@@ -3454,7 +3525,7 @@
</changes>
-<changes ver="1.7.3" date="08.07.2014">
+<changes ver="1.7.3" date="2014-07-08">
<change type="feature">
<para lang="ru">
@@ -3534,7 +3605,7 @@
</changes>
-<changes ver="1.7.2" date="17.06.2014">
+<changes ver="1.7.2" date="2014-06-17">
<change type="feature">
<para lang="ru">
@@ -3603,7 +3674,7 @@
</changes>
-<changes ver="1.7.1" date="27.05.2014">
+<changes ver="1.7.1" date="2014-05-27">
<change type="feature">
<para lang="ru">
@@ -3721,7 +3792,7 @@
</changes>
-<changes ver="1.7.0" date="24.04.2014">
+<changes ver="1.7.0" date="2014-04-24">
<change type="feature">
<para lang="ru">
@@ -3762,7 +3833,7 @@
</changes>
-<changes ver="1.5.13" date="08.04.2014">
+<changes ver="1.5.13" date="2014-04-08">
<change type="change">
<para lang="ru">
@@ -3855,7 +3926,7 @@
</changes>
-<changes ver="1.5.12" date="18.03.2014">
+<changes ver="1.5.12" date="2014-03-18">
<change type="security">
<para lang="ru">
@@ -3901,7 +3972,7 @@
</changes>
-<changes ver="1.5.11" date="04.03.2014">
+<changes ver="1.5.11" date="2014-03-04">
<change type="security">
<para lang="ru">
@@ -4011,7 +4082,7 @@
</changes>
-<changes ver="1.5.10" date="04.02.2014">
+<changes ver="1.5.10" date="2014-02-04">
<change type="feature">
<para lang="ru">
@@ -4090,7 +4161,7 @@
</changes>
-<changes ver="1.5.9" date="22.01.2014">
+<changes ver="1.5.9" date="2014-01-22">
<change type="change">
<para lang="ru">
@@ -4232,7 +4303,7 @@
</changes>
-<changes ver="1.5.8" date="17.12.2013">
+<changes ver="1.5.8" date="2013-12-17">
<change type="feature">
<para lang="ru">
@@ -4317,7 +4388,7 @@
</changes>
-<changes ver="1.5.7" date="19.11.2013">
+<changes ver="1.5.7" date="2013-11-19">
<change type="security">
<para lang="ru">
@@ -4453,7 +4524,7 @@
</changes>
-<changes ver="1.5.6" date="01.10.2013">
+<changes ver="1.5.6" date="2013-10-01">
<change type="feature">
<para lang="ru">
@@ -4551,7 +4622,7 @@
</changes>
-<changes ver="1.5.5" date="17.09.2013">
+<changes ver="1.5.5" date="2013-09-17">
<change type="change">
<para lang="ru">
@@ -4630,7 +4701,7 @@
</changes>
-<changes ver="1.5.4" date="27.08.2013">
+<changes ver="1.5.4" date="2013-08-27">
<change type="change">
<para lang="ru">
@@ -4732,7 +4803,7 @@
</changes>
-<changes ver="1.5.3" date="30.07.2013">
+<changes ver="1.5.3" date="2013-07-30">
<change>
<para lang="ru">
@@ -4807,7 +4878,7 @@
</changes>
-<changes ver="1.5.2" date="02.07.2013">
+<changes ver="1.5.2" date="2013-07-02">
<change type="feature">
<para lang="ru">
@@ -4856,7 +4927,7 @@
</changes>
-<changes ver="1.5.1" date="04.06.2013">
+<changes ver="1.5.1" date="2013-06-04">
<change type="feature">
<para lang="ru">
@@ -4979,7 +5050,7 @@
</changes>
-<changes ver="1.5.0" date="07.05.2013">
+<changes ver="1.5.0" date="2013-05-07">
<change type="security">
<para lang="ru">
@@ -5001,7 +5072,7 @@
</changes>
-<changes ver="1.4.0" date="24.04.2013">
+<changes ver="1.4.0" date="2013-04-24">
<change type="bugfix">
<para lang="ru">
@@ -5030,7 +5101,7 @@
</changes>
-<changes ver="1.3.16" date="16.04.2013">
+<changes ver="1.3.16" date="2013-04-16">
<change type="bugfix">
<para lang="ru">
@@ -5081,7 +5152,7 @@
</changes>
-<changes ver="1.3.15" date="26.03.2013">
+<changes ver="1.3.15" date="2013-03-26">
<change type="change">
<para lang="ru">
@@ -5198,7 +5269,7 @@
</changes>
-<changes ver="1.3.14" date="05.03.2013">
+<changes ver="1.3.14" date="2013-03-05">
<change type="feature">
<para lang="ru">
@@ -5271,7 +5342,7 @@
</changes>
-<changes ver="1.3.13" date="19.02.2013">
+<changes ver="1.3.13" date="2013-02-19">
<change type="change">
<para lang="ru">
@@ -5309,7 +5380,7 @@
</changes>
-<changes ver="1.3.12" date="05.02.2013">
+<changes ver="1.3.12" date="2013-02-05">
<change type="feature">
<para lang="ru">
@@ -5409,7 +5480,7 @@
</changes>
-<changes ver="1.3.11" date="10.01.2013">
+<changes ver="1.3.11" date="2013-01-10">
<change type="bugfix">
<para lang="ru">
@@ -5462,7 +5533,7 @@
</changes>
-<changes ver="1.3.10" date="25.12.2012">
+<changes ver="1.3.10" date="2012-12-25">
<change type="change">
<para lang="ru">
@@ -5640,7 +5711,7 @@
</changes>
-<changes ver="1.3.9" date="27.11.2012">
+<changes ver="1.3.9" date="2012-11-27">
<change type="feature">
<para lang="ru">
@@ -5685,7 +5756,7 @@
</changes>
-<changes ver="1.3.8" date="30.10.2012">
+<changes ver="1.3.8" date="2012-10-30">
<change type="feature">
<para lang="ru">
@@ -5750,7 +5821,7 @@
</changes>
-<changes ver="1.3.7" date="02.10.2012">
+<changes ver="1.3.7" date="2012-10-02">
<change type="feature">
<para lang="ru">
@@ -5797,7 +5868,7 @@
</changes>
-<changes ver="1.3.6" date="12.09.2012">
+<changes ver="1.3.6" date="2012-09-12">
<change type="feature">
<para lang="ru">
@@ -5853,7 +5924,7 @@
</changes>
-<changes ver="1.3.5" date="21.08.2012">
+<changes ver="1.3.5" date="2012-08-21">
<change type="change">
<para lang="ru">
@@ -5935,7 +6006,7 @@
</changes>
-<changes ver="1.3.4" date="31.07.2012">
+<changes ver="1.3.4" date="2012-07-31">
<change type="change">
<para lang="ru">
@@ -5998,7 +6069,7 @@
</changes>
-<changes ver="1.3.3" date="10.07.2012">
+<changes ver="1.3.3" date="2012-07-10">
<change type="feature">
<para lang="ru">
@@ -6036,7 +6107,7 @@
</changes>
-<changes ver="1.3.2" date="26.06.2012">
+<changes ver="1.3.2" date="2012-06-26">
<change type="change">
<para lang="ru">
@@ -6141,7 +6212,7 @@
</changes>
-<changes ver="1.3.1" date="05.06.2012">
+<changes ver="1.3.1" date="2012-06-05">
<change type="security">
<para lang="ru">
@@ -6271,7 +6342,7 @@
</changes>
-<changes ver="1.3.0" date="15.05.2012">
+<changes ver="1.3.0" date="2012-05-15">
<change type="feature">
<para lang="ru">
@@ -6410,7 +6481,7 @@
</changes>
-<changes ver="1.2.0" date="23.04.2012">
+<changes ver="1.2.0" date="2012-04-23">
<change type="bugfix">
<para lang="ru">
@@ -6450,7 +6521,7 @@
</changes>
-<changes ver="1.1.19" date="12.04.2012">
+<changes ver="1.1.19" date="2012-04-12">
<change type="security">
<para lang="ru">
@@ -6532,7 +6603,7 @@
</changes>
-<changes ver="1.1.18" date="28.03.2012">
+<changes ver="1.1.18" date="2012-03-28">
<change type="change">
<para lang="ru">
@@ -6615,7 +6686,7 @@
</changes>
-<changes ver="1.1.17" date="15.03.2012">
+<changes ver="1.1.17" date="2012-03-15">
<change type="security">
<para lang="ru">
@@ -6653,7 +6724,7 @@
</changes>
-<changes ver="1.1.16" date="29.02.2012">
+<changes ver="1.1.16" date="2012-02-29">
<change type="change">
<para lang="ru">
@@ -6766,7 +6837,7 @@
</changes>
-<changes ver="1.1.15" date="15.02.2012">
+<changes ver="1.1.15" date="2012-02-15">
<change type="feature">
<para lang="ru">
@@ -6869,7 +6940,7 @@
</changes>
-<changes ver="1.1.14" date="30.01.2012">
+<changes ver="1.1.14" date="2012-01-30">
<change type="feature">
<para lang="ru">
@@ -6930,7 +7001,7 @@
</changes>
-<changes ver="1.1.13" date="16.01.2012">
+<changes ver="1.1.13" date="2012-01-16">
<change type="feature">
<para lang="ru">
@@ -7006,7 +7077,7 @@
</changes>
-<changes ver="1.1.12" date="26.12.2011">
+<changes ver="1.1.12" date="2011-12-26">
<change type="change">
<para lang="ru">
@@ -7146,7 +7217,7 @@
</changes>
-<changes ver="1.1.11" date="12.12.2011">
+<changes ver="1.1.11" date="2011-12-12">
<change type="feature">
<para lang="ru">
@@ -7244,7 +7315,7 @@
</changes>
-<changes ver="1.1.10" date="30.11.2011">
+<changes ver="1.1.10" date="2011-11-30">
<change type="bugfix">
<para lang="ru">
@@ -7260,7 +7331,7 @@
</changes>
-<changes ver="1.1.9" date="28.11.2011">
+<changes ver="1.1.9" date="2011-11-28">
<change type="change">
<para lang="ru">
@@ -7426,7 +7497,7 @@
</changes>
-<changes ver="1.1.8" date="14.11.2011">
+<changes ver="1.1.8" date="2011-11-14">
<change type="change">
<para lang="ru">
@@ -7521,7 +7592,7 @@
</changes>
-<changes ver="1.1.7" date="31.10.2011">
+<changes ver="1.1.7" date="2011-10-31">
<change type="feature">
<para lang="ru">
@@ -7581,7 +7652,7 @@
</changes>
-<changes ver="1.1.6" date="17.10.2011">
+<changes ver="1.1.6" date="2011-10-17">
<change>
<para lang="ru">
@@ -7701,7 +7772,7 @@
</changes>
-<changes ver="1.1.5" date="05.10.2011">
+<changes ver="1.1.5" date="2011-10-05">
<change type="feature">
<para lang="ru">
@@ -7782,7 +7853,7 @@
</changes>
-<changes ver="1.1.4" date="20.09.2011">
+<changes ver="1.1.4" date="2011-09-20">
<change type="feature">
<para lang="ru">
@@ -7865,7 +7936,7 @@
</changes>
-<changes ver="1.1.3" date="14.09.2011">
+<changes ver="1.1.3" date="2011-09-14">
<change type="feature">
<para lang="ru">
@@ -7908,7 +7979,7 @@
</changes>
-<changes ver="1.1.2" date="05.09.2011">
+<changes ver="1.1.2" date="2011-09-05">
<change type="change">
<para lang="ru">
@@ -7953,7 +8024,7 @@
</changes>
-<changes ver="1.1.1" date="22.08.2011">
+<changes ver="1.1.1" date="2011-08-22">
<change type="change">
<para lang="ru">
@@ -8097,7 +8168,7 @@
</changes>
-<changes ver="1.1.0" date="01.08.2011">
+<changes ver="1.1.0" date="2011-08-01">
<change type="feature">
<para lang="ru">
@@ -8230,7 +8301,7 @@
</changes>
-<changes ver="1.0.5" date="19.07.2011">
+<changes ver="1.0.5" date="2011-07-19">
<change type="change">
<para lang="ru">
@@ -8306,7 +8377,7 @@
</changes>
-<changes ver="1.0.4" date="01.06.2011">
+<changes ver="1.0.4" date="2011-06-01">
<change type="change">
<para lang="ru">
@@ -8353,7 +8424,7 @@
</changes>
-<changes ver="1.0.3" date="25.05.2011">
+<changes ver="1.0.3" date="2011-05-25">
<change type="feature">
<para lang="ru">
@@ -8422,7 +8493,7 @@
</changes>
-<changes ver="1.0.2" date="10.05.2011">
+<changes ver="1.0.2" date="2011-05-10">
<change type="feature">
<para lang="ru">
@@ -8458,7 +8529,7 @@
</changes>
-<changes ver="1.0.1" date="03.05.2011">
+<changes ver="1.0.1" date="2011-05-03">
<change type="change">
<para lang="ru">
@@ -8566,7 +8637,7 @@
</changes>
-<changes ver="1.0.0" date="12.04.2011">
+<changes ver="1.0.0" date="2011-04-12">
<change type="bugfix">
<para lang="ru">
@@ -8603,7 +8674,7 @@
</changes>
-<changes ver="0.9.7" date="04.04.2011">
+<changes ver="0.9.7" date="2011-04-04">
<change type="feature">
<para lang="ru">
@@ -8643,7 +8714,7 @@
</changes>
-<changes ver="0.9.6" date="21.03.2011">
+<changes ver="0.9.6" date="2011-03-21">
<change type="feature">
<para lang="ru">
@@ -8670,7 +8741,7 @@
</changes>
-<changes ver="0.9.5" date="21.02.2011">
+<changes ver="0.9.5" date="2011-02-21">
<change type="change">
<para lang="ru">
@@ -8724,7 +8795,7 @@
</changes>
-<changes ver="0.9.4" date="21.01.2011">
+<changes ver="0.9.4" date="2011-01-21">
<change type="feature">
<para lang="ru">
@@ -8747,7 +8818,7 @@
</changes>
-<changes ver="0.9.3" date="13.12.2010">
+<changes ver="0.9.3" date="2010-12-13">
<change type="bugfix">
<para lang="ru">
@@ -8774,7 +8845,7 @@
</changes>
-<changes ver="0.9.2" date="06.12.2010">
+<changes ver="0.9.2" date="2010-12-06">
<change type="feature">
<para lang="ru">
@@ -8821,7 +8892,7 @@
</changes>
-<changes ver="0.9.1" date="30.11.2010">
+<changes ver="0.9.1" date="2010-11-30">
<change type="bugfix">
<para lang="ru">
@@ -8837,7 +8908,7 @@
</changes>
-<changes ver="0.9.0" date="29.11.2010">
+<changes ver="0.9.0" date="2010-11-29">
<change type="feature">
<para lang="ru">
@@ -8936,7 +9007,7 @@
</changes>
-<changes ver="0.8.53" date="18.10.2010">
+<changes ver="0.8.53" date="2010-10-18">
<change type="feature">
<para lang="ru">
@@ -8985,7 +9056,7 @@
</changes>
-<changes ver="0.8.52" date="28.09.2010">
+<changes ver="0.8.52" date="2010-09-28">
<change type="bugfix">
<para lang="ru">
@@ -9002,7 +9073,7 @@
</changes>
-<changes ver="0.8.51" date="27.09.2010">
+<changes ver="0.8.51" date="2010-09-27">
<change type="change">
<para lang="ru">
@@ -9034,7 +9105,7 @@
</changes>
-<changes ver="0.8.50" date="02.09.2010">
+<changes ver="0.8.50" date="2010-09-02">
<change type="feature">
<para lang="ru">
@@ -9096,7 +9167,7 @@
</changes>
-<changes ver="0.8.49" date="09.08.2010">
+<changes ver="0.8.49" date="2010-08-09">
<change type="feature">
<para lang="ru">
@@ -9134,7 +9205,7 @@
</changes>
-<changes ver="0.8.48" date="03.08.2010">
+<changes ver="0.8.48" date="2010-08-03">
<change type="change">
<para lang="ru">
@@ -9231,7 +9302,7 @@
</changes>
-<changes ver="0.8.47" date="28.07.2010">
+<changes ver="0.8.47" date="2010-07-28">
<change type="bugfix">
<para lang="ru">
@@ -9266,7 +9337,7 @@
</changes>
-<changes ver="0.8.46" date="19.07.2010">
+<changes ver="0.8.46" date="2010-07-19">
<change type="change">
<para lang="ru">
@@ -9306,7 +9377,7 @@
</changes>
-<changes ver="0.8.45" date="13.07.2010">
+<changes ver="0.8.45" date="2010-07-13">
<change type="feature">
<para lang="ru">
@@ -9345,7 +9416,7 @@
</changes>
-<changes ver="0.8.44" date="05.07.2010">
+<changes ver="0.8.44" date="2010-07-05">
<change type="change">
<para lang="ru">
@@ -9410,7 +9481,7 @@
</changes>
-<changes ver="0.8.43" date="30.06.2010">
+<changes ver="0.8.43" date="2010-06-30">
<change type="feature">
<para lang="ru">
@@ -9457,7 +9528,7 @@
</changes>
-<changes ver="0.8.42" date="21.06.2010">
+<changes ver="0.8.42" date="2010-06-21">
<change type="change">
<para lang="ru">
@@ -9495,7 +9566,7 @@
</changes>
-<changes ver="0.8.41" date="15.06.2010">
+<changes ver="0.8.41" date="2010-06-15">
<change type="security">
<para lang="ru">
@@ -9544,7 +9615,7 @@
</changes>
-<changes ver="0.8.40" date="07.06.2010">
+<changes ver="0.8.40" date="2010-06-07">
<change type="security">
<para lang="ru">
@@ -9604,7 +9675,7 @@
</changes>
-<changes ver="0.8.39" date="31.05.2010">
+<changes ver="0.8.39" date="2010-05-31">
<change type="bugfix">
<para lang="ru">
@@ -9639,7 +9710,7 @@
</changes>
-<changes ver="0.8.38" date="24.05.2010">
+<changes ver="0.8.38" date="2010-05-24">
<change type="feature">
<para lang="ru">
@@ -9686,7 +9757,7 @@
</changes>
-<changes ver="0.8.37" date="17.05.2010">
+<changes ver="0.8.37" date="2010-05-17">
<change type="feature">
<para lang="ru">
@@ -9760,7 +9831,7 @@
</changes>
-<changes ver="0.8.36" date="22.04.2010">
+<changes ver="0.8.36" date="2010-04-22">
<change type="bugfix">
<para lang="ru">
@@ -9833,7 +9904,7 @@
</changes>
-<changes ver="0.8.35" date="01.04.2010">
+<changes ver="0.8.35" date="2010-04-01">
<change type="change">
<para lang="ru">
@@ -9933,7 +10004,7 @@
</changes>
-<changes ver="0.8.34" date="03.03.2010">
+<changes ver="0.8.34" date="2010-03-03">
<change type="bugfix">
<para lang="ru">
@@ -10044,7 +10115,7 @@
</changes>
-<changes ver="0.8.33" date="01.02.2010">
+<changes ver="0.8.33" date="2010-02-01">
<change type="security">
<para lang="ru">
@@ -10123,7 +10194,7 @@
</changes>
-<changes ver="0.8.32" date="11.01.2010">
+<changes ver="0.8.32" date="2010-01-11">
<change type="bugfix">
<para lang="ru">
@@ -10188,7 +10259,7 @@
</changes>
-<changes ver="0.8.31" date="23.12.2009">
+<changes ver="0.8.31" date="2009-12-23">
<change type="feature">
<para lang="ru">
@@ -10284,7 +10355,7 @@
</changes>
-<changes ver="0.8.30" date="15.12.2009">
+<changes ver="0.8.30" date="2009-12-15">
<change type="change">
<para lang="ru">
@@ -10346,7 +10417,7 @@
</changes>
-<changes ver="0.8.29" date="30.11.2009">
+<changes ver="0.8.29" date="2009-11-30">
<change type="change">
<para lang="ru">
@@ -10425,7 +10496,7 @@
</changes>
-<changes ver="0.8.28" date="23.11.2009">
+<changes ver="0.8.28" date="2009-11-23">
<change type="bugfix">
<para lang="ru">
@@ -10441,7 +10512,7 @@
</changes>
-<changes ver="0.8.27" date="17.11.2009">
+<changes ver="0.8.27" date="2009-11-17">
<change type="bugfix">
<para lang="ru">
@@ -10457,7 +10528,7 @@
</changes>
-<changes ver="0.8.26" date="16.11.2009">
+<changes ver="0.8.26" date="2009-11-16">
<change type="bugfix">
<para lang="ru">
@@ -10484,7 +10555,7 @@
</changes>
-<changes ver="0.8.25" date="16.11.2009">
+<changes ver="0.8.25" date="2009-11-16">
<change type="change">
<para lang="ru">
@@ -10561,7 +10632,7 @@
</changes>
-<changes ver="0.8.24" date="11.11.2009">
+<changes ver="0.8.24" date="2009-11-11">
<change type="bugfix">
<para lang="ru">
@@ -10608,7 +10679,7 @@
</changes>
-<changes ver="0.8.23" date="11.11.2009">
+<changes ver="0.8.23" date="2009-11-11">
<change type="security">
<para lang="ru">
@@ -10664,7 +10735,7 @@
</changes>
-<changes ver="0.8.22" date="03.11.2009">
+<changes ver="0.8.22" date="2009-11-03">
<change type="feature">
<para lang="ru">
@@ -10773,7 +10844,7 @@
</changes>
-<changes ver="0.8.21" date="26.10.2009">
+<changes ver="0.8.21" date="2009-10-26">
<change type="feature">
<para lang="ru">
@@ -10836,7 +10907,7 @@
</changes>
-<changes ver="0.8.20" date="14.10.2009">
+<changes ver="0.8.20" date="2009-10-14">
<change type="change">
<para lang="ru">
@@ -10920,7 +10991,7 @@
</changes>
-<changes ver="0.8.19" date="06.10.2009">
+<changes ver="0.8.19" date="2009-10-06">
<change type="change">
<para lang="ru">
@@ -10955,7 +11026,7 @@
</changes>
-<changes ver="0.8.18" date="06.10.2009">
+<changes ver="0.8.18" date="2009-10-06">
<change type="feature">
<para lang="ru">
@@ -11043,7 +11114,7 @@
</changes>
-<changes ver="0.8.17" date="28.09.2009">
+<changes ver="0.8.17" date="2009-09-28">
<change type="security">
<para lang="ru">
@@ -11086,7 +11157,7 @@
</changes>
-<changes ver="0.8.16" date="22.09.2009">
+<changes ver="0.8.16" date="2009-09-22">
<change type="feature">
<para lang="ru">
@@ -11184,7 +11255,7 @@
</changes>
-<changes ver="0.8.15" date="14.09.2009">
+<changes ver="0.8.15" date="2009-09-14">
<change type="security">
<para lang="ru">
@@ -11253,7 +11324,7 @@
</changes>
-<changes ver="0.8.14" date="07.09.2009">
+<changes ver="0.8.14" date="2009-09-07">
<change type="bugfix">
<para lang="ru">
@@ -11302,7 +11373,7 @@
</changes>
-<changes ver="0.8.13" date="31.08.2009">
+<changes ver="0.8.13" date="2009-08-31">
<change type="bugfix">
<para lang="ru">
@@ -11329,7 +11400,7 @@
</changes>
-<changes ver="0.8.12" date="31.08.2009">
+<changes ver="0.8.12" date="2009-08-31">
<change type="feature">
<para lang="ru">
@@ -11364,7 +11435,7 @@
</changes>
-<changes ver="0.8.11" date="28.08.2009">
+<changes ver="0.8.11" date="2009-08-28">
<change type="change">
<para lang="ru">
@@ -11398,7 +11469,7 @@
</changes>
-<changes ver="0.8.10" date="24.08.2009">
+<changes ver="0.8.10" date="2009-08-24">
<change type="bugfix">
<para lang="ru">
@@ -11423,7 +11494,7 @@
</changes>
-<changes ver="0.8.9" date="17.08.2009">
+<changes ver="0.8.9" date="2009-08-17">
<change type="feature">
<para lang="ru">
@@ -11450,7 +11521,7 @@
</changes>
-<changes ver="0.8.8" date="10.08.2009">
+<changes ver="0.8.8" date="2009-08-10">
<change type="bugfix">
<para lang="ru">
@@ -11479,7 +11550,7 @@
</changes>
-<changes ver="0.8.7" date="27.07.2009">
+<changes ver="0.8.7" date="2009-07-27">
<change type="change">
<para lang="ru">
@@ -11599,7 +11670,7 @@
</changes>
-<changes ver="0.8.6" date="20.07.2009">
+<changes ver="0.8.6" date="2009-07-20">
<change type="feature">
<para lang="ru">
@@ -11662,7 +11733,7 @@
</changes>
-<changes ver="0.8.5" date="13.07.2009">
+<changes ver="0.8.5" date="2009-07-13">
<change type="bugfix">
<para lang="ru">
@@ -11707,7 +11778,7 @@
</changes>
-<changes ver="0.8.4" date="22.06.2009">
+<changes ver="0.8.4" date="2009-06-22">
<change type="bugfix">
<para lang="ru">
@@ -11723,7 +11794,7 @@
</changes>
-<changes ver="0.8.3" date="19.06.2009">
+<changes ver="0.8.3" date="2009-06-19">
<change type="feature">
<para lang="ru">
@@ -11772,7 +11843,7 @@
</changes>
-<changes ver="0.8.2" date="15.06.2009">
+<changes ver="0.8.2" date="2009-06-15">
<change type="bugfix">
<para lang="ru">
@@ -11797,7 +11868,7 @@
</changes>
-<changes ver="0.8.1" date="08.06.2009">
+<changes ver="0.8.1" date="2009-06-08">
<change type="feature">
<para lang="ru">
@@ -11860,7 +11931,7 @@
</changes>
-<changes ver="0.8.0" date="02.06.2009">
+<changes ver="0.8.0" date="2009-06-02">
<change type="feature">
<para lang="ru">
@@ -11923,7 +11994,7 @@
</changes>
-<changes ver="0.7.59" date="25.05.2009">
+<changes ver="0.7.59" date="2009-05-25">
<change type="feature">
<para lang="ru">
@@ -11998,7 +12069,7 @@
</changes>
-<changes ver="0.7.58" date="18.05.2009">
+<changes ver="0.7.58" date="2009-05-18">
<change type="feature">
<para lang="ru">
@@ -12063,7 +12134,7 @@
</changes>
-<changes ver="0.7.57" date="12.05.2009">
+<changes ver="0.7.57" date="2009-05-12">
<change type="bugfix">
<para lang="ru">
@@ -12081,7 +12152,7 @@
</changes>
-<changes ver="0.7.56" date="11.05.2009">
+<changes ver="0.7.56" date="2009-05-11">
<change type="feature">
<para lang="ru">
@@ -12104,7 +12175,7 @@
</changes>
-<changes ver="0.7.55" date="06.05.2009">
+<changes ver="0.7.55" date="2009-05-06">
<change type="bugfix">
<para lang="ru">
@@ -12173,7 +12244,7 @@
</changes>
-<changes ver="0.7.54" date="01.05.2009">
+<changes ver="0.7.54" date="2009-05-01">
<change type="feature">
<para lang="ru">
@@ -12249,7 +12320,7 @@
</changes>
-<changes ver="0.7.53" date="27.04.2009">
+<changes ver="0.7.53" date="2009-04-27">
<change type="change">
<para lang="ru">
@@ -12382,7 +12453,7 @@
</changes>
-<changes ver="0.7.52" date="20.04.2009">
+<changes ver="0.7.52" date="2009-04-20">
<change type="feature">
<para lang="ru">
@@ -12462,7 +12533,7 @@
</changes>
-<changes ver="0.7.51" date="12.04.2009">
+<changes ver="0.7.51" date="2009-04-12">
<change type="feature">
<para lang="ru">
@@ -12509,7 +12580,7 @@
</changes>
-<changes ver="0.7.50" date="06.04.2009">
+<changes ver="0.7.50" date="2009-04-06">
<change type="bugfix">
<para lang="ru">
@@ -12525,7 +12596,7 @@
</changes>
-<changes ver="0.7.49" date="06.04.2009">
+<changes ver="0.7.49" date="2009-04-06">
<change type="bugfix">
<para lang="ru">
@@ -12543,7 +12614,7 @@
</changes>
-<changes ver="0.7.48" date="06.04.2009">
+<changes ver="0.7.48" date="2009-04-06">
<change type="feature">
<para lang="ru">
@@ -12619,7 +12690,7 @@
</changes>
-<changes ver="0.7.47" date="01.04.2009">
+<changes ver="0.7.47" date="2009-04-01">
<change type="bugfix">
<para lang="ru">
@@ -12688,7 +12759,7 @@
</changes>
-<changes ver="0.7.46" date="30.03.2009">
+<changes ver="0.7.46" date="2009-03-30">
<change type="bugfix">
<para lang="ru">
@@ -12702,7 +12773,7 @@
</changes>
-<changes ver="0.7.45" date="30.03.2009">
+<changes ver="0.7.45" date="2009-03-30">
<change type="change">
<para lang="ru">
@@ -12796,7 +12867,7 @@
</changes>
-<changes ver="0.7.44" date="23.03.2009">
+<changes ver="0.7.44" date="2009-03-23">
<change type="feature">
<para lang="ru">
@@ -12859,7 +12930,7 @@
</changes>
-<changes ver="0.7.43" date="18.03.2009">
+<changes ver="0.7.43" date="2009-03-18">
<change type="bugfix">
<para lang="ru">
@@ -12888,7 +12959,7 @@
</changes>
-<changes ver="0.7.42" date="16.03.2009">
+<changes ver="0.7.42" date="2009-03-16">
<change type="change">
<para lang="ru">
@@ -12972,7 +13043,7 @@
</changes>
-<changes ver="0.7.41" date="11.03.2009">
+<changes ver="0.7.41" date="2009-03-11">
<change type="bugfix">
<para lang="ru">
@@ -12993,7 +13064,7 @@
</changes>
-<changes ver="0.7.40" date="09.03.2009">
+<changes ver="0.7.40" date="2009-03-09">
<change type="feature">
<para lang="ru">
@@ -13043,7 +13114,7 @@
</changes>
-<changes ver="0.7.39" date="02.03.2009">
+<changes ver="0.7.39" date="2009-03-02">
<change type="bugfix">
<para lang="ru">
@@ -13072,7 +13143,7 @@
</changes>
-<changes ver="0.7.38" date="23.02.2009">
+<changes ver="0.7.38" date="2009-02-23">
<change type="feature">
<para lang="ru">
@@ -13112,7 +13183,7 @@
</changes>
-<changes ver="0.7.37" date="21.02.2009">
+<changes ver="0.7.37" date="2009-02-21">
<change type="bugfix">
<para lang="ru">
@@ -13128,7 +13199,7 @@
</changes>
-<changes ver="0.7.36" date="21.02.2009">
+<changes ver="0.7.36" date="2009-02-21">
<change type="feature">
<para lang="ru">
@@ -13155,7 +13226,7 @@
</changes>
-<changes ver="0.7.35" date="16.02.2009">
+<changes ver="0.7.35" date="2009-02-16">
<change type="bugfix">
<para lang="ru">
@@ -13199,7 +13270,7 @@
</changes>
-<changes ver="0.7.34" date="10.02.2009">
+<changes ver="0.7.34" date="2009-02-10">
<change type="feature">
<para lang="ru">
@@ -13262,7 +13333,7 @@
</changes>
-<changes ver="0.7.33" date="02.02.2009">
+<changes ver="0.7.33" date="2009-02-02">
<change type="bugfix">
<para lang="ru">
@@ -13301,7 +13372,7 @@
</changes>
-<changes ver="0.7.32" date="26.01.2009">
+<changes ver="0.7.32" date="2009-01-26">
<change type="feature">
<para lang="ru">
@@ -13346,7 +13417,7 @@
</changes>
-<changes ver="0.7.31" date="19.01.2009">
+<changes ver="0.7.31" date="2009-01-19">
<change type="change">
<para lang="ru">
@@ -13418,7 +13489,7 @@
-<changes ver="0.7.30" date="24.12.2008">
+<changes ver="0.7.30" date="2008-12-24">
<change type="bugfix">
<para lang="ru">
@@ -13438,7 +13509,7 @@
</changes>
-<changes ver="0.7.29" date="24.12.2008">
+<changes ver="0.7.29" date="2008-12-24">
<change type="bugfix">
<para lang="ru">
@@ -13485,7 +13556,7 @@
</changes>
-<changes ver="0.7.28" date="22.12.2008">
+<changes ver="0.7.28" date="2008-12-22">
<change type="change">
<para lang="ru">
@@ -13510,7 +13581,7 @@
</changes>
-<changes ver="0.7.27" date="15.12.2008">
+<changes ver="0.7.27" date="2008-12-15">
<change type="feature">
<para lang="ru">
@@ -13606,7 +13677,7 @@
</changes>
-<changes ver="0.7.26" date="08.12.2008">
+<changes ver="0.7.26" date="2008-12-08">
<change type="bugfix">
<para lang="ru">
@@ -13622,7 +13693,7 @@
</changes>
-<changes ver="0.7.25" date="08.12.2008">
+<changes ver="0.7.25" date="2008-12-08">
<change type="change">
<para lang="ru">
@@ -13663,7 +13734,7 @@
</changes>
-<changes ver="0.7.24" date="01.12.2008">
+<changes ver="0.7.24" date="2008-12-01">
<change type="feature">
<para lang="ru">
@@ -13697,7 +13768,7 @@
</changes>
-<changes ver="0.7.23" date="27.11.2008">
+<changes ver="0.7.23" date="2008-11-27">
<change type="feature">
<para lang="ru">
@@ -13729,7 +13800,7 @@
</changes>
-<changes ver="0.7.22" date="20.11.2008">
+<changes ver="0.7.22" date="2008-11-20">
<change type="feature">
<para lang="ru">
@@ -13774,7 +13845,7 @@
</changes>
-<changes ver="0.7.21" date="11.11.2008">
+<changes ver="0.7.21" date="2008-11-11">
<change>
<para lang="ru">
@@ -13821,7 +13892,7 @@
</changes>
-<changes ver="0.7.20" date="10.11.2008">
+<changes ver="0.7.20" date="2008-11-10">
<change>
<para lang="ru">
@@ -13897,7 +13968,7 @@
</changes>
-<changes ver="0.7.19" date="13.10.2008">
+<changes ver="0.7.19" date="2008-10-13">
<change type="bugfix">
<para lang="ru">
@@ -13911,7 +13982,7 @@
</changes>
-<changes ver="0.7.18" date="13.10.2008">
+<changes ver="0.7.18" date="2008-10-13">
<change type="change">
<para lang="ru">
@@ -14002,7 +14073,7 @@
</changes>
-<changes ver="0.7.17" date="15.09.2008">
+<changes ver="0.7.17" date="2008-09-15">
<change type="feature">
<para lang="ru">
@@ -14058,7 +14129,7 @@
</changes>
-<changes ver="0.7.16" date="08.09.2008">
+<changes ver="0.7.16" date="2008-09-08">
<change type="bugfix">
<para lang="ru">
@@ -14074,7 +14145,7 @@
</changes>
-<changes ver="0.7.15" date="08.09.2008">
+<changes ver="0.7.15" date="2008-09-08">
<change type="feature">
<para lang="ru">
@@ -14117,7 +14188,7 @@
</changes>
-<changes ver="0.7.14" date="01.09.2008">
+<changes ver="0.7.14" date="2008-09-01">
<change type="change">
<para lang="ru">
@@ -14185,7 +14256,7 @@
</changes>
-<changes ver="0.7.13" date="26.08.2008">
+<changes ver="0.7.13" date="2008-08-26">
<change type="bugfix">
<para lang="ru">
@@ -14201,7 +14272,7 @@
</changes>
-<changes ver="0.7.12" date="26.08.2008">
+<changes ver="0.7.12" date="2008-08-26">
<change type="feature">
<para lang="ru">
@@ -14271,7 +14342,7 @@
</changes>
-<changes ver="0.7.11" date="18.08.2008">
+<changes ver="0.7.11" date="2008-08-18">
<change type="change">
<para lang="ru">
@@ -14338,7 +14409,7 @@
</changes>
-<changes ver="0.7.10" date="13.08.2008">
+<changes ver="0.7.10" date="2008-08-13">
<change type="bugfix">
<para lang="ru">
@@ -14376,7 +14447,7 @@
</changes>
-<changes ver="0.7.9" date="12.08.2008">
+<changes ver="0.7.9" date="2008-08-12">
<change type="change">
<para lang="ru">
@@ -14478,7 +14549,7 @@
</changes>
-<changes ver="0.7.8" date="04.08.2008">
+<changes ver="0.7.8" date="2008-08-04">
<change type="feature">
<para lang="ru">
@@ -14525,7 +14596,7 @@
</changes>
-<changes ver="0.7.7" date="30.07.2008">
+<changes ver="0.7.7" date="2008-07-30">
<change type="change">
<para lang="ru">
@@ -14624,7 +14695,7 @@
</changes>
-<changes ver="0.7.6" date="07.07.2008">
+<changes ver="0.7.6" date="2008-07-07">
<change type="bugfix">
<para lang="ru">
@@ -14650,7 +14721,7 @@
</changes>
-<changes ver="0.7.5" date="01.07.2008">
+<changes ver="0.7.5" date="2008-07-01">
<change>
<para lang="ru">
@@ -14690,7 +14761,7 @@
</changes>
-<changes ver="0.7.4" date="30.06.2008">
+<changes ver="0.7.4" date="2008-06-30">
<change type="feature">
<para lang="ru">
@@ -14740,7 +14811,7 @@
</changes>
-<changes ver="0.7.3" date="23.06.2008">
+<changes ver="0.7.3" date="2008-06-23">
<change type="change">
<para lang="ru">
@@ -14789,7 +14860,7 @@
</changes>
-<changes ver="0.7.2" date="16.06.2008">
+<changes ver="0.7.2" date="2008-06-16">
<change type="feature">
<para lang="ru">
@@ -14859,7 +14930,7 @@
</changes>
-<changes ver="0.7.1" date="26.05.2008">
+<changes ver="0.7.1" date="2008-05-26">
<change type="change">
<para lang="ru">
@@ -14927,7 +14998,7 @@
</changes>
-<changes ver="0.7.0" date="19.05.2008">
+<changes ver="0.7.0" date="2008-05-19">
<change type="change">
<para lang="ru">
@@ -15005,7 +15076,7 @@
</changes>
-<changes ver="0.6.31" date="12.05.2008">
+<changes ver="0.6.31" date="2008-05-12">
<change type="bugfix">
<para lang="ru">
@@ -15036,7 +15107,7 @@
</changes>
-<changes ver="0.6.30" date="29.04.2008">
+<changes ver="0.6.30" date="2008-04-29">
<change type="change">
<para lang="ru">
@@ -15112,7 +15183,7 @@
</changes>
-<changes ver="0.6.29" date="18.03.2008">
+<changes ver="0.6.29" date="2008-03-18">
<change type="feature">
<para lang="ru">
@@ -15137,7 +15208,7 @@
</changes>
-<changes ver="0.6.28" date="13.03.2008">
+<changes ver="0.6.28" date="2008-03-13">
<change type="bugfix">
<para lang="ru">
@@ -15153,7 +15224,7 @@
</changes>
-<changes ver="0.6.27" date="12.03.2008">
+<changes ver="0.6.27" date="2008-03-12">
<change type="change">
<para lang="ru">
@@ -15323,7 +15394,7 @@
</changes>
-<changes ver="0.6.26" date="11.02.2008">
+<changes ver="0.6.26" date="2008-02-11">
<change type="bugfix">
<para lang="ru">
@@ -15406,7 +15477,7 @@
</changes>
-<changes ver="0.6.25" date="08.01.2008">
+<changes ver="0.6.25" date="2008-01-08">
<change type="change">
<para lang="ru">
@@ -15504,7 +15575,7 @@
</changes>
-<changes ver="0.6.24" date="27.12.2007">
+<changes ver="0.6.24" date="2007-12-27">
<change type="bugfix">
<para lang="ru">
@@ -15520,7 +15591,7 @@
</changes>
-<changes ver="0.6.23" date="27.12.2007">
+<changes ver="0.6.23" date="2007-12-27">
<change type="change">
<para lang="ru">
@@ -15659,7 +15730,7 @@
</changes>
-<changes ver="0.6.22" date="19.12.2007">
+<changes ver="0.6.22" date="2007-12-19">
<change type="change">
<para lang="ru">
@@ -15766,7 +15837,7 @@
</changes>
-<changes ver="0.6.21" date="03.12.2007">
+<changes ver="0.6.21" date="2007-12-03">
<change type="change">
<para lang="ru">
@@ -15834,7 +15905,7 @@
</changes>
-<changes ver="0.6.20" date="28.11.2007">
+<changes ver="0.6.20" date="2007-11-28">
<change type="bugfix">
<para lang="ru">
@@ -15852,7 +15923,7 @@
</changes>
-<changes ver="0.6.19" date="27.11.2007">
+<changes ver="0.6.19" date="2007-11-27">
<change type="bugfix">
<para lang="ru">
@@ -15865,7 +15936,7 @@
</changes>
-<changes ver="0.6.18" date="27.11.2007">
+<changes ver="0.6.18" date="2007-11-27">
<change type="change">
<para lang="ru">
@@ -15930,7 +16001,7 @@
</changes>
-<changes ver="0.6.17" date="15.11.2007">
+<changes ver="0.6.17" date="2007-11-15">
<change type="feature">
<para lang="ru">
@@ -15997,7 +16068,7 @@
</changes>
-<changes ver="0.6.16" date="29.10.2007">
+<changes ver="0.6.16" date="2007-10-29">
<change type="change">
<para lang="ru">
@@ -16035,7 +16106,7 @@
</changes>
-<changes ver="0.6.15" date="22.10.2007">
+<changes ver="0.6.15" date="2007-10-22">
<change type="feature">
<para lang="ru">
@@ -16137,7 +16208,7 @@
</changes>
-<changes ver="0.6.14" date="15.10.2007">
+<changes ver="0.6.14" date="2007-10-15">
<change type="change">
<para lang="ru">
@@ -16258,7 +16329,7 @@
</changes>
-<changes ver="0.6.13" date="24.09.2007">
+<changes ver="0.6.13" date="2007-09-24">
<change type="bugfix">
<para lang="ru">
@@ -16275,7 +16346,7 @@
</changes>
-<changes ver="0.6.12" date="21.09.2007">
+<changes ver="0.6.12" date="2007-09-21">
<change type="change">
<para lang="ru">
@@ -16345,7 +16416,7 @@
</changes>
-<changes ver="0.6.11" date="11.09.2007">
+<changes ver="0.6.11" date="2007-09-11">
<change type="bugfix">
<para lang="ru">
@@ -16393,7 +16464,7 @@
</changes>
-<changes ver="0.6.10" date="03.09.2007">
+<changes ver="0.6.10" date="2007-09-03">
<change type="feature">
<para lang="ru">
@@ -16441,7 +16512,7 @@
</changes>
-<changes ver="0.6.9" date="28.08.2007">
+<changes ver="0.6.9" date="2007-08-28">
<change type="bugfix">
<para lang="ru">
@@ -16489,7 +16560,7 @@
</changes>
-<changes ver="0.6.8" date="20.08.2007">
+<changes ver="0.6.8" date="2007-08-20">
<change type="change">
<para lang="ru">
@@ -16549,7 +16620,7 @@
</changes>
-<changes ver="0.6.7" date="15.08.2007">
+<changes ver="0.6.7" date="2007-08-15">
<change type="change">
<para lang="ru">
@@ -16689,7 +16760,7 @@
</changes>
-<changes ver="0.6.6" date="30.07.2007">
+<changes ver="0.6.6" date="2007-07-30">
<change type="feature">
<para lang="ru">
@@ -16772,7 +16843,7 @@
</changes>
-<changes ver="0.6.5" date="23.07.2007">
+<changes ver="0.6.5" date="2007-07-23">
<change type="feature">
<para lang="ru">
@@ -16841,7 +16912,7 @@
</changes>
-<changes ver="0.6.4" date="17.07.2007">
+<changes ver="0.6.4" date="2007-07-17">
<change type="security">
<para lang="ru">
@@ -16897,7 +16968,7 @@
</changes>
-<changes ver="0.6.3" date="12.07.2007">
+<changes ver="0.6.3" date="2007-07-12">
<change type="feature">
<para lang="ru">
@@ -16969,7 +17040,7 @@
</changes>
-<changes ver="0.6.2" date="09.07.2007">
+<changes ver="0.6.2" date="2007-07-09">
<change type="bugfix">
<para lang="ru">
@@ -16985,7 +17056,7 @@
</changes>
-<changes ver="0.6.1" date="17.06.2007">
+<changes ver="0.6.1" date="2007-06-17">
<change type="bugfix">
<para lang="ru">
@@ -17031,7 +17102,7 @@
</changes>
-<changes ver="0.6.0" date="14.06.2007">
+<changes ver="0.6.0" date="2007-06-14">
<change type="feature">
<para lang="ru">
@@ -17047,7 +17118,7 @@
</changes>
-<changes ver="0.5.25" date="11.06.2007">
+<changes ver="0.5.25" date="2007-06-11">
<change type="bugfix">
<para lang="ru">
@@ -17063,7 +17134,7 @@
</changes>
-<changes ver="0.5.24" date="06.06.2007">
+<changes ver="0.5.24" date="2007-06-06">
<change type="security">
<para lang="ru">
@@ -17090,7 +17161,7 @@
</changes>
-<changes ver="0.5.23" date="04.06.2007">
+<changes ver="0.5.23" date="2007-06-04">
<change type="feature">
<para lang="ru">
@@ -17148,7 +17219,7 @@
</changes>
-<changes ver="0.5.22" date="29.05.2007">
+<changes ver="0.5.22" date="2007-05-29">
<change type="bugfix">
<para lang="ru">
@@ -17164,7 +17235,7 @@
</changes>
-<changes ver="0.5.21" date="28.05.2007">
+<changes ver="0.5.21" date="2007-05-28">
<change type="bugfix">
<para lang="ru">
@@ -17215,7 +17286,7 @@
</changes>
-<changes ver="0.5.20" date="07.05.2007">
+<changes ver="0.5.20" date="2007-05-07">
<change type="feature">
<para lang="ru">
@@ -17284,7 +17355,7 @@
</changes>
-<changes ver="0.5.19" date="24.04.2007">
+<changes ver="0.5.19" date="2007-04-24">
<change type="change">
<para lang="ru">
@@ -17350,7 +17421,7 @@
</changes>
-<changes ver="0.5.18" date="19.04.2007">
+<changes ver="0.5.18" date="2007-04-19">
<change type="feature">
<para lang="ru">
@@ -17414,7 +17485,7 @@
</changes>
-<changes ver="0.5.17" date="02.04.2007">
+<changes ver="0.5.17" date="2007-04-02">
<change type="change">
<para lang="ru">
@@ -17468,7 +17539,7 @@
</changes>
-<changes ver="0.5.16" date="26.03.2007">
+<changes ver="0.5.16" date="2007-03-26">
<change type="bugfix">
<para lang="ru">
@@ -17522,7 +17593,7 @@
</changes>
-<changes ver="0.5.15" date="19.03.2007">
+<changes ver="0.5.15" date="2007-03-19">
<change type="feature">
<para lang="ru">
@@ -17615,7 +17686,7 @@
</changes>
-<changes ver="0.5.14" date="23.02.2007">
+<changes ver="0.5.14" date="2007-02-23">
<change type="bugfix">
<para lang="ru">
@@ -17630,7 +17701,7 @@
</changes>
-<changes ver="0.5.13" date="19.02.2007">
+<changes ver="0.5.13" date="2007-02-19">
<change type="feature">
<para lang="ru">
@@ -17701,7 +17772,7 @@
</changes>
-<changes ver="0.5.12" date="12.02.2007">
+<changes ver="0.5.12" date="2007-02-12">
<change type="bugfix">
<para lang="ru">
@@ -17751,7 +17822,7 @@
</changes>
-<changes ver="0.5.11" date="05.02.2007">
+<changes ver="0.5.11" date="2007-02-05">
<change type="feature">
<para lang="ru">
@@ -17812,7 +17883,7 @@
</changes>
-<changes ver="0.5.10" date="26.01.2007">
+<changes ver="0.5.10" date="2007-01-26">
<change type="bugfix">
<para lang="ru">
@@ -17843,7 +17914,7 @@
</changes>
-<changes ver="0.5.9" date="25.01.2007">
+<changes ver="0.5.9" date="2007-01-25">
<change type="change">
<para lang="ru">
@@ -17915,7 +17986,7 @@
</changes>
-<changes ver="0.5.8" date="19.01.2007">
+<changes ver="0.5.8" date="2007-01-19">
<change type="bugfix">
<para lang="ru">
@@ -17992,7 +18063,7 @@
</changes>
-<changes ver="0.5.7" date="15.01.2007">
+<changes ver="0.5.7" date="2007-01-15">
<change type="feature">
<para lang="ru">
@@ -18059,7 +18130,7 @@
</changes>
-<changes ver="0.5.6" date="09.01.2007">
+<changes ver="0.5.6" date="2007-01-09">
<change type="change">
<para lang="ru">
@@ -18121,7 +18192,7 @@
</changes>
-<changes ver="0.5.5" date="24.12.2006">
+<changes ver="0.5.5" date="2006-12-24">
<change type="change">
<para lang="ru">
@@ -18182,7 +18253,7 @@
</changes>
-<changes ver="0.5.4" date="15.12.2006">
+<changes ver="0.5.4" date="2006-12-15">
<change type="feature">
<para lang="ru">
@@ -18229,7 +18300,7 @@
</changes>
-<changes ver="0.5.3" date="13.12.2006">
+<changes ver="0.5.3" date="2006-12-13">
<change type="feature">
<para lang="ru">
@@ -18264,7 +18335,7 @@
</changes>
-<changes ver="0.5.2" date="11.12.2006">
+<changes ver="0.5.2" date="2006-12-11">
<change type="bugfix">
<para lang="ru">
@@ -18282,7 +18353,7 @@
</changes>
-<changes ver="0.5.1" date="11.12.2006">
+<changes ver="0.5.1" date="2006-12-11">
<change type="bugfix">
<para lang="ru">
@@ -18374,7 +18445,7 @@
</changes>
-<changes ver="0.5.0" date="04.12.2006">
+<changes ver="0.5.0" date="2006-12-04">
<change type="change">
<para lang="ru">
@@ -18446,7 +18517,7 @@
</changes>
-<changes ver="0.4.14" date="27.11.2006">
+<changes ver="0.4.14" date="2006-11-27">
<change type="feature">
<para lang="ru">
@@ -18542,7 +18613,7 @@
</changes>
-<changes ver="0.4.13" date="15.11.2006">
+<changes ver="0.4.13" date="2006-11-15">
<change type="feature">
<para lang="ru">
@@ -18629,7 +18700,7 @@
</changes>
-<changes ver="0.4.12" date="31.10.2006">
+<changes ver="0.4.12" date="2006-10-31">
<change type="feature">
<para lang="ru">
@@ -18663,7 +18734,7 @@
</changes>
-<changes ver="0.4.11" date="25.10.2006">
+<changes ver="0.4.11" date="2006-10-25">
<change type="feature">
<para lang="ru">
@@ -18699,7 +18770,7 @@
</changes>
-<changes ver="0.4.10" date="23.10.2006">
+<changes ver="0.4.10" date="2006-10-23">
<change type="feature">
<para lang="ru">
@@ -18757,7 +18828,7 @@
</changes>
-<changes ver="0.4.9" date="13.10.2006">
+<changes ver="0.4.9" date="2006-10-13">
<change type="feature">
<para lang="ru">
@@ -18780,7 +18851,7 @@
</changes>
-<changes ver="0.4.8" date="11.10.2006">
+<changes ver="0.4.8" date="2006-10-11">
<change type="bugfix">
<para lang="ru">
@@ -18807,7 +18878,7 @@
</changes>
-<changes ver="0.4.7" date="10.10.2006">
+<changes ver="0.4.7" date="2006-10-10">
<change type="feature">
<para lang="ru">
@@ -18870,7 +18941,7 @@
</changes>
-<changes ver="0.4.6" date="06.10.2006">
+<changes ver="0.4.6" date="2006-10-06">
<change type="bugfix">
<para lang="ru">
@@ -18910,7 +18981,7 @@
</changes>
-<changes ver="0.4.5" date="02.10.2006">
+<changes ver="0.4.5" date="2006-10-02">
<change type="bugfix">
<para lang="ru">
@@ -18926,7 +18997,7 @@
</changes>
-<changes ver="0.4.4" date="02.10.2006">
+<changes ver="0.4.4" date="2006-10-02">
<change type="feature">
<para lang="ru">
@@ -18992,7 +19063,7 @@
</changes>
-<changes ver="0.4.3" date="26.09.2006">
+<changes ver="0.4.3" date="2006-09-26">
<change type="change">
<para lang="ru">
@@ -19067,7 +19138,7 @@
</changes>
-<changes ver="0.4.2" date="14.09.2006">
+<changes ver="0.4.2" date="2006-09-14">
<change type="bugfix">
<para lang="ru">
@@ -19083,7 +19154,7 @@
</changes>
-<changes ver="0.4.1" date="14.09.2006">
+<changes ver="0.4.1" date="2006-09-14">
<change type="bugfix">
<para lang="ru">
@@ -19119,7 +19190,7 @@
</changes>
-<changes ver="0.4.0" date="30.08.2006">
+<changes ver="0.4.0" date="2006-08-30">
<change>
<para lang="ru">
@@ -19188,7 +19259,7 @@
</changes>
-<changes ver="0.3.61" date="28.08.2006">
+<changes ver="0.3.61" date="2006-08-28">
<change type="change">
<para lang="ru">
@@ -19231,7 +19302,7 @@
</changes>
-<changes ver="0.3.60" date="18.08.2006">
+<changes ver="0.3.60" date="2006-08-18">
<change type="bugfix">
<para lang="ru">
@@ -19248,7 +19319,7 @@
</changes>
-<changes ver="0.3.59" date="16.08.2006">
+<changes ver="0.3.59" date="2006-08-16">
<change type="feature">
<para lang="ru">
@@ -19284,7 +19355,7 @@
</changes>
-<changes ver="0.3.58" date="14.08.2006">
+<changes ver="0.3.58" date="2006-08-14">
<change type="feature">
<para lang="ru">
@@ -19347,7 +19418,7 @@
</changes>
-<changes ver="0.3.57" date="09.08.2006">
+<changes ver="0.3.57" date="2006-08-09">
<change type="feature">
<para lang="ru">
@@ -19393,7 +19464,7 @@
</changes>
-<changes ver="0.3.56" date="04.08.2006">
+<changes ver="0.3.56" date="2006-08-04">
<change type="feature">
<para lang="ru">
@@ -19428,7 +19499,7 @@
</changes>
-<changes ver="0.3.55" date="28.07.2006">
+<changes ver="0.3.55" date="2006-07-28">
<change type="feature">
<para lang="ru">
@@ -19518,7 +19589,7 @@
</changes>
-<changes ver="0.3.54" date="11.07.2006">
+<changes ver="0.3.54" date="2006-07-11">
<change type="feature">
<para lang="ru">
@@ -19585,7 +19656,7 @@
</changes>
-<changes ver="0.3.53" date="07.07.2006">
+<changes ver="0.3.53" date="2006-07-07">
<change type="change">
<para lang="ru">
@@ -19658,7 +19729,7 @@
</changes>
-<changes ver="0.3.52" date="03.07.2006">
+<changes ver="0.3.52" date="2006-07-03">
<change type="change">
<para lang="ru">
@@ -19709,7 +19780,7 @@
</changes>
-<changes ver="0.3.51" date="30.06.2006">
+<changes ver="0.3.51" date="2006-06-30">
<change type="bugfix">
<para lang="ru">
@@ -19725,7 +19796,7 @@
</changes>
-<changes ver="0.3.50" date="28.06.2006">
+<changes ver="0.3.50" date="2006-06-28">
<change type="change">
<para lang="ru">
@@ -19799,7 +19870,7 @@
</changes>
-<changes ver="0.3.49" date="31.05.2006">
+<changes ver="0.3.49" date="2006-05-31">
<change type="bugfix">
<para lang="ru">
@@ -19825,7 +19896,7 @@
</changes>
-<changes ver="0.3.48" date="29.05.2006">
+<changes ver="0.3.48" date="2006-05-29">
<change type="change">
<para lang="ru">
@@ -19881,7 +19952,7 @@
</changes>
-<changes ver="0.3.47" date="23.05.2006">
+<changes ver="0.3.47" date="2006-05-23">
<change type="feature">
<para lang="ru">
@@ -19905,7 +19976,7 @@
</changes>
-<changes ver="0.3.46" date="11.05.2006">
+<changes ver="0.3.46" date="2006-05-11">
<change type="feature">
<para lang="ru">
@@ -19951,7 +20022,7 @@
</changes>
-<changes ver="0.3.45" date="06.05.2006">
+<changes ver="0.3.45" date="2006-05-06">
<change type="feature">
<para lang="ru">
@@ -20006,7 +20077,7 @@
</changes>
-<changes ver="0.3.44" date="04.05.2006">
+<changes ver="0.3.44" date="2006-05-04">
<change type="feature">
<para lang="ru">
@@ -20039,7 +20110,7 @@
</changes>
-<changes ver="0.3.43" date="26.04.2006">
+<changes ver="0.3.43" date="2006-04-26">
<change type="bugfix">
<para lang="ru">
@@ -20053,7 +20124,7 @@
</changes>
-<changes ver="0.3.42" date="26.04.2006">
+<changes ver="0.3.42" date="2006-04-26">
<change type="feature">
<para lang="ru">
@@ -20101,7 +20172,7 @@
</changes>
-<changes ver="0.3.41" date="21.04.2006">
+<changes ver="0.3.41" date="2006-04-21">
<change type="feature">
<para lang="ru">
@@ -20147,7 +20218,7 @@
</changes>
-<changes ver="0.3.40" date="19.04.2006">
+<changes ver="0.3.40" date="2006-04-19">
<change type="feature">
<para lang="ru">
@@ -20179,7 +20250,7 @@
</changes>
-<changes ver="0.3.39" date="17.04.2006">
+<changes ver="0.3.39" date="2006-04-17">
<change type="feature">
<para lang="ru">
@@ -20239,7 +20310,7 @@
</changes>
-<changes ver="0.3.38" date="14.04.2006">
+<changes ver="0.3.38" date="2006-04-14">
<change type="feature">
<para lang="ru">
@@ -20320,7 +20391,7 @@
</changes>
-<changes ver="0.3.37" date="07.04.2006">
+<changes ver="0.3.37" date="2006-04-07">
<change type="feature">
<para lang="ru">
@@ -20361,7 +20432,7 @@
</changes>
-<changes ver="0.3.36" date="05.04.2006">
+<changes ver="0.3.36" date="2006-04-05">
<change type="feature">
<para lang="ru">
@@ -20457,7 +20528,7 @@
</changes>
-<changes ver="0.3.35" date="22.03.2006">
+<changes ver="0.3.35" date="2006-03-22">
<change type="bugfix">
<para lang="ru">
@@ -20484,7 +20555,7 @@
</changes>
-<changes ver="0.3.34" date="21.03.2006">
+<changes ver="0.3.34" date="2006-03-21">
<change type="feature">
<para lang="ru">
@@ -20498,7 +20569,7 @@
</changes>
-<changes ver="0.3.33" date="15.03.2006">
+<changes ver="0.3.33" date="2006-03-15">
<change type="feature">
<para lang="ru">
@@ -20533,7 +20604,7 @@
</changes>
-<changes ver="0.3.32" date="11.03.2006">
+<changes ver="0.3.32" date="2006-03-11">
<change type="bugfix">
<para lang="ru">
@@ -20549,7 +20620,7 @@
</changes>
-<changes ver="0.3.31" date="10.03.2006">
+<changes ver="0.3.31" date="2006-03-10">
<change type="change">
<para lang="ru">
@@ -20628,7 +20699,7 @@
</changes>
-<changes ver="0.3.30" date="22.02.2006">
+<changes ver="0.3.30" date="2006-02-22">
<change type="change">
<para lang="ru">
@@ -20663,7 +20734,7 @@
</changes>
-<changes ver="0.3.29" date="20.02.2006">
+<changes ver="0.3.29" date="2006-02-20">
<change type="feature">
<para lang="ru">
@@ -20712,7 +20783,7 @@
</changes>
-<changes ver="0.3.28" date="16.02.2006">
+<changes ver="0.3.28" date="2006-02-16">
<change type="feature">
<para lang="ru">
@@ -20779,7 +20850,7 @@
</changes>
-<changes ver="0.3.27" date="08.02.2006">
+<changes ver="0.3.27" date="2006-02-08">
<change type="change">
<para lang="ru">
@@ -20853,7 +20924,7 @@
</changes>
-<changes ver="0.3.26" date="03.02.2006">
+<changes ver="0.3.26" date="2006-02-03">
<change type="change">
<para lang="ru">
@@ -20878,7 +20949,7 @@
</changes>
-<changes ver="0.3.25" date="01.02.2006">
+<changes ver="0.3.25" date="2006-02-01">
<change type="bugfix">
<para lang="ru">
@@ -20896,7 +20967,7 @@
</changes>
-<changes ver="0.3.24" date="01.02.2006">
+<changes ver="0.3.24" date="2006-02-01">
<change type="workaround">
<para lang="ru">
@@ -20951,7 +21022,7 @@
</changes>
-<changes ver="0.3.23" date="24.01.2006">
+<changes ver="0.3.23" date="2006-01-24">
<change type="feature">
<para lang="ru">
@@ -20983,7 +21054,7 @@
</changes>
-<changes ver="0.3.22" date="17.01.2006">
+<changes ver="0.3.22" date="2006-01-17">
<change type="feature">
<para lang="ru">
@@ -21019,7 +21090,7 @@
</changes>
-<changes ver="0.3.21" date="16.01.2006">
+<changes ver="0.3.21" date="2006-01-16">
<change type="feature">
<para lang="ru">
@@ -21042,7 +21113,7 @@
</changes>
-<changes ver="0.3.20" date="11.01.2006">
+<changes ver="0.3.20" date="2006-01-11">
<change type="bugfix">
<para lang="ru">
@@ -21064,7 +21135,7 @@
</changes>
-<changes ver="0.3.19" date="28.12.2005">
+<changes ver="0.3.19" date="2005-12-28">
<change type="feature">
<para lang="ru">
@@ -21096,7 +21167,7 @@
</changes>
-<changes ver="0.3.18" date="26.12.2005">
+<changes ver="0.3.18" date="2005-12-26">
<change type="feature">
<para lang="ru">
@@ -21191,7 +21262,7 @@
</changes>
-<changes ver="0.3.17" date="18.12.2005">
+<changes ver="0.3.17" date="2005-12-18">
<change type="change">
<para lang="ru">
@@ -21245,7 +21316,7 @@
</changes>
-<changes ver="0.3.16" date="16.12.2005">
+<changes ver="0.3.16" date="2005-12-16">
<change type="feature">
<para lang="ru">
@@ -21332,7 +21403,7 @@
</changes>
-<changes ver="0.3.15" date="07.12.2005">
+<changes ver="0.3.15" date="2005-12-07">
<change type="feature">
<para lang="ru">
@@ -21366,7 +21437,7 @@
</changes>
-<changes ver="0.3.14" date="05.12.2005">
+<changes ver="0.3.14" date="2005-12-05">
<change type="bugfix">
<para lang="ru">
@@ -21382,7 +21453,7 @@
</changes>
-<changes ver="0.3.13" date="05.12.2005">
+<changes ver="0.3.13" date="2005-12-05">
<change type="feature">
<para lang="ru">
@@ -21436,7 +21507,7 @@
</changes>
-<changes ver="0.3.12" date="26.11.2005">
+<changes ver="0.3.12" date="2005-11-26">
<change type="security">
<para lang="ru">
@@ -21559,7 +21630,7 @@
</changes>
-<changes ver="0.3.11" date="15.11.2005">
+<changes ver="0.3.11" date="2005-11-15">
<change type="bugfix">
<para lang="ru">
@@ -21575,7 +21646,7 @@
</changes>
-<changes ver="0.3.10" date="15.11.2005">
+<changes ver="0.3.10" date="2005-11-15">
<change type="change">
<para lang="ru">
@@ -21694,7 +21765,7 @@
</changes>
-<changes ver="0.3.9" date="10.11.2005">
+<changes ver="0.3.9" date="2005-11-10">
<change type="bugfix">
<para lang="ru">
@@ -21711,7 +21782,7 @@
</changes>
-<changes ver="0.3.8" date="09.11.2005">
+<changes ver="0.3.8" date="2005-11-09">
<change type="security">
<para lang="ru">
@@ -21885,7 +21956,7 @@
</changes>
-<changes ver="0.3.7" date="27.10.2005">
+<changes ver="0.3.7" date="2005-10-27">
<change type="feature">
<para lang="ru">
@@ -21911,7 +21982,7 @@
</changes>
-<changes ver="0.3.6" date="24.10.2005">
+<changes ver="0.3.6" date="2005-10-24">
<change type="change">
<para lang="ru">
@@ -21957,7 +22028,7 @@
</changes>
-<changes ver="0.3.5" date="21.10.2005">
+<changes ver="0.3.5" date="2005-10-21">
<change type="bugfix">
<para lang="ru">
@@ -21997,7 +22068,7 @@
</changes>
-<changes ver="0.3.4" date="19.10.2005">
+<changes ver="0.3.4" date="2005-10-19">
<change type="bugfix">
<para lang="ru">
@@ -22013,7 +22084,7 @@
</changes>
-<changes ver="0.3.3" date="19.10.2005">
+<changes ver="0.3.3" date="2005-10-19">
<change type="change">
<para lang="ru">
@@ -22148,7 +22219,7 @@
</changes>
-<changes ver="0.3.2" date="12.10.2005">
+<changes ver="0.3.2" date="2005-10-12">
<change type="feature">
<para lang="ru">
@@ -22174,7 +22245,7 @@
</changes>
-<changes ver="0.3.1" date="10.10.2005">
+<changes ver="0.3.1" date="2005-10-10">
<change type="bugfix">
<para lang="ru">
@@ -22201,7 +22272,7 @@
</changes>
-<changes ver="0.3.0" date="07.10.2005">
+<changes ver="0.3.0" date="2005-10-07">
<change type="change">
<para lang="ru">
@@ -22217,7 +22288,7 @@
</changes>
-<changes ver="0.2.6" date="05.10.2005">
+<changes ver="0.2.6" date="2005-10-05">
<change type="change">
<para lang="ru">
@@ -22292,7 +22363,7 @@
</changes>
-<changes ver="0.2.5" date="04.10.2005">
+<changes ver="0.2.5" date="2005-10-04">
<change type="change">
<para lang="ru">
@@ -22337,7 +22408,7 @@
</changes>
-<changes ver="0.2.4" date="03.10.2005">
+<changes ver="0.2.4" date="2005-10-03">
<change type="feature">
<para lang="ru">
@@ -22377,7 +22448,7 @@
</changes>
-<changes ver="0.2.3" date="30.09.2005">
+<changes ver="0.2.3" date="2005-09-30">
<change type="bugfix">
<para lang="ru">
@@ -22393,7 +22464,7 @@
</changes>
-<changes ver="0.2.2" date="30.09.2005">
+<changes ver="0.2.2" date="2005-09-30">
<change type="feature">
<para lang="ru">
@@ -22467,7 +22538,7 @@
</changes>
-<changes ver="0.2.1" date="23.09.2005">
+<changes ver="0.2.1" date="2005-09-23">
<change type="bugfix">
<para lang="ru">
@@ -22485,7 +22556,7 @@
</changes>
-<changes ver="0.2.0" date="23.09.2005">
+<changes ver="0.2.0" date="2005-09-23">
<change>
<para lang="ru">
@@ -22619,7 +22690,7 @@
</changes>
-<changes ver="0.1.45" date="08.09.2005">
+<changes ver="0.1.45" date="2005-09-08">
<change type="change">
<para lang="ru">
@@ -22654,7 +22725,7 @@
</changes>
-<changes ver="0.1.44" date="06.09.2005">
+<changes ver="0.1.44" date="2005-09-06">
<change type="feature">
<para lang="ru">
@@ -22697,7 +22768,7 @@
</changes>
-<changes ver="0.1.43" date="30.08.2005">
+<changes ver="0.1.43" date="2005-08-30">
<change type="feature">
<para lang="ru">
@@ -22762,7 +22833,7 @@
</changes>
-<changes ver="0.1.42" date="23.08.2005">
+<changes ver="0.1.42" date="2005-08-23">
<change type="bugfix">
<para lang="ru">
@@ -22791,7 +22862,7 @@
</changes>
-<changes ver="0.1.41" date="25.07.2005">
+<changes ver="0.1.41" date="2005-07-25">
<change type="bugfix">
<para lang="ru">
@@ -22807,7 +22878,7 @@
</changes>
-<changes ver="0.1.40" date="22.07.2005">
+<changes ver="0.1.40" date="2005-07-22">
<change type="bugfix">
<para lang="ru">
@@ -22866,7 +22937,7 @@
</changes>
-<changes ver="0.1.39" date="14.07.2005">
+<changes ver="0.1.39" date="2005-07-14">
<change>
<para lang="ru">
@@ -22985,7 +23056,7 @@
</changes>
-<changes ver="0.1.38" date="08.07.2005">
+<changes ver="0.1.38" date="2005-07-08">
<change type="feature">
<para lang="ru">
@@ -23108,7 +23179,7 @@
</changes>
-<changes ver="0.1.37" date="23.06.2005">
+<changes ver="0.1.37" date="2005-06-23">
<change type="change">
<para lang="ru">
@@ -23146,7 +23217,7 @@
</changes>
-<changes ver="0.1.36" date="15.06.2005">
+<changes ver="0.1.36" date="2005-06-15">
<change type="change">
<para lang="ru">
@@ -23219,7 +23290,7 @@
</changes>
-<changes ver="0.1.35" date="07.06.2005">
+<changes ver="0.1.35" date="2005-06-07">
<change type="feature">
<para lang="ru">
@@ -23291,7 +23362,7 @@
</changes>
-<changes ver="0.1.34" date="26.05.2005">
+<changes ver="0.1.34" date="2005-05-26">
<change type="bugfix">
<para lang="ru">
@@ -23334,7 +23405,7 @@
</changes>
-<changes ver="0.1.33" date="23.05.2005">
+<changes ver="0.1.33" date="2005-05-23">
<change type="bugfix">
<para lang="ru">
@@ -23381,7 +23452,7 @@
</changes>
-<changes ver="0.1.32" date="19.05.2005">
+<changes ver="0.1.32" date="2005-05-19">
<change type="bugfix">
<para lang="ru">
@@ -23427,7 +23498,7 @@
</changes>
-<changes ver="0.1.31" date="16.05.2005">
+<changes ver="0.1.31" date="2005-05-16">
<change type="bugfix">
<para lang="ru">
@@ -23470,7 +23541,7 @@
</changes>
-<changes ver="0.1.30" date="14.05.2005">
+<changes ver="0.1.30" date="2005-05-14">
<change type="bugfix">
<para lang="ru">
@@ -23533,7 +23604,7 @@
</changes>
-<changes ver="0.1.29" date="12.05.2005">
+<changes ver="0.1.29" date="2005-05-12">
<change type="feature">
<para lang="ru">
@@ -23846,7 +23917,7 @@
</changes>
-<changes ver="0.1.28" date="08.04.2005">
+<changes ver="0.1.28" date="2005-04-08">
<change type="bugfix">
<para lang="ru">
@@ -23869,7 +23940,7 @@
</changes>
-<changes ver="0.1.27" date="28.03.2005">
+<changes ver="0.1.27" date="2005-03-28">
<change type="feature">
<para lang="ru">
@@ -23928,7 +23999,7 @@
</changes>
-<changes ver="0.1.26" date="22.03.2005">
+<changes ver="0.1.26" date="2005-03-22">
<change type="change">
<para lang="ru">
@@ -23964,7 +24035,7 @@
</changes>
-<changes ver="0.1.25" date="19.03.2005">
+<changes ver="0.1.25" date="2005-03-19">
<change type="bugfix">
<para lang="ru">
@@ -24081,7 +24152,7 @@
</changes>
-<changes ver="0.1.24" date="04.03.2005">
+<changes ver="0.1.24" date="2005-03-04">
<change type="feature">
<para lang="ru">
@@ -24127,7 +24198,7 @@
</changes>
-<changes ver="0.1.23" date="01.03.2005">
+<changes ver="0.1.23" date="2005-03-01">
<change type="feature">
<para lang="ru">
@@ -24203,7 +24274,7 @@
</changes>
-<changes ver="0.1.22" date="22.02.2005">
+<changes ver="0.1.22" date="2005-02-22">
<change type="bugfix">
<para lang="ru">
@@ -24231,7 +24302,7 @@
</changes>
-<changes ver="0.1.21" date="22.02.2005">
+<changes ver="0.1.21" date="2005-02-22">
<change type="bugfix">
<para lang="ru">
@@ -24268,7 +24339,7 @@
</changes>
-<changes ver="0.1.20" date="17.02.2005">
+<changes ver="0.1.20" date="2005-02-17">
<change type="feature">
<para lang="ru">
@@ -24292,7 +24363,7 @@
</changes>
-<changes ver="0.1.19" date="16.02.2005">
+<changes ver="0.1.19" date="2005-02-16">
<change type="bugfix">
<para lang="ru">
@@ -24327,7 +24398,7 @@
</changes>
-<changes ver="0.1.18" date="09.02.2005">
+<changes ver="0.1.18" date="2005-02-09">
<change type="workaround">
<para lang="ru">
@@ -24422,7 +24493,7 @@
</changes>
-<changes ver="0.1.17" date="03.02.2005">
+<changes ver="0.1.17" date="2005-02-03">
<change type="change">
<para lang="ru">
@@ -24519,7 +24590,7 @@
</changes>
-<changes ver="0.1.16" date="25.01.2005">
+<changes ver="0.1.16" date="2005-01-25">
<change type="bugfix">
<para lang="ru">
@@ -24596,7 +24667,7 @@
</changes>
-<changes ver="0.1.15" date="19.01.2005">
+<changes ver="0.1.15" date="2005-01-19">
<change type="bugfix">
<para lang="ru">
@@ -24684,7 +24755,7 @@
</changes>
-<changes ver="0.1.14" date="18.01.2005">
+<changes ver="0.1.14" date="2005-01-18">
<change type="feature">
<para lang="ru">
@@ -24808,7 +24879,7 @@
</changes>
-<changes ver="0.1.13" date="21.12.2004">
+<changes ver="0.1.13" date="2004-12-21">
<change type="feature">
<para lang="ru">
@@ -24840,7 +24911,7 @@
</changes>
-<changes ver="0.1.12" date="06.12.2004">
+<changes ver="0.1.12" date="2004-12-06">
<change type="feature">
<para lang="ru">
@@ -24880,7 +24951,7 @@
</changes>
-<changes ver="0.1.11" date="02.12.2004">
+<changes ver="0.1.11" date="2004-12-02">
<change type="feature">
<para lang="ru">
@@ -25021,7 +25092,7 @@
</changes>
-<changes ver="0.1.10" date="26.11.2004">
+<changes ver="0.1.10" date="2004-11-26">
<change type="bugfix">
<para lang="ru">
@@ -25048,7 +25119,7 @@
</changes>
-<changes ver="0.1.9" date="25.11.2004">
+<changes ver="0.1.9" date="2004-11-25">
<change type="bugfix">
<para lang="ru">
@@ -25096,7 +25167,7 @@
</changes>
-<changes ver="0.1.8" date="20.11.2004">
+<changes ver="0.1.8" date="2004-11-20">
<change type="bugfix">
<para lang="ru">
@@ -25128,7 +25199,7 @@
</changes>
-<changes ver="0.1.7" date="12.11.2004">
+<changes ver="0.1.7" date="2004-11-12">
<change type="bugfix">
<para lang="ru">
@@ -25146,7 +25217,7 @@
</changes>
-<changes ver="0.1.6" date="11.11.2004">
+<changes ver="0.1.6" date="2004-11-11">
<change type="bugfix">
<para lang="ru">
@@ -25162,7 +25233,7 @@
</changes>
-<changes ver="0.1.5" date="11.11.2004">
+<changes ver="0.1.5" date="2004-11-11">
<change type="bugfix">
<para lang="ru">
@@ -25248,7 +25319,7 @@
</changes>
-<changes ver="0.1.4" date="26.10.2004">
+<changes ver="0.1.4" date="2004-10-26">
<change type="bugfix">
<para lang="ru">
@@ -25262,7 +25333,7 @@
</changes>
-<changes ver="0.1.3" date="25.10.2004">
+<changes ver="0.1.3" date="2004-10-25">
<change type="feature">
<para lang="ru">
@@ -25295,7 +25366,7 @@
</changes>
-<changes ver="0.1.2" date="21.10.2004">
+<changes ver="0.1.2" date="2004-10-21">
<change type="feature">
<para lang="ru">
@@ -25381,7 +25452,7 @@
</changes>
-<changes ver="0.1.1" date="11.10.2004">
+<changes ver="0.1.1" date="2004-10-11">
<change type="feature">
<para lang="ru">
@@ -25481,7 +25552,7 @@
</changes>
-<changes ver="0.1.0" date="04.10.2004">
+<changes ver="0.1.0" date="2004-10-04">
<change>
<para lang="ru">
diff --git a/docs/xsls/changes.xsls b/docs/xsls/changes.xsls
index 8be25a2..4b34254 100644
--- a/docs/xsls/changes.xsls
+++ b/docs/xsls/changes.xsls
@@ -25,13 +25,19 @@
' '),
1, $conf/changes[@lang=$lang]/length)}
- X:if "$lang='ru'" { !{@date} }
+ X:if "$lang='ru'" {
+ !{substring(@date, 9, 2)}
+ X:text {.}
+ !{substring(@date, 6, 2)}
+ X:text {.}
+ !{substring(@date, 1, 4)}
+ }
X:if "$lang='en'" {
- !{substring(@date, 1, 2)}
+ !{substring(@date, 9, 2)}
!{$conf/changes[@lang=$lang]/month[number(substring(current()/@date,
- 4, 2))]}
- !{substring(@date, 7, 4)}
+ 6, 2))]}
+ !{substring(@date, 1, 4)}
}
X:text { }
diff --git a/docs/xslt/changes.xslt b/docs/xslt/changes.xslt
index a0178f6..55ee515 100644
--- a/docs/xslt/changes.xslt
+++ b/docs/xslt/changes.xslt
@@ -26,13 +26,19 @@
' '),
1, $conf/changes[@lang=$lang]/length)"/>
- <xsl:if test="$lang='ru'"> <xsl:value-of select="@date"/> </xsl:if>
+ <xsl:if test="$lang='ru'">
+ <xsl:value-of select="substring(@date, 9, 2)"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="substring(@date, 6, 2)"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="substring(@date, 1, 4)"/>
+ </xsl:if>
<xsl:if test="$lang='en'">
- <xsl:value-of select="substring(@date, 1, 2)"/>
+ <xsl:value-of select="substring(@date, 9, 2)"/>
<xsl:value-of select="$conf/changes[@lang=$lang]/month[number(substring(current()/@date,
- 4, 2))]"/>
- <xsl:value-of select="substring(@date, 7, 4)"/>
+ 6, 2))]"/>
+ <xsl:value-of select="substring(@date, 1, 4)"/>
</xsl:if>
<xsl:text> </xsl:text>
diff --git a/misc/GNUmakefile b/misc/GNUmakefile
index 9cdf418..bef4f0e 100644
--- a/misc/GNUmakefile
+++ b/misc/GNUmakefile
@@ -66,6 +66,7 @@
--with-pcre=$(OBJS)/lib/$(PCRE) \
--with-zlib=$(OBJS)/lib/$(ZLIB) \
--with-select_module \
+ --with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
diff --git a/src/core/nginx.c b/src/core/nginx.c
index 5e68f7d..903d2e1 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -128,6 +128,13 @@
offsetof(ngx_core_conf_t, rlimit_core),
NULL },
+ { ngx_string("worker_shutdown_timeout"),
+ NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_msec_slot,
+ 0,
+ offsetof(ngx_core_conf_t, shutdown_timeout),
+ NULL },
+
{ ngx_string("working_directory"),
NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1,
ngx_conf_set_str_slot,
@@ -1030,6 +1037,7 @@
ccf->daemon = NGX_CONF_UNSET;
ccf->master = NGX_CONF_UNSET;
ccf->timer_resolution = NGX_CONF_UNSET_MSEC;
+ ccf->shutdown_timeout = NGX_CONF_UNSET_MSEC;
ccf->worker_processes = NGX_CONF_UNSET;
ccf->debug_points = NGX_CONF_UNSET;
@@ -1058,6 +1066,7 @@
ngx_conf_init_value(ccf->daemon, 1);
ngx_conf_init_value(ccf->master, 1);
ngx_conf_init_msec_value(ccf->timer_resolution, 0);
+ ngx_conf_init_msec_value(ccf->shutdown_timeout, 0);
ngx_conf_init_value(ccf->worker_processes, 1);
ngx_conf_init_value(ccf->debug_points, 0);
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 4c00b77..7335122 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -13,8 +13,8 @@
#define NGINX_NAME "nginx"
#endif
-#define nginx_version 1011010
-#define NGINX_VERSION "1.11.10"
+#define nginx_version 1011011
+#define NGINX_VERSION "1.11.11"
#define NGINX_VER NGINX_NAME "/" NGINX_VERSION
#ifdef NGX_BUILD
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index 5e95628..3dfdf2e 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -15,6 +15,7 @@
ngx_shm_zone_t *shm_zone);
static ngx_int_t ngx_test_lockfile(u_char *file, ngx_log_t *log);
static void ngx_clean_old_cycles(ngx_event_t *ev);
+static void ngx_shutdown_timer_handler(ngx_event_t *ev);
volatile ngx_cycle_t *ngx_cycle;
@@ -22,6 +23,7 @@
static ngx_pool_t *ngx_temp_pool;
static ngx_event_t ngx_cleaner_event;
+static ngx_event_t ngx_shutdown_event;
ngx_uint_t ngx_test_config;
ngx_uint_t ngx_dump_config;
@@ -1333,3 +1335,54 @@
ngx_old_cycles.nelts = 0;
}
}
+
+
+void
+ngx_set_shutdown_timer(ngx_cycle_t *cycle)
+{
+ ngx_core_conf_t *ccf;
+
+ ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
+
+ if (ccf->shutdown_timeout) {
+ ngx_shutdown_event.handler = ngx_shutdown_timer_handler;
+ ngx_shutdown_event.data = cycle;
+ ngx_shutdown_event.log = cycle->log;
+ ngx_shutdown_event.cancelable = 1;
+
+ ngx_add_timer(&ngx_shutdown_event, ccf->shutdown_timeout);
+ }
+}
+
+
+static void
+ngx_shutdown_timer_handler(ngx_event_t *ev)
+{
+ ngx_uint_t i;
+ ngx_cycle_t *cycle;
+ ngx_connection_t *c;
+
+ cycle = ev->data;
+
+ c = cycle->connections;
+
+ for (i = 0; i < cycle->connection_n; i++) {
+
+ if (c[i].fd == (ngx_socket_t) -1
+ || c[i].read == NULL
+ || c[i].read->accept
+ || c[i].read->channel
+ || c[i].read->resolver)
+ {
+ continue;
+ }
+
+ ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,
+ "*%uA shutdown timeout", c[i].number);
+
+ c[i].close = 1;
+ c[i].error = 1;
+
+ c[i].read->handler(c[i].read);
+ }
+}
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h
index 9fb302e..24b2add 100644
--- a/src/core/ngx_cycle.h
+++ b/src/core/ngx_cycle.h
@@ -88,6 +88,7 @@
ngx_flag_t master;
ngx_msec_t timer_resolution;
+ ngx_msec_t shutdown_timeout;
ngx_int_t worker_processes;
ngx_int_t debug_points;
@@ -133,6 +134,7 @@
ngx_cpuset_t *ngx_get_cpu_affinity(ngx_uint_t n);
ngx_shm_zone_t *ngx_shared_memory_add(ngx_conf_t *cf, ngx_str_t *name,
size_t size, void *tag);
+void ngx_set_shutdown_timer(ngx_cycle_t *cycle);
extern volatile ngx_cycle_t *ngx_cycle;
diff --git a/src/core/ngx_parse.c b/src/core/ngx_parse.c
index 7b60c5f..d35e60f 100644
--- a/src/core/ngx_parse.c
+++ b/src/core/ngx_parse.c
@@ -17,6 +17,11 @@
ssize_t size, scale, max;
len = line->len;
+
+ if (len == 0) {
+ return NGX_ERROR;
+ }
+
unit = line->data[len - 1];
switch (unit) {
@@ -58,6 +63,11 @@
size_t len;
len = line->len;
+
+ if (len == 0) {
+ return NGX_ERROR;
+ }
+
unit = line->data[len - 1];
switch (unit) {
diff --git a/src/core/ngx_rbtree.c b/src/core/ngx_rbtree.c
index 6c66f40..969d549 100644
--- a/src/core/ngx_rbtree.c
+++ b/src/core/ngx_rbtree.c
@@ -28,7 +28,7 @@
/* a binary tree insert */
- root = (ngx_rbtree_node_t **) &tree->root;
+ root = &tree->root;
sentinel = tree->sentinel;
if (*root == sentinel) {
@@ -161,7 +161,7 @@
/* a binary tree delete */
- root = (ngx_rbtree_node_t **) &tree->root;
+ root = &tree->root;
sentinel = tree->sentinel;
if (node->left == sentinel) {
@@ -378,3 +378,32 @@
temp->right = node;
node->parent = temp;
}
+
+
+ngx_rbtree_node_t *
+ngx_rbtree_next(ngx_rbtree_t *tree, ngx_rbtree_node_t *node)
+{
+ ngx_rbtree_node_t *root, *sentinel, *parent;
+
+ sentinel = tree->sentinel;
+
+ if (node->right != sentinel) {
+ return ngx_rbtree_min(node->right, sentinel);
+ }
+
+ root = tree->root;
+
+ for ( ;; ) {
+ parent = node->parent;
+
+ if (node == root) {
+ return NULL;
+ }
+
+ if (node == parent->left) {
+ return parent;
+ }
+
+ node = parent;
+ }
+}
diff --git a/src/core/ngx_rbtree.h b/src/core/ngx_rbtree.h
index 1d33e3f..97f0e3e 100644
--- a/src/core/ngx_rbtree.h
+++ b/src/core/ngx_rbtree.h
@@ -54,6 +54,8 @@
ngx_rbtree_node_t *sentinel);
void ngx_rbtree_insert_timer_value(ngx_rbtree_node_t *root,
ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
+ngx_rbtree_node_t *ngx_rbtree_next(ngx_rbtree_t *tree,
+ ngx_rbtree_node_t *node);
#define ngx_rbt_red(node) ((node)->color = 1)
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index 2065f75..e140ab6 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -56,8 +56,8 @@
((u_char *) (n) - offsetof(ngx_resolver_node_t, node))
-ngx_int_t ngx_udp_connect(ngx_resolver_connection_t *rec);
-ngx_int_t ngx_tcp_connect(ngx_resolver_connection_t *rec);
+static ngx_int_t ngx_udp_connect(ngx_resolver_connection_t *rec);
+static ngx_int_t ngx_tcp_connect(ngx_resolver_connection_t *rec);
static void ngx_resolver_cleanup(void *data);
@@ -4379,7 +4379,7 @@
}
-ngx_int_t
+static ngx_int_t
ngx_udp_connect(ngx_resolver_connection_t *rec)
{
int rc;
@@ -4463,7 +4463,7 @@
}
-ngx_int_t
+static ngx_int_t
ngx_tcp_connect(ngx_resolver_connection_t *rec)
{
int rc;
diff --git a/src/event/modules/ngx_devpoll_module.c b/src/event/modules/ngx_devpoll_module.c
index cbc009c..b7bf98d 100644
--- a/src/event/modules/ngx_devpoll_module.c
+++ b/src/event/modules/ngx_devpoll_module.c
@@ -78,7 +78,7 @@
};
-ngx_event_module_t ngx_devpoll_module_ctx = {
+static ngx_event_module_t ngx_devpoll_module_ctx = {
&devpoll_name,
ngx_devpoll_create_conf, /* create configuration */
ngx_devpoll_init_conf, /* init configuration */
@@ -338,7 +338,7 @@
}
-ngx_int_t
+static ngx_int_t
ngx_devpoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
ngx_uint_t flags)
{
diff --git a/src/event/modules/ngx_epoll_module.c b/src/event/modules/ngx_epoll_module.c
index b74865a..09e5e48 100644
--- a/src/event/modules/ngx_epoll_module.c
+++ b/src/event/modules/ngx_epoll_module.c
@@ -172,7 +172,7 @@
};
-ngx_event_module_t ngx_epoll_module_ctx = {
+static ngx_event_module_t ngx_epoll_module_ctx = {
&epoll_name,
ngx_epoll_create_conf, /* create configuration */
ngx_epoll_init_conf, /* init configuration */
diff --git a/src/event/modules/ngx_eventport_module.c b/src/event/modules/ngx_eventport_module.c
index cc4af09..31c4f23 100644
--- a/src/event/modules/ngx_eventport_module.c
+++ b/src/event/modules/ngx_eventport_module.c
@@ -170,7 +170,7 @@
};
-ngx_event_module_t ngx_eventport_module_ctx = {
+static ngx_event_module_t ngx_eventport_module_ctx = {
&eventport_name,
ngx_eventport_create_conf, /* create configuration */
ngx_eventport_init_conf, /* init configuration */
@@ -444,7 +444,7 @@
}
-ngx_int_t
+static ngx_int_t
ngx_eventport_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
ngx_uint_t flags)
{
diff --git a/src/event/modules/ngx_iocp_module.c b/src/event/modules/ngx_iocp_module.c
index daea21f..7b21a39 100644
--- a/src/event/modules/ngx_iocp_module.c
+++ b/src/event/modules/ngx_iocp_module.c
@@ -52,7 +52,7 @@
};
-ngx_event_module_t ngx_iocp_module_ctx = {
+static ngx_event_module_t ngx_iocp_module_ctx = {
&iocp_name,
ngx_iocp_create_conf, /* create configuration */
ngx_iocp_init_conf, /* init configuration */
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index efe19ac..255c3e4 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -69,7 +69,7 @@
};
-ngx_event_module_t ngx_kqueue_module_ctx = {
+static ngx_event_module_t ngx_kqueue_module_ctx = {
&kqueue_name,
ngx_kqueue_create_conf, /* create configuration */
ngx_kqueue_init_conf, /* init configuration */
diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c
index d0a0e8f..83e5f8d 100644
--- a/src/event/modules/ngx_poll_module.c
+++ b/src/event/modules/ngx_poll_module.c
@@ -25,9 +25,9 @@
static ngx_uint_t nevents;
-static ngx_str_t poll_name = ngx_string("poll");
+static ngx_str_t poll_name = ngx_string("poll");
-ngx_event_module_t ngx_poll_module_ctx = {
+static ngx_event_module_t ngx_poll_module_ctx = {
&poll_name,
NULL, /* create configuration */
ngx_poll_init_conf, /* init configuration */
diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c
index c4fc203..59810f6 100644
--- a/src/event/modules/ngx_select_module.c
+++ b/src/event/modules/ngx_select_module.c
@@ -33,9 +33,9 @@
static ngx_event_t **event_index;
-static ngx_str_t select_name = ngx_string("select");
+static ngx_str_t select_name = ngx_string("select");
-ngx_event_module_t ngx_select_module_ctx = {
+static ngx_event_module_t ngx_select_module_ctx = {
&select_name,
NULL, /* create configuration */
ngx_select_init_conf, /* init configuration */
diff --git a/src/event/modules/ngx_win32_select_module.c b/src/event/modules/ngx_win32_select_module.c
index e30e602..ba98f07 100644
--- a/src/event/modules/ngx_win32_select_module.c
+++ b/src/event/modules/ngx_win32_select_module.c
@@ -34,9 +34,9 @@
static ngx_event_t **event_index;
-static ngx_str_t select_name = ngx_string("select");
+static ngx_str_t select_name = ngx_string("select");
-ngx_event_module_t ngx_select_module_ctx = {
+static ngx_event_module_t ngx_select_module_ctx = {
&select_name,
NULL, /* create configuration */
ngx_select_init_conf, /* init configuration */
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 705e167..71c4f17 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -59,20 +59,20 @@
#if (NGX_STAT_STUB)
-ngx_atomic_t ngx_stat_accepted0;
-ngx_atomic_t *ngx_stat_accepted = &ngx_stat_accepted0;
-ngx_atomic_t ngx_stat_handled0;
-ngx_atomic_t *ngx_stat_handled = &ngx_stat_handled0;
-ngx_atomic_t ngx_stat_requests0;
-ngx_atomic_t *ngx_stat_requests = &ngx_stat_requests0;
-ngx_atomic_t ngx_stat_active0;
-ngx_atomic_t *ngx_stat_active = &ngx_stat_active0;
-ngx_atomic_t ngx_stat_reading0;
-ngx_atomic_t *ngx_stat_reading = &ngx_stat_reading0;
-ngx_atomic_t ngx_stat_writing0;
-ngx_atomic_t *ngx_stat_writing = &ngx_stat_writing0;
-ngx_atomic_t ngx_stat_waiting0;
-ngx_atomic_t *ngx_stat_waiting = &ngx_stat_waiting0;
+static ngx_atomic_t ngx_stat_accepted0;
+ngx_atomic_t *ngx_stat_accepted = &ngx_stat_accepted0;
+static ngx_atomic_t ngx_stat_handled0;
+ngx_atomic_t *ngx_stat_handled = &ngx_stat_handled0;
+static ngx_atomic_t ngx_stat_requests0;
+ngx_atomic_t *ngx_stat_requests = &ngx_stat_requests0;
+static ngx_atomic_t ngx_stat_active0;
+ngx_atomic_t *ngx_stat_active = &ngx_stat_active0;
+static ngx_atomic_t ngx_stat_reading0;
+ngx_atomic_t *ngx_stat_reading = &ngx_stat_reading0;
+static ngx_atomic_t ngx_stat_writing0;
+ngx_atomic_t *ngx_stat_writing = &ngx_stat_writing0;
+static ngx_atomic_t ngx_stat_waiting0;
+ngx_atomic_t *ngx_stat_waiting = &ngx_stat_waiting0;
#endif
@@ -165,7 +165,7 @@
};
-ngx_event_module_t ngx_event_core_module_ctx = {
+static ngx_event_module_t ngx_event_core_module_ctx = {
&event_core_name,
ngx_event_core_create_conf, /* create configuration */
ngx_event_core_init_conf, /* init configuration */
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
index 8f547b2..698b88f 100644
--- a/src/event/ngx_event_timer.c
+++ b/src/event/ngx_event_timer.c
@@ -67,7 +67,7 @@
node = ngx_rbtree_min(root, sentinel);
- /* node->key > ngx_current_time */
+ /* node->key > ngx_current_msec */
if ((ngx_msec_int_t) (node->key - ngx_current_msec) > 0) {
return;
@@ -96,43 +96,31 @@
}
-void
-ngx_event_cancel_timers(void)
+ngx_int_t
+ngx_event_no_timers_left(void)
{
ngx_event_t *ev;
ngx_rbtree_node_t *node, *root, *sentinel;
sentinel = ngx_event_timer_rbtree.sentinel;
+ root = ngx_event_timer_rbtree.root;
- for ( ;; ) {
- root = ngx_event_timer_rbtree.root;
+ if (root == sentinel) {
+ return NGX_OK;
+ }
- if (root == sentinel) {
- return;
- }
-
- node = ngx_rbtree_min(root, sentinel);
-
+ for (node = ngx_rbtree_min(root, sentinel);
+ node;
+ node = ngx_rbtree_next(&ngx_event_timer_rbtree, node))
+ {
ev = (ngx_event_t *) ((char *) node - offsetof(ngx_event_t, timer));
if (!ev->cancelable) {
- return;
+ return NGX_AGAIN;
}
-
- ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
- "event timer cancel: %d: %M",
- ngx_event_ident(ev->data), ev->timer.key);
-
- ngx_rbtree_delete(&ngx_event_timer_rbtree, &ev->timer);
-
-#if (NGX_DEBUG)
- ev->timer.left = NULL;
- ev->timer.right = NULL;
- ev->timer.parent = NULL;
-#endif
-
- ev->timer_set = 0;
-
- ev->handler(ev);
}
+
+ /* only cancelable timers left */
+
+ return NGX_OK;
}
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
index 99f8a48..be81b15 100644
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -22,7 +22,7 @@
ngx_int_t ngx_event_timer_init(ngx_log_t *log);
ngx_msec_t ngx_event_find_timer(void);
void ngx_event_expire_timers(void);
-void ngx_event_cancel_timers(void);
+ngx_int_t ngx_event_no_timers_left(void);
extern ngx_rbtree_t ngx_event_timer_rbtree;
diff --git a/src/http/modules/ngx_http_charset_filter_module.c b/src/http/modules/ngx_http_charset_filter_module.c
index 4ea9818..e52b96e 100644
--- a/src/http/modules/ngx_http_charset_filter_module.c
+++ b/src/http/modules/ngx_http_charset_filter_module.c
@@ -123,7 +123,7 @@
static ngx_int_t ngx_http_charset_postconfiguration(ngx_conf_t *cf);
-ngx_str_t ngx_http_charset_default_types[] = {
+static ngx_str_t ngx_http_charset_default_types[] = {
ngx_string("text/html"),
ngx_string("text/xml"),
ngx_string("text/plain"),
diff --git a/src/http/modules/ngx_http_gzip_static_module.c b/src/http/modules/ngx_http_gzip_static_module.c
index 4d54090..b9294dd 100644
--- a/src/http/modules/ngx_http_gzip_static_module.c
+++ b/src/http/modules/ngx_http_gzip_static_module.c
@@ -48,7 +48,7 @@
};
-ngx_http_module_t ngx_http_gzip_static_module_ctx = {
+static ngx_http_module_t ngx_http_gzip_static_module_ctx = {
NULL, /* preconfiguration */
ngx_http_gzip_static_init, /* postconfiguration */
diff --git a/src/http/modules/ngx_http_log_module.c b/src/http/modules/ngx_http_log_module.c
index ff8572b..330dc7e 100644
--- a/src/http/modules/ngx_http_log_module.c
+++ b/src/http/modules/ngx_http_log_module.c
@@ -748,23 +748,10 @@
static void
ngx_http_log_flush_handler(ngx_event_t *ev)
{
- ngx_open_file_t *file;
- ngx_http_log_buf_t *buffer;
-
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ev->log, 0,
"http log buffer flush handler");
- if (ev->timedout) {
- ngx_http_log_flush(ev->data, ev->log);
- return;
- }
-
- /* cancel the flush timer for graceful shutdown */
-
- file = ev->data;
- buffer = file->data;
-
- buffer->event = NULL;
+ ngx_http_log_flush(ev->data, ev->log);
}
diff --git a/src/http/modules/ngx_http_static_module.c b/src/http/modules/ngx_http_static_module.c
index 07b9580..f2435a7 100644
--- a/src/http/modules/ngx_http_static_module.c
+++ b/src/http/modules/ngx_http_static_module.c
@@ -14,7 +14,7 @@
static ngx_int_t ngx_http_static_init(ngx_conf_t *cf);
-ngx_http_module_t ngx_http_static_module_ctx = {
+static ngx_http_module_t ngx_http_static_module_ctx = {
NULL, /* preconfiguration */
ngx_http_static_init, /* postconfiguration */
diff --git a/src/http/modules/ngx_http_xslt_filter_module.c b/src/http/modules/ngx_http_xslt_filter_module.c
index 315081e..695f3bf 100644
--- a/src/http/modules/ngx_http_xslt_filter_module.c
+++ b/src/http/modules/ngx_http_xslt_filter_module.c
@@ -109,7 +109,7 @@
static void ngx_http_xslt_filter_exit(ngx_cycle_t *cycle);
-ngx_str_t ngx_http_xslt_default_types[] = {
+static ngx_str_t ngx_http_xslt_default_types[] = {
ngx_string("text/xml"),
ngx_null_string
};
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index f2343c2..c4f25d5 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -2571,6 +2571,7 @@
sr->method_name = r->method_name;
sr->loc_conf = r->loc_conf;
sr->valid_location = r->valid_location;
+ sr->content_handler = r->content_handler;
sr->phase_handler = r->phase_handler;
sr->write_event_handler = ngx_http_core_run_phases;
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index 523f268..d028fe1 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -555,7 +555,7 @@
ngx_set_connection_log(r->connection, clcf->error_log);
- r->header_in = hc->nbusy ? hc->busy[0] : c->buffer;
+ r->header_in = hc->busy ? hc->busy->buf : c->buffer;
if (ngx_list_init(&r->headers_out.headers, r->pool, 20,
sizeof(ngx_table_elt_t))
@@ -1445,6 +1445,7 @@
{
u_char *old, *new;
ngx_buf_t *b;
+ ngx_chain_t *cl;
ngx_http_connection_t *hc;
ngx_http_core_srv_conf_t *cscf;
@@ -1474,8 +1475,11 @@
hc = r->http_connection;
- if (hc->nfree) {
- b = hc->free[--hc->nfree];
+ if (hc->free) {
+ cl = hc->free;
+ hc->free = cl->next;
+
+ b = cl->buf;
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http large header free: %p %uz",
@@ -1483,20 +1487,19 @@
} else if (hc->nbusy < cscf->large_client_header_buffers.num) {
- if (hc->busy == NULL) {
- hc->busy = ngx_palloc(r->connection->pool,
- cscf->large_client_header_buffers.num * sizeof(ngx_buf_t *));
- if (hc->busy == NULL) {
- return NGX_ERROR;
- }
- }
-
b = ngx_create_temp_buf(r->connection->pool,
cscf->large_client_header_buffers.size);
if (b == NULL) {
return NGX_ERROR;
}
+ cl = ngx_alloc_chain_link(r->connection->pool);
+ if (cl == NULL) {
+ return NGX_ERROR;
+ }
+
+ cl->buf = b;
+
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http large header alloc: %p %uz",
b->pos, b->end - b->last);
@@ -1505,7 +1508,9 @@
return NGX_DECLINED;
}
- hc->busy[hc->nbusy++] = b;
+ cl->next = hc->busy;
+ hc->busy = cl;
+ hc->nbusy++;
if (r->state == 0) {
/*
@@ -2902,12 +2907,11 @@
ngx_http_set_keepalive(ngx_http_request_t *r)
{
int tcp_nodelay;
- ngx_int_t i;
ngx_buf_t *b, *f;
+ ngx_chain_t *cl, *ln;
ngx_event_t *rev, *wev;
ngx_connection_t *c;
ngx_http_connection_t *hc;
- ngx_http_core_srv_conf_t *cscf;
ngx_http_core_loc_conf_t *clcf;
c = r->connection;
@@ -2943,26 +2947,32 @@
* Now we would move the large header buffers to the free list.
*/
- cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
+ for (cl = hc->busy; cl; /* void */) {
+ ln = cl;
+ cl = cl->next;
- if (hc->free == NULL) {
- hc->free = ngx_palloc(c->pool,
- cscf->large_client_header_buffers.num * sizeof(ngx_buf_t *));
-
- if (hc->free == NULL) {
- ngx_http_close_request(r, 0);
- return;
+ if (ln->buf == b) {
+ ngx_free_chain(c->pool, ln);
+ continue;
}
- }
- for (i = 0; i < hc->nbusy - 1; i++) {
- f = hc->busy[i];
- hc->free[hc->nfree++] = f;
+ f = ln->buf;
f->pos = f->start;
f->last = f->start;
+
+ ln->next = hc->free;
+ hc->free = ln;
}
- hc->busy[0] = b;
+ cl = ngx_alloc_chain_link(c->pool);
+ if (cl == NULL) {
+ ngx_http_close_request(r, 0);
+ return;
+ }
+
+ cl->buf = b;
+
+ hc->busy = cl;
hc->nbusy = 1;
}
}
@@ -3033,27 +3043,32 @@
b->last = b->start;
}
- ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0, "hc free: %p %i",
- hc->free, hc->nfree);
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, "hc free: %p",
+ hc->free);
if (hc->free) {
- for (i = 0; i < hc->nfree; i++) {
- ngx_pfree(c->pool, hc->free[i]->start);
- hc->free[i] = NULL;
+ for (cl = hc->free; cl; /* void */) {
+ ln = cl;
+ cl = cl->next;
+ ngx_pfree(c->pool, ln->buf->start);
+ ngx_free_chain(c->pool, ln);
}
- hc->nfree = 0;
+ hc->free = NULL;
}
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0, "hc busy: %p %i",
hc->busy, hc->nbusy);
if (hc->busy) {
- for (i = 0; i < hc->nbusy; i++) {
- ngx_pfree(c->pool, hc->busy[i]->start);
- hc->busy[i] = NULL;
+ for (cl = hc->busy; cl; /* void */) {
+ ln = cl;
+ cl = cl->next;
+ ngx_pfree(c->pool, ln->buf->start);
+ ngx_free_chain(c->pool, ln);
}
+ hc->busy = NULL;
hc->nbusy = 0;
}
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index 1eb80db..150ecdd 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -312,11 +312,10 @@
#endif
#endif
- ngx_buf_t **busy;
+ ngx_chain_t *busy;
ngx_int_t nbusy;
- ngx_buf_t **free;
- ngx_int_t nfree;
+ ngx_chain_t *free;
unsigned ssl:1;
unsigned proxy_protocol:1;
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index 32c108c..fe6ff5e 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -188,7 +188,7 @@
#endif
-ngx_http_upstream_header_t ngx_http_upstream_headers_in[] = {
+static ngx_http_upstream_header_t ngx_http_upstream_headers_in[] = {
{ ngx_string("Status"),
ngx_http_upstream_process_header_line,
@@ -5560,7 +5560,7 @@
#if (NGX_HTTP_CACHE)
-ngx_int_t
+static ngx_int_t
ngx_http_upstream_cache_status(ngx_http_request_t *r,
ngx_http_variable_value_t *v, uintptr_t data)
{
diff --git a/src/mail/ngx_mail_pop3_module.c b/src/mail/ngx_mail_pop3_module.c
index bd60e0a..a673070 100644
--- a/src/mail/ngx_mail_pop3_module.c
+++ b/src/mail/ngx_mail_pop3_module.c
@@ -185,6 +185,10 @@
m <= NGX_MAIL_AUTH_EXTERNAL_ENABLED;
m <<= 1, i++)
{
+ if (ngx_mail_pop3_auth_methods_names[i].len == 0) {
+ continue;
+ }
+
if (m & conf->auth_methods) {
size += 1 + ngx_mail_pop3_auth_methods_names[i].len;
}
@@ -212,6 +216,10 @@
m <= NGX_MAIL_AUTH_EXTERNAL_ENABLED;
m <<= 1, i++)
{
+ if (ngx_mail_pop3_auth_methods_names[i].len == 0) {
+ continue;
+ }
+
if (m & conf->auth_methods) {
*p++ = ' ';
p = ngx_cpymem(p, ngx_mail_pop3_auth_methods_names[i].data,
@@ -248,6 +256,10 @@
m <= NGX_MAIL_AUTH_EXTERNAL_ENABLED;
m <<= 1, i++)
{
+ if (ngx_mail_pop3_auth_methods_names[i].len == 0) {
+ continue;
+ }
+
if (m & conf->auth_methods) {
size += ngx_mail_pop3_auth_methods_names[i].len
+ sizeof(CRLF) - 1;
@@ -269,6 +281,10 @@
m <= NGX_MAIL_AUTH_EXTERNAL_ENABLED;
m <<= 1, i++)
{
+ if (ngx_mail_pop3_auth_methods_names[i].len == 0) {
+ continue;
+ }
+
if (m & conf->auth_methods) {
p = ngx_cpymem(p, ngx_mail_pop3_auth_methods_names[i].data,
ngx_mail_pop3_auth_methods_names[i].len);
diff --git a/src/os/unix/ngx_process.c b/src/os/unix/ngx_process.c
index 24a63fb..2d37e21 100644
--- a/src/os/unix/ngx_process.c
+++ b/src/os/unix/ngx_process.c
@@ -306,7 +306,7 @@
}
-void
+static void
ngx_signal_handler(int signo)
{
char *action;
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
index 5c4e21d..1710ea8 100644
--- a/src/os/unix/ngx_process_cycle.c
+++ b/src/os/unix/ngx_process_cycle.c
@@ -738,12 +738,8 @@
for ( ;; ) {
if (ngx_exiting) {
- ngx_event_cancel_timers();
-
- if (ngx_event_timer_rbtree.root == ngx_event_timer_rbtree.sentinel)
- {
+ if (ngx_event_no_timers_left() == NGX_OK) {
ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
-
ngx_worker_process_exit(cycle);
}
}
@@ -754,7 +750,6 @@
if (ngx_terminate) {
ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
-
ngx_worker_process_exit(cycle);
}
@@ -766,6 +761,7 @@
if (!ngx_exiting) {
ngx_exiting = 1;
+ ngx_set_shutdown_timer(cycle);
ngx_close_listening_sockets(cycle);
ngx_close_idle_connections(cycle);
}
diff --git a/src/os/win32/ngx_process_cycle.c b/src/os/win32/ngx_process_cycle.c
index 99fec54..293b967 100644
--- a/src/os/win32/ngx_process_cycle.c
+++ b/src/os/win32/ngx_process_cycle.c
@@ -782,11 +782,7 @@
while (!ngx_quit) {
if (ngx_exiting) {
- ngx_event_cancel_timers();
-
- if (ngx_event_timer_rbtree.root
- == ngx_event_timer_rbtree.sentinel)
- {
+ if (ngx_event_no_timers_left() == NGX_OK) {
break;
}
}
@@ -804,6 +800,7 @@
if (!ngx_exiting) {
ngx_exiting = 1;
+ ngx_set_shutdown_timer(cycle);
ngx_close_listening_sockets(cycle);
ngx_close_idle_connections(cycle);
}
diff --git a/src/stream/ngx_stream_log_module.c b/src/stream/ngx_stream_log_module.c
index a4b67d0..6b29340 100644
--- a/src/stream/ngx_stream_log_module.c
+++ b/src/stream/ngx_stream_log_module.c
@@ -641,23 +641,10 @@
static void
ngx_stream_log_flush_handler(ngx_event_t *ev)
{
- ngx_open_file_t *file;
- ngx_stream_log_buf_t *buffer;
-
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ev->log, 0,
"stream log buffer flush handler");
- if (ev->timedout) {
- ngx_stream_log_flush(ev->data, ev->log);
- return;
- }
-
- /* cancel the flush timer for graceful shutdown */
-
- file = ev->data;
- buffer = file->data;
-
- buffer->event = NULL;
+ ngx_stream_log_flush(ev->data, ev->log);
}