Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nginx for openSUSE:Factory checked in at 2021-03-10 08:47:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nginx (Old) and /work/SRC/openSUSE:Factory/.nginx.new.2378 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nginx" Wed Mar 10 08:47:55 2021 rev:60 rq:875609 version:1.19.7 Changes: -------- --- /work/SRC/openSUSE:Factory/nginx/nginx.changes 2020-12-24 19:38:23.951012789 +0100 +++ /work/SRC/openSUSE:Factory/.nginx.new.2378/nginx.changes 2021-03-10 08:48:12.522328714 +0100 @@ -1,0 +2,46 @@ +Sat Feb 27 12:04:02 UTC 2021 - ???????? ???????????? <[email protected]> + +- Refreshed spec-file via spec-cleaner and manual optimizations. + * Droped obsolete conditional constructs. + * Removed pkg_name macro. + +------------------------------------------------------------------- +Wed Feb 17 00:02:08 UTC 2021 - Marcus Rueckert <[email protected]> + +- Drop nginx_upstream_check module, there is no support for dynamic + loading upstream and the module seems kind of unmaintained. +- Removed patch check_1.9.2+.patch. + +------------------------------------------------------------------- +Tue Feb 16 23:40:16 UTC 2021 - Marcus Rueckert <[email protected]> + +- Update to 1.19.7 + * https://nginx.org/en/CHANGES + * Change: connections handling in HTTP/2 has been changed to + better match HTTP/1.x; the "http2_recv_timeout", + "http2_idle_timeout", and "http2_max_requests" directives have + been removed, the "keepalive_timeout" and "keepalive_requests" + directives should be used instead. + * Change: the "http2_max_field_size" and "http2_max_header_size" + directives have been removed, the "large_client_header_buffers" + directive should be used instead. + * Feature: now, if free worker connections are exhausted, nginx + starts closing not only keepalive connections, but also + connections in lingering close. + * Bugfix: "zero size buf in output" alerts might appear in logs + if an upstream server returned an incorrect response during + unbuffered proxying; the bug had appeared in 1.19.1. + * Bugfix: HEAD requests were handled incorrectly if the "return" + directive was used with the "image_filter" or "xslt_stylesheet" + directives. + * Bugfix: in the "add_trailer" directive. +- Since we only target sle 12 and above we can skip all + conditionals which apply to suse_version before 1315 + + With changes in nginx itself we will drop support for sysvinit. + http2, libatomic support and pcre_jit will always be on now. + and we build all binaries with PIE now. +- Moved the last 2 path macros from nginx.spec to the macros file. + (pid and lock path) + +------------------------------------------------------------------- Old: ---- check_1.9.2+.patch nginx-1.19.6.tar.gz nginx-1.19.6.tar.gz.asc nginx_upstream_check_module-0.3.0.tar.gz New: ---- nginx-1.19.7.tar.gz nginx-1.19.7.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nginx.spec ++++++ --- /var/tmp/diff_new_pack.C6LQpG/_old 2021-03-10 08:48:13.362329582 +0100 +++ /var/tmp/diff_new_pack.C6LQpG/_new 2021-03-10 08:48:13.366329585 +0100 @@ -1,7 +1,7 @@ # # spec file for package nginx # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,44 +17,13 @@ %{!?vim_data_dir:%global vim_data_dir %{_datadir}/vim/%(readlink %{_datadir}/vim/current)} -%define pkg_name nginx -%define nginx_upstream_check_version 0.3.0 -%define nginx_upstream_check_module_path nginx_upstream_check_module-%{nginx_upstream_check_version} %define src_install_dir %{_prefix}/src/%{name} -%if 0%{?is_opensuse} -%bcond_without extra_modules -%else -%bcond_with extra_modules -%endif -# -# keep in sync with ngx_conditionals in nginx-macros -%if 0%{?suse_version} != 1315 || 0%{?is_opensuse} -%bcond_without ngx_libatomic -%else -%bcond_with ngx_libatomic -%endif -%if 0%{?suse_version} > 1220 -%bcond_without ngx_http2 -%bcond_without ngx_pcre_jit -%bcond_without systemd -%else -%bcond_with ngx_http2 -%bcond_with ngx_pcre_jit -%bcond_with systemd -%endif +# keep in sync with #ngx_conditionals %bcond_with ngx_cpp_test %bcond_with ngx_google_perftools # -%if %{with systemd} -%define ngx_pid_path /run/nginx.pid -%define ngx_lock_path /run/nginx.lock -%else -%define ngx_pid_path %{_localstatedir}/run/nginx.pid -%define ngx_lock_path %{_localstatedir}/run/nginx.lock -%endif -# Name: nginx -Version: 1.19.6 +Version: 1.19.7 Release: 0 Summary: A HTTP server and IMAP/POP3 proxy server License: BSD-2-Clause @@ -64,7 +33,6 @@ Source1: nginx.init Source2: nginx.logrotate Source3: nginx.service -Source4: https://github.com/yaoweibin/nginx_upstream_check_module/archive/v%{nginx_upstream_check_version}/%{nginx_upstream_check_module_path}.tar.gz Source9: nginx.sysusers Source100: nginx.rpmlintrc Source101: https://nginx.org/download/%{name}-%{version}.tar.gz.asc @@ -79,20 +47,20 @@ Patch3: nginx-1.6.1-default_config.patch # PATCH-FIX-UPSTREAM nginx-aio.patch fix support for Linux AIO Patch4: nginx-aio.patch -# PATCH-FIX-UPSTREAM check_1.9.2+.patch -Patch5: check_1.9.2+.patch -# keep Buildrequires for the libraries and everything in sync with the requires in the nginx-source package BuildRequires: gcc-c++ BuildRequires: gd-devel +BuildRequires: libatomic-ops-devel BuildRequires: libxslt-devel BuildRequires: nginx-macros BuildRequires: openssl-devel BuildRequires: pcre-devel BuildRequires: pkgconfig +BuildRequires: sysuser-shadow +BuildRequires: sysuser-tools BuildRequires: vim BuildRequires: zlib-devel +BuildRequires: pkgconfig(systemd) %requires_eq perl -# Recommends: logrotate Recommends: nginx-module-fancyindex Recommends: nginx-module-geoip2 @@ -101,26 +69,12 @@ Recommends: vim-plugin-nginx Provides: http_daemon Provides: httpd +%{?systemd_ordering} +%sysusers_requires # %if %{with ngx_google_perftools} BuildRequires: google-perftools-devel %endif -# -%if %{with ngx_libatomic} -BuildRequires: libatomic-ops-devel -%endif -# -%if %{with systemd} -BuildRequires: sysuser-shadow -BuildRequires: sysuser-tools -BuildRequires: pkgconfig(systemd) -%{?systemd_ordering} -%sysusers_requires -%else -Requires(pre): %fillup_prereq -Requires(pre): %insserv_prereq -Requires(pre): shadow -%endif %description nginx [engine x] is a HTTP server and IMAP/POP3 proxy server written by Igor Sysoev. @@ -130,9 +84,7 @@ Summary: VIM support for nginx config files Group: Productivity/Text/Editors %requires_eq vim -%if 0%{?suse_version} > 1110 BuildArch: noarch -%endif %description -n vim-plugin-nginx nginx [engine x] is a HTTP server and IMAP/POP3 proxy server written by Igor Sysoev. @@ -145,6 +97,7 @@ Group: Development/Sources Requires: gcc-c++ Requires: gd-devel +Requires: libatomic-ops-devel Requires: libxslt-devel Requires: nginx = %{version} Requires: openssl-devel @@ -154,23 +107,17 @@ Requires: zlib-devel %requires_ge nginx-macros BuildArch: noarch -%if %{with ngx_libatomic} -Requires: libatomic-ops-devel -%endif %description -n nginx-source The source of nginx [engine x] HTTP server and IMAP/POP3 proxy server. %prep -%setup -q -n %{pkg_name}-%{version} -a 4 +%setup -q %patch0 -p1 %patch1 -p1 %patch2 %patch3 %patch4 -p1 -%if %{with ngx_extra_modules} -%patch5 -%endif perl -pi -e 's|\r\n|\n|g' contrib/geo2nginx.pl # we just use lib here because nginx loads them relative to _prefix @@ -183,33 +130,20 @@ sed -i 's/^\(#define NGX_LISTEN_BACKLOG \).*/\1-1/' src/os/unix/ngx_linux_config.h %build -# FIXME: you should use the %%configure macro -%{ngx_configure} \ - %if %{with ngx_extra_modules} - --add-module=%{nginx_upstream_check_module_path} \ - %endif +%{ngx_configure} %make_build -%if %{with systemd} %sysusers_generate_pre %{SOURCE9} nginx -%endif %install %make_install %perl_process_packlist install -dpm0750 %{buildroot}%{ngx_home}/{,tmp,proxy,fastcgi,scgi,uwsgi} - -install -Dpm0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/%{pkg_name} - -%if %{with systemd} +install -Dpm0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/%{name} install -Dpm0644 %{SOURCE3} %{buildroot}%{_unitdir}/nginx.service -ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcnginx install -Dpm0644 %{SOURCE9} %{buildroot}%{_sysusersdir}/nginx.conf -%else -install -Dpm0755 %{SOURCE1} %{buildroot}%{_sysconfdir}/init.d/%{pkg_name} -ln -s -f %{_sysconfdir}/init.d/%{pkg_name} %{buildroot}%{_sbindir}/rc%{pkg_name} -%endif +ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcnginx rm %{buildroot}/srv/www/htdocs/index.html @@ -241,39 +175,17 @@ popd } -copydocs %{nginx_upstream_check_module_path} \ - doc/* - -%post -%if %{with systemd} -%service_add_post nginx.service -%else -%fillup_and_insserv %{pkg_name} -%endif +%pre -f nginx.pre +%service_add_pre nginx.service %preun -%if %{with systemd} %service_del_preun nginx.service -%else -%stop_on_removal %{pkg_name} -%endif + +%post +%service_add_post nginx.service %postun -%if %{with systemd} %service_del_postun nginx.service -%else -%restart_on_update %{pkg_name} -%insserv_cleanup -%endif - -%if %{with systemd} -%pre -f nginx.pre -%service_add_pre nginx.service -%else -%pre -%{_sbindir}/groupadd -r %{ngx_user_group} &>/dev/null ||: -%{_sbindir}/useradd -g %{ngx_user_group} -s /bin/false -r -c "user for %{ngx_user_group}" -d %{ngx_home} %{ngx_user_group} &>/dev/null ||: -%endif %files %dir %{ngx_conf_dir}/ @@ -306,11 +218,8 @@ %{ngx_module_dir}/ngx_stream_module.so %{_mandir}/man3/nginx.3pm* /srv/www/htdocs/50x.html -%if 0%{?suse_version} && 0%{?suse_version} < 1140 -%{_localstatedir}/adm/perl-modules/%{name} -%endif -%{_sbindir}/rc%{pkg_name} -%config(noreplace) %{_sysconfdir}/logrotate.d/%{pkg_name} +%{_sbindir}/rc%{name} +%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %dir %attr(750,%{ngx_user_group},%{ngx_user_group}) %{_localstatedir}/log/nginx/ %dir %attr(750,%{ngx_user_group},%{ngx_user_group}) %{ngx_home}/ %dir %attr(750,%{ngx_user_group},%{ngx_user_group}) %{ngx_tmp_http} @@ -319,12 +228,8 @@ %dir %attr(750,%{ngx_user_group},%{ngx_user_group}) %{ngx_tmp_scgi} %dir %attr(750,%{ngx_user_group},%{ngx_user_group}) %{ngx_tmp_uwsgi} %doc %{ngx_doc_dir} -%if %{with systemd} %{_unitdir}/nginx.service %{_sysusersdir}/nginx.conf -%else -%{_sysconfdir}/init.d/%{pkg_name} -%endif %{_datadir}/nginx/ %files -n vim-plugin-nginx ++++++ nginx-1.19.6.tar.gz -> nginx-1.19.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/CHANGES new/nginx-1.19.7/CHANGES --- old/nginx-1.19.6/CHANGES 2020-12-15 15:41:44.000000000 +0100 +++ new/nginx-1.19.7/CHANGES 2021-02-16 16:57:23.000000000 +0100 @@ -1,4 +1,31 @@ +Changes with nginx 1.19.7 16 Feb 2021 + + *) Change: connections handling in HTTP/2 has been changed to better + match HTTP/1.x; the "http2_recv_timeout", "http2_idle_timeout", and + "http2_max_requests" directives have been removed, the + "keepalive_timeout" and "keepalive_requests" directives should be + used instead. + + *) Change: the "http2_max_field_size" and "http2_max_header_size" + directives have been removed, the "large_client_header_buffers" + directive should be used instead. + + *) Feature: now, if free worker connections are exhausted, nginx starts + closing not only keepalive connections, but also connections in + lingering close. + + *) Bugfix: "zero size buf in output" alerts might appear in logs if an + upstream server returned an incorrect response during unbuffered + proxying; the bug had appeared in 1.19.1. + + *) Bugfix: HEAD requests were handled incorrectly if the "return" + directive was used with the "image_filter" or "xslt_stylesheet" + directives. + + *) Bugfix: in the "add_trailer" directive. + + Changes with nginx 1.19.6 15 Dec 2020 *) Bugfix: "no live upstreams" errors if a "server" inside "upstream" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/CHANGES.ru new/nginx-1.19.7/CHANGES.ru --- old/nginx-1.19.6/CHANGES.ru 2020-12-15 15:41:43.000000000 +0100 +++ new/nginx-1.19.7/CHANGES.ru 2021-02-16 16:57:22.000000000 +0100 @@ -1,4 +1,30 @@ +?????????????????? ?? nginx 1.19.7 16.02.2021 + + *) ??????????????????: ?????????????????? ???????????????????? ?? HTTP/2 ???????? ???????????????? ?? ???????????? ?????????? + ?????????????????????????? HTTP/1.x; ?????????????????? http2_recv_timeout, + http2_idle_timeout ?? http2_max_requests ????????????????????, ???????????? ?????? + ?????????????? ???????????????????????? ?????????????????? keepalive_timeout ?? + keepalive_requests. + + *) ??????????????????: ?????????????????? http2_max_field_size ?? http2_max_header_size + ????????????????????, ???????????? ?????? ?????????????? ???????????????????????? ?????????????????? + large_client_header_buffers. + + *) ????????????????????: ???????????? ?????? ???????????????????? ?????????????????? ???????????????????? nginx + ?????????????????? ???? ???????????? keepalive-????????????????????, ???? ?? ???????????????????? ?? lingering + close. + + *) ??????????????????????: ?? ?????????? ?????????? ???????????????????? ?????????????????? "zero size buf in + output", ???????? ???????????? ?????????????????? ???????????????????????? ?????????? ?????? + ???????????????????????????????????? ??????????????????????????; ???????????? ?????????????????? ?? 1.19.1. + + *) ??????????????????????: ?????? ?????????????????????????? ?????????????????? return ???????????? ?? image_filter + ?????? xslt_stylesheet HEAD-?????????????? ???????????????????????????? ??????????????????????. + + *) ??????????????????????: ?? ?????????????????? add_trailer. + + ?????????????????? ?? nginx 1.19.6 15.12.2020 *) ??????????????????????: ???????????? "no live upstreams", ???????? server ?? ?????????? upstream diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/LICENSE new/nginx-1.19.7/LICENSE --- old/nginx-1.19.6/LICENSE 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/LICENSE 2021-02-16 16:57:18.000000000 +0100 @@ -1,6 +1,6 @@ /* - * Copyright (C) 2002-2019 Igor Sysoev - * Copyright (C) 2011-2019 Nginx, Inc. + * Copyright (C) 2002-2021 Igor Sysoev + * Copyright (C) 2011-2021 Nginx, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/contrib/vim/syntax/nginx.vim new/nginx-1.19.7/contrib/vim/syntax/nginx.vim --- old/nginx-1.19.6/contrib/vim/syntax/nginx.vim 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/contrib/vim/syntax/nginx.vim 2021-02-16 16:57:18.000000000 +0100 @@ -268,6 +268,7 @@ syn keyword ngxDirective contained grpc_ssl_certificate syn keyword ngxDirective contained grpc_ssl_certificate_key syn keyword ngxDirective contained grpc_ssl_ciphers +syn keyword ngxDirective contained grpc_ssl_conf_command syn keyword ngxDirective contained grpc_ssl_crl syn keyword ngxDirective contained grpc_ssl_name syn keyword ngxDirective contained grpc_ssl_password_file @@ -447,6 +448,7 @@ syn keyword ngxDirective contained proxy_cache_valid syn keyword ngxDirective contained proxy_connect_timeout syn keyword ngxDirective contained proxy_cookie_domain +syn keyword ngxDirective contained proxy_cookie_flags syn keyword ngxDirective contained proxy_cookie_path syn keyword ngxDirective contained proxy_download_rate syn keyword ngxDirective contained proxy_force_ranges @@ -480,11 +482,13 @@ syn keyword ngxDirective contained proxy_session_drop syn keyword ngxDirective contained proxy_set_body syn keyword ngxDirective contained proxy_set_header +syn keyword ngxDirective contained proxy_smtp_auth syn keyword ngxDirective contained proxy_socket_keepalive syn keyword ngxDirective contained proxy_ssl syn keyword ngxDirective contained proxy_ssl_certificate syn keyword ngxDirective contained proxy_ssl_certificate_key syn keyword ngxDirective contained proxy_ssl_ciphers +syn keyword ngxDirective contained proxy_ssl_conf_command syn keyword ngxDirective contained proxy_ssl_crl syn keyword ngxDirective contained proxy_ssl_name syn keyword ngxDirective contained proxy_ssl_password_file @@ -592,6 +596,7 @@ syn keyword ngxDirective contained ssl_certificate_key syn keyword ngxDirective contained ssl_ciphers syn keyword ngxDirective contained ssl_client_certificate +syn keyword ngxDirective contained ssl_conf_command syn keyword ngxDirective contained ssl_crl syn keyword ngxDirective contained ssl_dhparam syn keyword ngxDirective contained ssl_early_data @@ -605,6 +610,7 @@ syn keyword ngxDirective contained ssl_prefer_server_ciphers syn keyword ngxDirective contained ssl_preread syn keyword ngxDirective contained ssl_protocols +syn keyword ngxDirective contained ssl_reject_handshake syn keyword ngxDirective contained ssl_session_cache syn keyword ngxDirective contained ssl_session_ticket_key syn keyword ngxDirective contained ssl_session_tickets @@ -643,6 +649,7 @@ syn keyword ngxDirective contained userid syn keyword ngxDirective contained userid_domain syn keyword ngxDirective contained userid_expires +syn keyword ngxDirective contained userid_flags syn keyword ngxDirective contained userid_mark syn keyword ngxDirective contained userid_name syn keyword ngxDirective contained userid_p3p @@ -693,6 +700,7 @@ syn keyword ngxDirective contained uwsgi_ssl_certificate syn keyword ngxDirective contained uwsgi_ssl_certificate_key syn keyword ngxDirective contained uwsgi_ssl_ciphers +syn keyword ngxDirective contained uwsgi_ssl_conf_command syn keyword ngxDirective contained uwsgi_ssl_crl syn keyword ngxDirective contained uwsgi_ssl_name syn keyword ngxDirective contained uwsgi_ssl_password_file @@ -738,6 +746,7 @@ syn keyword ngxDirective contained zone_sync_ssl_certificate syn keyword ngxDirective contained zone_sync_ssl_certificate_key syn keyword ngxDirective contained zone_sync_ssl_ciphers +syn keyword ngxDirective contained zone_sync_ssl_conf_command syn keyword ngxDirective contained zone_sync_ssl_crl syn keyword ngxDirective contained zone_sync_ssl_name syn keyword ngxDirective contained zone_sync_ssl_password_file @@ -1329,6 +1338,8 @@ syn keyword ngxDirectiveThirdParty contained content_by_lua syn keyword ngxDirectiveThirdParty contained content_by_lua_block syn keyword ngxDirectiveThirdParty contained content_by_lua_file +syn keyword ngxDirectiveThirdParty contained exit_worker_by_lua_block +syn keyword ngxDirectiveThirdParty contained exit_worker_by_lua_file syn keyword ngxDirectiveThirdParty contained header_filter_by_lua syn keyword ngxDirectiveThirdParty contained header_filter_by_lua_block syn keyword ngxDirectiveThirdParty contained header_filter_by_lua_file @@ -1370,6 +1381,7 @@ syn keyword ngxDirectiveThirdParty contained lua_ssl_protocols syn keyword ngxDirectiveThirdParty contained lua_ssl_trusted_certificate syn keyword ngxDirectiveThirdParty contained lua_ssl_verify_depth +syn keyword ngxDirectiveThirdParty contained lua_thread_cache_max_entries syn keyword ngxDirectiveThirdParty contained lua_transform_underscores_in_response_headers syn keyword ngxDirectiveThirdParty contained lua_use_default_type syn keyword ngxDirectiveThirdParty contained rewrite_by_lua @@ -2285,6 +2297,7 @@ syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie_key syn keyword ngxDirectiveThirdParty contained testcookie_refresh_status syn keyword ngxDirectiveThirdParty contained testcookie_refresh_template +syn keyword ngxDirectiveThirdParty contained testcookie_samesite syn keyword ngxDirectiveThirdParty contained testcookie_secret syn keyword ngxDirectiveThirdParty contained testcookie_secure_flag syn keyword ngxDirectiveThirdParty contained testcookie_session @@ -2355,15 +2368,31 @@ " IP2Location Nginx " https://github.com/ip2location/ip2location-nginx -syn keyword ngxDirectiveThirdParty contained ip2location -syn keyword ngxDirectiveThirdParty contained ip2location_access_type syn keyword ngxDirectiveThirdParty contained ip2location_proxy syn keyword ngxDirectiveThirdParty contained ip2location_proxy_recursive +syn keyword ngxDirectiveThirdParty contained ip2location_areacode +syn keyword ngxDirectiveThirdParty contained ip2location_city +syn keyword ngxDirectiveThirdParty contained ip2location_country_long +syn keyword ngxDirectiveThirdParty contained ip2location_country_short +syn keyword ngxDirectiveThirdParty contained ip2location_domain +syn keyword ngxDirectiveThirdParty contained ip2location_elevation +syn keyword ngxDirectiveThirdParty contained ip2location_iddcode +syn keyword ngxDirectiveThirdParty contained ip2location_isp +syn keyword ngxDirectiveThirdParty contained ip2location_latitude +syn keyword ngxDirectiveThirdParty contained ip2location_longitude +syn keyword ngxDirectiveThirdParty contained ip2location_mcc +syn keyword ngxDirectiveThirdParty contained ip2location_mnc +syn keyword ngxDirectiveThirdParty contained ip2location_mobilebrand +syn keyword ngxDirectiveThirdParty contained ip2location_netspeed +syn keyword ngxDirectiveThirdParty contained ip2location_region +syn keyword ngxDirectiveThirdParty contained ip2location_timezone +syn keyword ngxDirectiveThirdParty contained ip2location_usagetype +syn keyword ngxDirectiveThirdParty contained ip2location_weatherstationcode +syn keyword ngxDirectiveThirdParty contained ip2location_weatherstationname +syn keyword ngxDirectiveThirdParty contained ip2location_zipcode " IP2Proxy module for Nginx " https://github.com/ip2location/ip2proxy-nginx -syn keyword ngxDirectiveThirdParty contained ip2proxy -syn keyword ngxDirectiveThirdParty contained ip2proxy_access_type syn keyword ngxDirectiveThirdParty contained ip2proxy_as syn keyword ngxDirectiveThirdParty contained ip2proxy_asn syn keyword ngxDirectiveThirdParty contained ip2proxy_city @@ -2371,12 +2400,14 @@ syn keyword ngxDirectiveThirdParty contained ip2proxy_country_short syn keyword ngxDirectiveThirdParty contained ip2proxy_database syn keyword ngxDirectiveThirdParty contained ip2proxy_domain -syn keyword ngxDirectiveThirdParty contained ip2proxy_is_proxy syn keyword ngxDirectiveThirdParty contained ip2proxy_isp +syn keyword ngxDirectiveThirdParty contained ip2proxy_is_proxy syn keyword ngxDirectiveThirdParty contained ip2proxy_last_seen +syn keyword ngxDirectiveThirdParty contained ip2proxy_proxy +syn keyword ngxDirectiveThirdParty contained ip2proxy_proxy_recursive syn keyword ngxDirectiveThirdParty contained ip2proxy_proxy_type syn keyword ngxDirectiveThirdParty contained ip2proxy_region -syn keyword ngxDirectiveThirdParty contained ip2proxy_reverse_proxy +syn keyword ngxDirectiveThirdParty contained ip2proxy_threat syn keyword ngxDirectiveThirdParty contained ip2proxy_usage_type diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/core/nginx.h new/nginx-1.19.7/src/core/nginx.h --- old/nginx-1.19.6/src/core/nginx.h 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/core/nginx.h 2021-02-16 16:57:18.000000000 +0100 @@ -9,8 +9,8 @@ #define _NGINX_H_INCLUDED_ -#define nginx_version 1019006 -#define NGINX_VERSION "1.19.6" +#define nginx_version 1019007 +#define NGINX_VERSION "1.19.7" #define NGINX_VER "nginx/" NGINX_VERSION #ifdef NGX_BUILD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/core/ngx_connection.c new/nginx-1.19.7/src/core/ngx_connection.c --- old/nginx-1.19.6/src/core/ngx_connection.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/core/ngx_connection.c 2021-02-16 16:57:18.000000000 +0100 @@ -1310,6 +1310,7 @@ cycle->connection_n); } + c = NULL; n = ngx_max(ngx_min(32, cycle->reusable_connections_n / 8), 1); for (i = 0; i < n; i++) { @@ -1325,6 +1326,21 @@ c->close = 1; c->read->handler(c->read); + } + + if (cycle->free_connection_n == 0 && c && c->reusable) { + + /* + * if no connections were freed, try to reuse the last + * connection again: this should free it as long as + * previous reuse moved it to lingering close + */ + + ngx_log_debug0(NGX_LOG_DEBUG_CORE, c->log, 0, + "reusing connection again"); + + c->close = 1; + c->read->handler(c->read); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/core/ngx_connection.h new/nginx-1.19.7/src/core/ngx_connection.h --- old/nginx-1.19.6/src/core/ngx_connection.h 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/core/ngx_connection.h 2021-02-16 16:57:18.000000000 +0100 @@ -45,8 +45,6 @@ size_t pool_size; /* should be here because of the AcceptEx() preread */ size_t post_accept_buffer_size; - /* should be here because of the deferred accept */ - ngx_msec_t post_accept_timeout; ngx_listening_t *previous; ngx_connection_t *connection; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/modules/ngx_http_proxy_module.c new/nginx-1.19.7/src/http/modules/ngx_http_proxy_module.c --- old/nginx-1.19.6/src/http/modules/ngx_http_proxy_module.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/modules/ngx_http_proxy_module.c 2021-02-16 16:57:18.000000000 +0100 @@ -2334,6 +2334,13 @@ u = r->upstream; + if (u->length == 0) { + ngx_log_error(NGX_LOG_WARN, r->connection->log, 0, + "upstream sent more data than specified in " + "\"Content-Length\" header"); + return NGX_OK; + } + for (cl = u->out_bufs, ll = &u->out_bufs; cl; cl = cl->next) { ll = &cl->next; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/modules/ngx_http_stub_status_module.c new/nginx-1.19.7/src/http/modules/ngx_http_stub_status_module.c --- old/nginx-1.19.6/src/http/modules/ngx_http_stub_status_module.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/modules/ngx_http_stub_status_module.c 2021-02-16 16:57:18.000000000 +0100 @@ -103,16 +103,6 @@ ngx_str_set(&r->headers_out.content_type, "text/plain"); r->headers_out.content_type_lowcase = NULL; - if (r->method == NGX_HTTP_HEAD) { - r->headers_out.status = NGX_HTTP_OK; - - rc = ngx_http_send_header(r); - - if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) { - return rc; - } - } - size = sizeof("Active connections: \n") + NGX_ATOMIC_T_LEN + sizeof("server accepts handled requests\n") - 1 + 6 + 3 * NGX_ATOMIC_T_LEN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/ngx_http.c new/nginx-1.19.7/src/http/ngx_http.c --- old/nginx-1.19.6/src/http/ngx_http.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/ngx_http.c 2021-02-16 16:57:18.000000000 +0100 @@ -1714,7 +1714,6 @@ cscf = addr->default_server; ls->pool_size = cscf->connection_pool_size; - ls->post_accept_timeout = cscf->client_header_timeout; clcf = cscf->ctx->loc_conf[ngx_http_core_module.ctx_index]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/ngx_http_core_module.c new/nginx-1.19.7/src/http/ngx_http_core_module.c --- old/nginx-1.19.6/src/http/ngx_http_core_module.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/ngx_http_core_module.c 2021-02-16 16:57:18.000000000 +0100 @@ -1782,7 +1782,7 @@ } } - if (r->method == NGX_HTTP_HEAD || (r != r->main && val.len == 0)) { + if (r != r->main && val.len == 0) { return ngx_http_send_header(r); } @@ -4078,14 +4078,6 @@ #endif } - if (ngx_strcmp(value[n].data, "spdy") == 0) { - ngx_conf_log_error(NGX_LOG_WARN, cf, 0, - "invalid parameter \"spdy\": " - "ngx_http_spdy_module was superseded " - "by ngx_http_v2_module"); - continue; - } - if (ngx_strncmp(value[n].data, "so_keepalive=", 13) == 0) { if (ngx_strcmp(&value[n].data[13], "on") == 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/ngx_http_request.c new/nginx-1.19.7/src/http/ngx_http_request.c --- old/nginx-1.19.6/src/http/ngx_http_request.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/ngx_http_request.c 2021-02-16 16:57:18.000000000 +0100 @@ -206,16 +206,17 @@ void ngx_http_init_connection(ngx_connection_t *c) { - ngx_uint_t i; - ngx_event_t *rev; - struct sockaddr_in *sin; - ngx_http_port_t *port; - ngx_http_in_addr_t *addr; - ngx_http_log_ctx_t *ctx; - ngx_http_connection_t *hc; + ngx_uint_t i; + ngx_event_t *rev; + struct sockaddr_in *sin; + ngx_http_port_t *port; + ngx_http_in_addr_t *addr; + ngx_http_log_ctx_t *ctx; + ngx_http_connection_t *hc; + ngx_http_core_srv_conf_t *cscf; #if (NGX_HAVE_INET6) - struct sockaddr_in6 *sin6; - ngx_http_in6_addr_t *addr6; + struct sockaddr_in6 *sin6; + ngx_http_in6_addr_t *addr6; #endif hc = ngx_pcalloc(c->pool, sizeof(ngx_http_connection_t)); @@ -361,7 +362,9 @@ return; } - ngx_add_timer(rev, c->listening->post_accept_timeout); + cscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_core_module); + + ngx_add_timer(rev, cscf->client_header_timeout); ngx_reusable_connection(c, 1); if (ngx_handle_read_event(rev, 0) != NGX_OK) { @@ -431,7 +434,7 @@ if (n == NGX_AGAIN) { if (!rev->timer_set) { - ngx_add_timer(rev, c->listening->post_accept_timeout); + ngx_add_timer(rev, cscf->client_header_timeout); ngx_reusable_connection(c, 1); } @@ -649,6 +652,7 @@ ngx_http_connection_t *hc; ngx_http_ssl_srv_conf_t *sscf; ngx_http_core_loc_conf_t *clcf; + ngx_http_core_srv_conf_t *cscf; c = rev->data; hc = c->data; @@ -680,7 +684,9 @@ rev->ready = 0; if (!rev->timer_set) { - ngx_add_timer(rev, c->listening->post_accept_timeout); + cscf = ngx_http_get_module_srv_conf(hc->conf_ctx, + ngx_http_core_module); + ngx_add_timer(rev, cscf->client_header_timeout); ngx_reusable_connection(c, 1); } @@ -755,7 +761,9 @@ if (rc == NGX_AGAIN) { if (!rev->timer_set) { - ngx_add_timer(rev, c->listening->post_accept_timeout); + cscf = ngx_http_get_module_srv_conf(hc->conf_ctx, + ngx_http_core_module); + ngx_add_timer(rev, cscf->client_header_timeout); } c->ssl->handler = ngx_http_ssl_handshake_handler; @@ -3429,6 +3437,9 @@ return; } + c->close = 0; + ngx_reusable_connection(c, 1); + ngx_add_timer(rev, clcf->lingering_timeout); if (rev->ready) { @@ -3453,7 +3464,7 @@ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "http lingering close handler"); - if (rev->timedout) { + if (rev->timedout || c->close) { ngx_http_close_request(r, 0); return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/ngx_http_special_response.c new/nginx-1.19.7/src/http/ngx_http_special_response.c --- old/nginx-1.19.6/src/http/ngx_http_special_response.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/ngx_http_special_response.c 2021-02-16 16:57:18.000000000 +0100 @@ -575,6 +575,10 @@ r->headers_out.headers.part.next = NULL; r->headers_out.headers.last = &r->headers_out.headers.part; + r->headers_out.trailers.part.nelts = 0; + r->headers_out.trailers.part.next = NULL; + r->headers_out.trailers.last = &r->headers_out.trailers.part; + r->headers_out.content_length_n = -1; r->headers_out.last_modified_time = -1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/ngx_http_upstream.c new/nginx-1.19.7/src/http/ngx_http_upstream.c --- old/nginx-1.19.6/src/http/ngx_http_upstream.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/ngx_http_upstream.c 2021-02-16 16:57:18.000000000 +0100 @@ -3721,6 +3721,13 @@ u = r->upstream; + if (u->length == 0) { + ngx_log_error(NGX_LOG_WARN, r->connection->log, 0, + "upstream sent more data than specified in " + "\"Content-Length\" header"); + return NGX_OK; + } + for (cl = u->out_bufs, ll = &u->out_bufs; cl; cl = cl->next) { ll = &cl->next; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/v2/ngx_http_v2.c new/nginx-1.19.7/src/http/v2/ngx_http_v2.c --- old/nginx-1.19.6/src/http/v2/ngx_http_v2.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/v2/ngx_http_v2.c 2021-02-16 16:57:18.000000000 +0100 @@ -325,7 +325,12 @@ rev->handler = ngx_http_v2_read_handler; c->write->handler = ngx_http_v2_write_handler; + if (c->read->timer_set) { + ngx_del_timer(c->read); + } + c->idle = 1; + ngx_reusable_connection(c, 0); ngx_http_v2_read_handler(rev); } @@ -362,6 +367,11 @@ return; } + if (!h2c->processing && !h2c->pushing) { + ngx_http_v2_finalize_connection(h2c, NGX_HTTP_V2_NO_ERROR); + return; + } + if (!h2c->goaway) { h2c->goaway = 1; @@ -449,14 +459,6 @@ h2c->blocked = 0; - if (h2c->processing || h2c->pushing) { - if (rev->timer_set) { - ngx_del_timer(rev); - } - - return; - } - ngx_http_v2_handle_connection(h2c); } @@ -629,9 +631,9 @@ static void ngx_http_v2_handle_connection(ngx_http_v2_connection_t *h2c) { - ngx_int_t rc; - ngx_connection_t *c; - ngx_http_v2_srv_conf_t *h2scf; + ngx_int_t rc; + ngx_connection_t *c; + ngx_http_core_loc_conf_t *clcf; if (h2c->last_out || h2c->processing || h2c->pushing) { return; @@ -668,10 +670,16 @@ return; } - h2scf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx, - ngx_http_v2_module); + clcf = ngx_http_get_module_loc_conf(h2c->http_connection->conf_ctx, + ngx_http_core_module); + + if (!c->read->timer_set) { + ngx_add_timer(c->read, clcf->keepalive_timeout); + } + + ngx_reusable_connection(c, 1); + if (h2c->state.incomplete) { - ngx_add_timer(c->read, h2scf->recv_timeout); return; } @@ -689,7 +697,6 @@ #endif c->destroyed = 1; - ngx_reusable_connection(c, 1); c->write->handler = ngx_http_empty_handler; c->read->handler = ngx_http_v2_idle_handler; @@ -697,8 +704,6 @@ if (c->write->timer_set) { ngx_del_timer(c->write); } - - ngx_add_timer(c->read, h2scf->idle_timeout); } @@ -767,6 +772,9 @@ return; } + c->close = 0; + ngx_reusable_connection(c, 1); + ngx_add_timer(rev, clcf->lingering_timeout); if (rev->ready) { @@ -791,7 +799,7 @@ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, "http2 lingering close handler"); - if (rev->timedout) { + if (rev->timedout || c->close) { ngx_http_close_connection(c); return; } @@ -807,6 +815,10 @@ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, "lingering read: %z", n); + if (n == NGX_AGAIN) { + break; + } + if (n == NGX_ERROR || n == 0) { ngx_http_close_connection(c); return; @@ -1179,12 +1191,15 @@ ngx_http_v2_state_headers(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end) { - size_t size; - ngx_uint_t padded, priority, depend, dependency, excl, weight; - ngx_uint_t status; - ngx_http_v2_node_t *node; - ngx_http_v2_stream_t *stream; - ngx_http_v2_srv_conf_t *h2scf; + size_t size; + ngx_uint_t padded, priority, depend, dependency, excl, + weight; + ngx_uint_t status; + ngx_http_v2_node_t *node; + ngx_http_v2_stream_t *stream; + ngx_http_v2_srv_conf_t *h2scf; + ngx_http_core_srv_conf_t *cscf; + ngx_http_core_loc_conf_t *clcf; padded = h2c->state.flags & NGX_HTTP_V2_PADDED_FLAG; priority = h2c->state.flags & NGX_HTTP_V2_PRIORITY_FLAG; @@ -1285,11 +1300,15 @@ return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_INTERNAL_ERROR); } + cscf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx, + ngx_http_core_module); + + h2c->state.header_limit = cscf->large_client_header_buffers.size + * cscf->large_client_header_buffers.num; + h2scf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx, ngx_http_v2_module); - h2c->state.header_limit = h2scf->max_header_size; - if (h2c->processing >= h2scf->concurrent_streams) { ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0, "concurrent streams exceeded %ui", h2c->processing); @@ -1343,7 +1362,10 @@ ngx_http_v2_set_dependency(h2c, node, depend, excl); } - if (h2c->connection->requests >= h2scf->max_requests) { + clcf = ngx_http_get_module_loc_conf(h2c->http_connection->conf_ctx, + ngx_http_core_module); + + if (h2c->connection->requests >= clcf->keepalive_requests) { h2c->goaway = 1; if (ngx_http_v2_send_goaway(h2c, NGX_HTTP_V2_NO_ERROR) == NGX_ERROR) { @@ -1468,10 +1490,10 @@ ngx_http_v2_state_field_len(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end) { - size_t alloc; - ngx_int_t len; - ngx_uint_t huff; - ngx_http_v2_srv_conf_t *h2scf; + size_t alloc; + ngx_int_t len; + ngx_uint_t huff; + ngx_http_core_srv_conf_t *cscf; if (!(h2c->state.flags & NGX_HTTP_V2_END_HEADERS_FLAG) && h2c->state.length < NGX_HTTP_V2_INT_OCTETS) @@ -1518,12 +1540,12 @@ "http2 %s string, len:%i", huff ? "encoded" : "raw", len); - h2scf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx, - ngx_http_v2_module); + cscf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx, + ngx_http_core_module); - if ((size_t) len > h2scf->max_field_size) { + if ((size_t) len > cscf->large_client_header_buffers.size) { ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0, - "client exceeded http2_max_field_size limit"); + "client sent too large header field"); return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_ENHANCE_YOUR_CALM); } @@ -1738,7 +1760,7 @@ if (len > h2c->state.header_limit) { ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0, - "client exceeded http2_max_header_size limit"); + "client sent too large header"); return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_ENHANCE_YOUR_CALM); } @@ -3272,6 +3294,10 @@ h2c->priority_limit += h2scf->concurrent_streams; + if (h2c->connection->read->timer_set) { + ngx_del_timer(h2c->connection->read); + } + return stream; } @@ -4638,6 +4664,7 @@ ngx_connection_t *c; ngx_http_v2_srv_conf_t *h2scf; ngx_http_v2_connection_t *h2c; + ngx_http_core_loc_conf_t *clcf; c = rev->data; h2c = c->data; @@ -4669,10 +4696,10 @@ #endif - h2scf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx, - ngx_http_v2_module); + clcf = ngx_http_get_module_loc_conf(h2c->http_connection->conf_ctx, + ngx_http_core_module); - if (h2c->idle++ > 10 * h2scf->max_requests) { + if (h2c->idle++ > 10 * clcf->keepalive_requests) { ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0, "http2 flood detected"); ngx_http_v2_finalize_connection(h2c, NGX_HTTP_V2_NO_ERROR); @@ -4682,6 +4709,9 @@ c->destroyed = 0; ngx_reusable_connection(c, 0); + h2scf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx, + ngx_http_v2_module); + h2c->pool = ngx_create_pool(h2scf->pool_size, h2c->connection->log); if (h2c->pool == NULL) { ngx_http_v2_finalize_connection(h2c, NGX_HTTP_V2_INTERNAL_ERROR); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/v2/ngx_http_v2_module.c new/nginx-1.19.7/src/http/v2/ngx_http_v2_module.c --- old/nginx-1.19.6/src/http/v2/ngx_http_v2_module.c 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/v2/ngx_http_v2_module.c 2021-02-16 16:57:18.000000000 +0100 @@ -36,10 +36,31 @@ static char *ngx_http_v2_streams_index_mask(ngx_conf_t *cf, void *post, void *data); static char *ngx_http_v2_chunk_size(ngx_conf_t *cf, void *post, void *data); -static char *ngx_http_v2_spdy_deprecated(ngx_conf_t *cf, ngx_command_t *cmd, +static char *ngx_http_v2_obsolete(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); +static ngx_conf_deprecated_t ngx_http_v2_recv_timeout_deprecated = { + ngx_conf_deprecated, "http2_recv_timeout", "client_header_timeout" +}; + +static ngx_conf_deprecated_t ngx_http_v2_idle_timeout_deprecated = { + ngx_conf_deprecated, "http2_idle_timeout", "keepalive_timeout" +}; + +static ngx_conf_deprecated_t ngx_http_v2_max_requests_deprecated = { + ngx_conf_deprecated, "http2_max_requests", "keepalive_requests" +}; + +static ngx_conf_deprecated_t ngx_http_v2_max_field_size_deprecated = { + ngx_conf_deprecated, "http2_max_field_size", "large_client_header_buffers" +}; + +static ngx_conf_deprecated_t ngx_http_v2_max_header_size_deprecated = { + ngx_conf_deprecated, "http2_max_header_size", "large_client_header_buffers" +}; + + static ngx_conf_post_t ngx_http_v2_recv_buffer_size_post = { ngx_http_v2_recv_buffer_size }; static ngx_conf_post_t ngx_http_v2_pool_size_post = @@ -84,24 +105,24 @@ { ngx_string("http2_max_requests"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_conf_set_num_slot, - NGX_HTTP_SRV_CONF_OFFSET, - offsetof(ngx_http_v2_srv_conf_t, max_requests), - NULL }, + ngx_http_v2_obsolete, + 0, + 0, + &ngx_http_v2_max_requests_deprecated }, { ngx_string("http2_max_field_size"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_conf_set_size_slot, - NGX_HTTP_SRV_CONF_OFFSET, - offsetof(ngx_http_v2_srv_conf_t, max_field_size), - NULL }, + ngx_http_v2_obsolete, + 0, + 0, + &ngx_http_v2_max_field_size_deprecated }, { ngx_string("http2_max_header_size"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_conf_set_size_slot, - NGX_HTTP_SRV_CONF_OFFSET, - offsetof(ngx_http_v2_srv_conf_t, max_header_size), - NULL }, + ngx_http_v2_obsolete, + 0, + 0, + &ngx_http_v2_max_header_size_deprecated }, { ngx_string("http2_body_preread_size"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, @@ -119,17 +140,17 @@ { ngx_string("http2_recv_timeout"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_conf_set_msec_slot, - NGX_HTTP_SRV_CONF_OFFSET, - offsetof(ngx_http_v2_srv_conf_t, recv_timeout), - NULL }, + ngx_http_v2_obsolete, + 0, + 0, + &ngx_http_v2_recv_timeout_deprecated }, { ngx_string("http2_idle_timeout"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_conf_set_msec_slot, - NGX_HTTP_SRV_CONF_OFFSET, - offsetof(ngx_http_v2_srv_conf_t, idle_timeout), - NULL }, + ngx_http_v2_obsolete, + 0, + 0, + &ngx_http_v2_idle_timeout_deprecated }, { ngx_string("http2_chunk_size"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, @@ -152,62 +173,6 @@ 0, NULL }, - { ngx_string("spdy_recv_buffer_size"), - NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, - ngx_http_v2_spdy_deprecated, - NGX_HTTP_MAIN_CONF_OFFSET, - 0, - NULL }, - - { ngx_string("spdy_pool_size"), - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_http_v2_spdy_deprecated, - NGX_HTTP_SRV_CONF_OFFSET, - 0, - NULL }, - - { ngx_string("spdy_max_concurrent_streams"), - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_http_v2_spdy_deprecated, - NGX_HTTP_SRV_CONF_OFFSET, - 0, - NULL }, - - { ngx_string("spdy_streams_index_size"), - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_http_v2_spdy_deprecated, - NGX_HTTP_SRV_CONF_OFFSET, - 0, - NULL }, - - { ngx_string("spdy_recv_timeout"), - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_http_v2_spdy_deprecated, - NGX_HTTP_SRV_CONF_OFFSET, - 0, - NULL }, - - { ngx_string("spdy_keepalive_timeout"), - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_http_v2_spdy_deprecated, - NGX_HTTP_SRV_CONF_OFFSET, - 0, - NULL }, - - { ngx_string("spdy_headers_comp"), - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, - ngx_http_v2_spdy_deprecated, - NGX_HTTP_SRV_CONF_OFFSET, - 0, - NULL }, - - { ngx_string("spdy_chunk_size"), - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, - ngx_http_v2_spdy_deprecated, - NGX_HTTP_LOC_CONF_OFFSET, - 0, - NULL }, - ngx_null_command }; @@ -353,18 +318,11 @@ h2scf->concurrent_streams = NGX_CONF_UNSET_UINT; h2scf->concurrent_pushes = NGX_CONF_UNSET_UINT; - h2scf->max_requests = NGX_CONF_UNSET_UINT; - - h2scf->max_field_size = NGX_CONF_UNSET_SIZE; - h2scf->max_header_size = NGX_CONF_UNSET_SIZE; h2scf->preread_size = NGX_CONF_UNSET_SIZE; h2scf->streams_index_mask = NGX_CONF_UNSET_UINT; - h2scf->recv_timeout = NGX_CONF_UNSET_MSEC; - h2scf->idle_timeout = NGX_CONF_UNSET_MSEC; - return h2scf; } @@ -381,23 +339,12 @@ prev->concurrent_streams, 128); ngx_conf_merge_uint_value(conf->concurrent_pushes, prev->concurrent_pushes, 10); - ngx_conf_merge_uint_value(conf->max_requests, prev->max_requests, 1000); - - ngx_conf_merge_size_value(conf->max_field_size, prev->max_field_size, - 4096); - ngx_conf_merge_size_value(conf->max_header_size, prev->max_header_size, - 16384); ngx_conf_merge_size_value(conf->preread_size, prev->preread_size, 65536); ngx_conf_merge_uint_value(conf->streams_index_mask, prev->streams_index_mask, 32 - 1); - ngx_conf_merge_msec_value(conf->recv_timeout, - prev->recv_timeout, 30000); - ngx_conf_merge_msec_value(conf->idle_timeout, - prev->idle_timeout, 180000); - return NGX_CONF_OK; } @@ -600,11 +547,14 @@ static char * -ngx_http_v2_spdy_deprecated(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) +ngx_http_v2_obsolete(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) { + ngx_conf_deprecated_t *d = cmd->post; + ngx_conf_log_error(NGX_LOG_WARN, cf, 0, - "invalid directive \"%V\": ngx_http_spdy_module " - "was superseded by ngx_http_v2_module", &cmd->name); + "the \"%s\" directive is obsolete, " + "use the \"%s\" directive instead", + d->old_name, d->new_name); return NGX_CONF_OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.19.6/src/http/v2/ngx_http_v2_module.h new/nginx-1.19.7/src/http/v2/ngx_http_v2_module.h --- old/nginx-1.19.6/src/http/v2/ngx_http_v2_module.h 2020-12-15 15:41:39.000000000 +0100 +++ new/nginx-1.19.7/src/http/v2/ngx_http_v2_module.h 2021-02-16 16:57:18.000000000 +0100 @@ -24,13 +24,8 @@ size_t pool_size; ngx_uint_t concurrent_streams; ngx_uint_t concurrent_pushes; - ngx_uint_t max_requests; - size_t max_field_size; - size_t max_header_size; size_t preread_size; ngx_uint_t streams_index_mask; - ngx_msec_t recv_timeout; - ngx_msec_t idle_timeout; } ngx_http_v2_srv_conf_t;
