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;
 
 

Reply via email to