Mercurial > hg > nginx
view auto/modules @ 9154:f6b6f3dd7ca0
QUIC: ignore path validation socket error (ticket #2532).
Previously, a socket error on a path being validated resulted in validation
error and subsequent QUIC connection closure. Now the error is ignored and
path validation proceeds as usual, with several retries and a timeout.
When validating the old path after an apparent migration, that path may already
be unavailable and sendmsg() may return an error, which should not result in
QUIC connection close.
When validating the new path, it's possible that the new client address is
spoofed (See RFC 9000, 9.3.2. On-Path Address Spoofing). This address may
as well be unavailable and should not trigger QUIC connection closure.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Thu, 31 Aug 2023 10:54:07 +0400 |
parents | 262c01782566 |
children |
line wrap: on
line source
# Copyright (C) Igor Sysoev # Copyright (C) Nginx, Inc. if [ $EVENT_SELECT = NO -a $EVENT_FOUND = NO ]; then EVENT_SELECT=YES fi if [ $EVENT_SELECT = YES ]; then have=NGX_HAVE_SELECT . auto/have CORE_SRCS="$CORE_SRCS $SELECT_SRCS" EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE" fi if [ $EVENT_POLL = NO -a $EVENT_FOUND = NO ]; then EVENT_POLL=YES fi if [ $EVENT_POLL = YES ]; then have=NGX_HAVE_POLL . auto/have CORE_SRCS="$CORE_SRCS $POLL_SRCS" EVENT_MODULES="$EVENT_MODULES $POLL_MODULE" fi if [ $NGX_TEST_BUILD_DEVPOLL = YES ]; then have=NGX_HAVE_DEVPOLL . auto/have have=NGX_TEST_BUILD_DEVPOLL . auto/have EVENT_MODULES="$EVENT_MODULES $DEVPOLL_MODULE" CORE_SRCS="$CORE_SRCS $DEVPOLL_SRCS" fi if [ $NGX_TEST_BUILD_EVENTPORT = YES ]; then have=NGX_HAVE_EVENTPORT . auto/have have=NGX_TEST_BUILD_EVENTPORT . auto/have EVENT_MODULES="$EVENT_MODULES $EVENTPORT_MODULE" CORE_SRCS="$CORE_SRCS $EVENTPORT_SRCS" fi if [ $NGX_TEST_BUILD_EPOLL = YES ]; then have=NGX_HAVE_EPOLL . auto/have have=NGX_HAVE_EPOLLRDHUP . auto/have have=NGX_HAVE_EPOLLEXCLUSIVE . auto/have have=NGX_HAVE_EVENTFD . auto/have have=NGX_TEST_BUILD_EPOLL . auto/have EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE" CORE_SRCS="$CORE_SRCS $EPOLL_SRCS" fi if [ $NGX_TEST_BUILD_SOLARIS_SENDFILEV = YES ]; then have=NGX_TEST_BUILD_SOLARIS_SENDFILEV . auto/have CORE_SRCS="$CORE_SRCS $SOLARIS_SENDFILEV_SRCS" fi if [ $HTTP = YES ]; then HTTP_MODULES= HTTP_DEPS= HTTP_INCS= 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 . auto/module fi if [ $HTTP_CACHE = YES ]; then have=NGX_HTTP_CACHE . auto/have HTTP_SRCS="$HTTP_SRCS $HTTP_FILE_CACHE_SRCS" fi if [ $HTTP_V2 = YES -o $HTTP_V3 = YES ]; then HTTP_SRCS="$HTTP_SRCS $HTTP_HUFF_SRCS" 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_v3_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= 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_v3_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" 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 . 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 . 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 . 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 . auto/module fi if [ $HTTP_V3 = YES ]; then ngx_module_name=ngx_http_v3_filter_module ngx_module_incs= ngx_module_deps= ngx_module_srcs=src/http/v3/ngx_http_v3_filter_module.c ngx_module_libs= ngx_module_link=$HTTP_V3 . 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 . auto/module fi if [ $HTTP_GZIP = YES ]; then have=NGX_HTTP_GZIP . auto/have USE_ZLIB=YES 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 . auto/module fi if :; 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=YES . auto/module fi if [ $HTTP_SSI = YES ]; then have=NGX_HTTP_SSI . auto/have 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 . 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 . 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 . 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 . 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 . 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 . auto/module fi if [ $HTTP_GUNZIP = YES ]; then have=NGX_HTTP_GZIP . auto/have USE_ZLIB=YES 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 . 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 . 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 . 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 . 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 . 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 . 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 . auto/module fi ngx_module_type=HTTP if [ $HTTP_V2 = YES ]; then have=NGX_HTTP_V2 . auto/have 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_encode.c \ src/http/v2/ngx_http_v2_module.c" ngx_module_libs= ngx_module_link=$HTTP_V2 . auto/module fi if [ $HTTP_V3 = YES ]; then USE_OPENSSL_QUIC=YES HTTP_SSL=YES have=NGX_HTTP_V3 . auto/have ngx_module_name=ngx_http_v3_module ngx_module_incs=src/http/v3 ngx_module_deps="src/http/v3/ngx_http_v3.h \ src/http/v3/ngx_http_v3_encode.h \ src/http/v3/ngx_http_v3_parse.h \ src/http/v3/ngx_http_v3_table.h \ src/http/v3/ngx_http_v3_uni.h" ngx_module_srcs="src/http/v3/ngx_http_v3.c \ src/http/v3/ngx_http_v3_encode.c \ src/http/v3/ngx_http_v3_parse.c \ src/http/v3/ngx_http_v3_table.c \ src/http/v3/ngx_http_v3_uni.c \ src/http/v3/ngx_http_v3_request.c \ src/http/v3/ngx_http_v3_module.c" ngx_module_libs= ngx_module_link=$HTTP_V3 . 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 . auto/module fi if [ $HTTP_GZIP_STATIC = YES ]; then have=NGX_HTTP_GZIP . auto/have 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 . auto/module fi if [ $HTTP_DAV = YES ]; then have=NGX_HTTP_DAV . 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 . 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 . 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 . 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 . auto/module fi if [ $HTTP_MIRROR = YES ]; then ngx_module_name=ngx_http_mirror_module ngx_module_incs= ngx_module_deps= ngx_module_srcs=src/http/modules/ngx_http_mirror_module.c ngx_module_libs= ngx_module_link=$HTTP_MIRROR . auto/module fi if :; then ngx_module_name=ngx_http_try_files_module ngx_module_incs= ngx_module_deps= ngx_module_srcs=src/http/modules/ngx_http_try_files_module.c ngx_module_libs= ngx_module_link=YES . 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 . auto/module fi if [ $HTTP_AUTH_BASIC = YES ]; then have=NGX_CRYPT . 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 . 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 . 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 . 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 . auto/module fi if [ $HTTP_REALIP = YES ]; then have=NGX_HTTP_REALIP . auto/have have=NGX_HTTP_X_FORWARDED_FOR . 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 . 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 . auto/module fi if [ $HTTP_GEO = YES ]; then have=NGX_HTTP_X_FORWARDED_FOR . 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 . auto/module fi if [ $HTTP_GEOIP != NO ]; then have=NGX_HTTP_X_FORWARDED_FOR . 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 . 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 . 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 . 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 . auto/module fi 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 . auto/module fi if [ $HTTP_SSL = YES ]; then USE_OPENSSL=YES have=NGX_HTTP_SSL . 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 . auto/module fi if [ $HTTP_PROXY = YES ]; then have=NGX_HTTP_X_FORWARDED_FOR . 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 . 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 . 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 . 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 . auto/module fi if [ $HTTP_GRPC = YES -a $HTTP_V2 = YES ]; then ngx_module_name=ngx_http_grpc_module ngx_module_incs= ngx_module_deps= ngx_module_srcs=src/http/modules/ngx_http_grpc_module.c ngx_module_libs= ngx_module_link=$HTTP_GRPC . 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 . 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 . 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 . 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 . 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 . auto/module fi if [ $HTTP_DEGRADATION = YES ]; then have=NGX_HTTP_DEGRADATION . 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 . 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 . 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 . 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 . 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 . 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 . auto/module fi if [ $HTTP_UPSTREAM_RANDOM = YES ]; then ngx_module_name=ngx_http_upstream_random_module ngx_module_incs= ngx_module_deps= ngx_module_srcs=src/http/modules/ngx_http_upstream_random_module.c ngx_module_libs= ngx_module_link=$HTTP_UPSTREAM_RANDOM . auto/module fi if [ $HTTP_UPSTREAM_KEEPALIVE = YES ]; then ngx_module_name=ngx_http_upstream_keepalive_module ngx_module_incs= ngx_module_deps= ngx_module_srcs=src/http/modules/ngx_http_upstream_keepalive_module.c ngx_module_libs= ngx_module_link=$HTTP_UPSTREAM_KEEPALIVE . auto/module fi if [ $HTTP_UPSTREAM_ZONE = YES ]; then have=NGX_HTTP_UPSTREAM_ZONE . 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 . auto/module fi if [ $HTTP_STUB_STATUS = YES ]; then have=NGX_STAT_STUB . 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 . auto/module fi fi if [ $MAIL != NO ]; then MAIL_MODULES= MAIL_DEPS= MAIL_INCS= ngx_module_type=MAIL ngx_module_libs= ngx_module_link=YES ngx_module_order= ngx_module_name="ngx_mail_module ngx_mail_core_module" ngx_module_incs="src/mail" ngx_module_deps="src/mail/ngx_mail.h" ngx_module_srcs="src/mail/ngx_mail.c \ src/mail/ngx_mail_core_module.c \ src/mail/ngx_mail_handler.c \ src/mail/ngx_mail_parse.c" . auto/module ngx_module_incs= if [ $MAIL_SSL = YES ]; then USE_OPENSSL=YES have=NGX_MAIL_SSL . auto/have ngx_module_name=ngx_mail_ssl_module ngx_module_deps=src/mail/ngx_mail_ssl_module.h ngx_module_srcs=src/mail/ngx_mail_ssl_module.c . auto/module fi if [ $MAIL_POP3 = YES ]; then ngx_module_name=ngx_mail_pop3_module ngx_module_deps=src/mail/ngx_mail_pop3_module.h ngx_module_srcs="src/mail/ngx_mail_pop3_module.c \ src/mail/ngx_mail_pop3_handler.c" . auto/module fi if [ $MAIL_IMAP = YES ]; then ngx_module_name=ngx_mail_imap_module ngx_module_deps=src/mail/ngx_mail_imap_module.h ngx_module_srcs="src/mail/ngx_mail_imap_module.c \ src/mail/ngx_mail_imap_handler.c" . auto/module fi if [ $MAIL_SMTP = YES ]; then ngx_module_name=ngx_mail_smtp_module ngx_module_deps=src/mail/ngx_mail_smtp_module.h ngx_module_srcs="src/mail/ngx_mail_smtp_module.c \ src/mail/ngx_mail_smtp_handler.c" . auto/module fi ngx_module_name=ngx_mail_auth_http_module ngx_module_deps= ngx_module_srcs=src/mail/ngx_mail_auth_http_module.c . auto/module ngx_module_name=ngx_mail_proxy_module ngx_module_deps= ngx_module_srcs=src/mail/ngx_mail_proxy_module.c . auto/module ngx_module_name=ngx_mail_realip_module ngx_module_deps= ngx_module_srcs=src/mail/ngx_mail_realip_module.c . auto/module fi if [ $STREAM != NO ]; then STREAM_MODULES= STREAM_DEPS= STREAM_INCS= ngx_module_type=STREAM ngx_module_libs= ngx_module_link=YES ngx_module_order= ngx_module_name="ngx_stream_module \ ngx_stream_core_module \ ngx_stream_log_module \ ngx_stream_proxy_module \ ngx_stream_upstream_module \ ngx_stream_write_filter_module" ngx_module_incs="src/stream" ngx_module_deps="src/stream/ngx_stream.h \ src/stream/ngx_stream_variables.h \ src/stream/ngx_stream_script.h \ src/stream/ngx_stream_upstream.h \ src/stream/ngx_stream_upstream_round_robin.h" ngx_module_srcs="src/stream/ngx_stream.c \ src/stream/ngx_stream_variables.c \ src/stream/ngx_stream_script.c \ src/stream/ngx_stream_handler.c \ src/stream/ngx_stream_core_module.c \ src/stream/ngx_stream_log_module.c \ src/stream/ngx_stream_proxy_module.c \ src/stream/ngx_stream_upstream.c \ src/stream/ngx_stream_upstream_round_robin.c \ src/stream/ngx_stream_write_filter_module.c" . auto/module ngx_module_incs= if [ $STREAM_SSL = YES ]; then USE_OPENSSL=YES have=NGX_STREAM_SSL . auto/have ngx_module_name=ngx_stream_ssl_module ngx_module_deps=src/stream/ngx_stream_ssl_module.h ngx_module_srcs=src/stream/ngx_stream_ssl_module.c ngx_module_libs= ngx_module_link=$STREAM_SSL . auto/module fi if [ $STREAM_REALIP = YES ]; then ngx_module_name=ngx_stream_realip_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_realip_module.c ngx_module_libs= ngx_module_link=$STREAM_REALIP . auto/module fi if [ $STREAM_LIMIT_CONN = YES ]; then ngx_module_name=ngx_stream_limit_conn_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_limit_conn_module.c ngx_module_libs= ngx_module_link=$STREAM_LIMIT_CONN . auto/module fi if [ $STREAM_ACCESS = YES ]; then ngx_module_name=ngx_stream_access_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_access_module.c ngx_module_libs= ngx_module_link=$STREAM_ACCESS . auto/module fi if [ $STREAM_GEO = YES ]; then ngx_module_name=ngx_stream_geo_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_geo_module.c ngx_module_libs= ngx_module_link=$STREAM_GEO . auto/module fi if [ $STREAM_GEOIP != NO ]; then ngx_module_name=ngx_stream_geoip_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_geoip_module.c ngx_module_libs=GEOIP ngx_module_link=$STREAM_GEOIP . auto/module fi if [ $STREAM_MAP = YES ]; then ngx_module_name=ngx_stream_map_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_map_module.c ngx_module_libs= ngx_module_link=$STREAM_MAP . auto/module fi if [ $STREAM_SPLIT_CLIENTS = YES ]; then ngx_module_name=ngx_stream_split_clients_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_split_clients_module.c ngx_module_libs= ngx_module_link=$STREAM_SPLIT_CLIENTS . auto/module fi if [ $STREAM_RETURN = YES ]; then ngx_module_name=ngx_stream_return_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_return_module.c ngx_module_libs= ngx_module_link=$STREAM_RETURN . auto/module fi if [ $STREAM_SET = YES ]; then ngx_module_name=ngx_stream_set_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_set_module.c ngx_module_libs= ngx_module_link=$STREAM_SET . auto/module fi if [ $STREAM_UPSTREAM_HASH = YES ]; then ngx_module_name=ngx_stream_upstream_hash_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_upstream_hash_module.c ngx_module_libs= ngx_module_link=$STREAM_UPSTREAM_HASH . auto/module fi if [ $STREAM_UPSTREAM_LEAST_CONN = YES ]; then ngx_module_name=ngx_stream_upstream_least_conn_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_upstream_least_conn_module.c ngx_module_libs= ngx_module_link=$STREAM_UPSTREAM_LEAST_CONN . auto/module fi if [ $STREAM_UPSTREAM_RANDOM = YES ]; then ngx_module_name=ngx_stream_upstream_random_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_upstream_random_module.c ngx_module_libs= ngx_module_link=$STREAM_UPSTREAM_RANDOM . auto/module fi if [ $STREAM_UPSTREAM_ZONE = YES ]; then have=NGX_STREAM_UPSTREAM_ZONE . auto/have ngx_module_name=ngx_stream_upstream_zone_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_upstream_zone_module.c ngx_module_libs= ngx_module_link=$STREAM_UPSTREAM_ZONE . auto/module fi if [ $STREAM_SSL_PREREAD = YES ]; then ngx_module_name=ngx_stream_ssl_preread_module ngx_module_deps= ngx_module_srcs=src/stream/ngx_stream_ssl_preread_module.c ngx_module_libs= ngx_module_link=$STREAM_SSL_PREREAD . auto/module fi fi #if [ -r $NGX_OBJS/auto ]; then # . $NGX_OBJS/auto #fi if test -n "$NGX_ADDONS"; then echo configuring additional modules for ngx_addon_dir in $NGX_ADDONS do echo "adding module in $ngx_addon_dir" ngx_module_type= ngx_module_name= ngx_module_incs= ngx_module_deps= ngx_module_srcs= ngx_module_libs= ngx_module_order= ngx_module_link=ADDON if test -f $ngx_addon_dir/config; then . $ngx_addon_dir/config echo " + $ngx_addon_name was configured" else echo "$0: error: no $ngx_addon_dir/config was found" exit 1 fi done fi if test -n "$DYNAMIC_ADDONS"; then echo configuring additional dynamic modules for ngx_addon_dir in $DYNAMIC_ADDONS do echo "adding module in $ngx_addon_dir" ngx_module_type= ngx_module_name= ngx_module_incs= ngx_module_deps= ngx_module_srcs= ngx_module_libs= ngx_module_order= ngx_module_link=DYNAMIC if test -f $ngx_addon_dir/config; then . $ngx_addon_dir/config echo " + $ngx_addon_name was configured" else echo "$0: error: no $ngx_addon_dir/config was found" exit 1 fi done fi if [ $USE_OPENSSL = YES ]; then ngx_module_type=CORE ngx_module_name=ngx_openssl_module ngx_module_incs= ngx_module_deps=src/event/ngx_event_openssl.h ngx_module_srcs="src/event/ngx_event_openssl.c src/event/ngx_event_openssl_stapling.c" ngx_module_libs= ngx_module_link=YES ngx_module_order= . auto/module fi if [ $USE_OPENSSL_QUIC = YES ]; then ngx_module_type=CORE ngx_module_name=ngx_quic_module ngx_module_incs= ngx_module_deps="src/event/quic/ngx_event_quic.h \ src/event/quic/ngx_event_quic_transport.h \ src/event/quic/ngx_event_quic_protection.h \ src/event/quic/ngx_event_quic_connection.h \ src/event/quic/ngx_event_quic_frames.h \ src/event/quic/ngx_event_quic_connid.h \ src/event/quic/ngx_event_quic_migration.h \ src/event/quic/ngx_event_quic_streams.h \ src/event/quic/ngx_event_quic_ssl.h \ src/event/quic/ngx_event_quic_tokens.h \ src/event/quic/ngx_event_quic_ack.h \ src/event/quic/ngx_event_quic_output.h \ src/event/quic/ngx_event_quic_socket.h \ src/event/quic/ngx_event_quic_openssl_compat.h" ngx_module_srcs="src/event/quic/ngx_event_quic.c \ src/event/quic/ngx_event_quic_udp.c \ src/event/quic/ngx_event_quic_transport.c \ src/event/quic/ngx_event_quic_protection.c \ src/event/quic/ngx_event_quic_frames.c \ src/event/quic/ngx_event_quic_connid.c \ src/event/quic/ngx_event_quic_migration.c \ src/event/quic/ngx_event_quic_streams.c \ src/event/quic/ngx_event_quic_ssl.c \ src/event/quic/ngx_event_quic_tokens.c \ src/event/quic/ngx_event_quic_ack.c \ src/event/quic/ngx_event_quic_output.c \ src/event/quic/ngx_event_quic_socket.c \ src/event/quic/ngx_event_quic_openssl_compat.c" ngx_module_libs= ngx_module_link=YES ngx_module_order= . auto/module if [ $QUIC_BPF = YES -a $SO_COOKIE_FOUND = YES ]; then ngx_module_type=CORE ngx_module_name=ngx_quic_bpf_module ngx_module_incs= ngx_module_deps= ngx_module_srcs="src/event/quic/ngx_event_quic_bpf.c \ src/event/quic/ngx_event_quic_bpf_code.c" ngx_module_libs= ngx_module_link=YES ngx_module_order= . auto/module have=NGX_QUIC_BPF . auto/have fi fi if [ $USE_PCRE = YES ]; then ngx_module_type=CORE ngx_module_name=ngx_regex_module ngx_module_incs= ngx_module_deps=src/core/ngx_regex.h ngx_module_srcs=src/core/ngx_regex.c ngx_module_libs= ngx_module_link=YES ngx_module_order= . auto/module fi modules="$CORE_MODULES $EVENT_MODULES" # thread pool module should be initialized after events if [ $USE_THREADS = YES ]; then modules="$modules $THREAD_POOL_MODULE" fi if [ $HTTP = YES ]; then modules="$modules $HTTP_MODULES $HTTP_FILTER_MODULES \ $HTTP_AUX_FILTER_MODULES $HTTP_INIT_FILTER_MODULES" NGX_ADDON_DEPS="$NGX_ADDON_DEPS \$(HTTP_DEPS)" fi if [ $MAIL != NO ]; then if [ $MAIL = YES ]; then modules="$modules $MAIL_MODULES" elif [ $MAIL = DYNAMIC ]; then ngx_module_name=$MAIL_MODULES ngx_module_incs= ngx_module_deps= ngx_module_srcs=$MAIL_SRCS ngx_module_libs= ngx_module_link=DYNAMIC . auto/module fi NGX_ADDON_DEPS="$NGX_ADDON_DEPS \$(MAIL_DEPS)" fi if [ $STREAM != NO ]; then if [ $STREAM = YES ]; then modules="$modules $STREAM_MODULES" elif [ $STREAM = DYNAMIC ]; then ngx_module_name=$STREAM_MODULES ngx_module_incs= ngx_module_deps= ngx_module_srcs=$STREAM_SRCS ngx_module_libs= ngx_module_link=DYNAMIC . auto/module fi NGX_ADDON_DEPS="$NGX_ADDON_DEPS \$(STREAM_DEPS)" fi ngx_module_type=MISC MISC_MODULES= if [ $NGX_GOOGLE_PERFTOOLS = YES ]; then ngx_module_name=ngx_google_perftools_module ngx_module_incs= ngx_module_deps= ngx_module_srcs=src/misc/ngx_google_perftools_module.c ngx_module_libs= ngx_module_link=$NGX_GOOGLE_PERFTOOLS . auto/module fi if [ $NGX_CPP_TEST = YES ]; then ngx_module_name= ngx_module_incs= ngx_module_deps= ngx_module_srcs=src/misc/ngx_cpp_test_module.cpp ngx_module_libs=-lstdc++ ngx_module_link=$NGX_CPP_TEST . auto/module fi modules="$modules $MISC_MODULES" if [ $NGX_COMPAT = YES ]; then have=NGX_COMPAT . auto/have have=NGX_HTTP_GZIP . auto/have have=NGX_HTTP_DAV . auto/have have=NGX_HTTP_REALIP . auto/have have=NGX_HTTP_X_FORWARDED_FOR . auto/have have=NGX_HTTP_HEADERS . auto/have have=NGX_HTTP_UPSTREAM_ZONE . auto/have have=NGX_STREAM_UPSTREAM_ZONE . auto/have fi cat << END > $NGX_MODULES_C #include <ngx_config.h> #include <ngx_core.h> $NGX_PRAGMA END for mod in $modules do echo "extern ngx_module_t $mod;" >> $NGX_MODULES_C done echo >> $NGX_MODULES_C echo 'ngx_module_t *ngx_modules[] = {' >> $NGX_MODULES_C for mod in $modules do echo " &$mod," >> $NGX_MODULES_C done cat << END >> $NGX_MODULES_C NULL }; END echo 'char *ngx_module_names[] = {' >> $NGX_MODULES_C for mod in $modules do echo " \"$mod\"," >> $NGX_MODULES_C done cat << END >> $NGX_MODULES_C NULL }; END