commit nginx for openSUSE:Factory
Hello community, here is the log from the commit of package nginx for openSUSE:Factory checked in at 2019-12-30 12:35:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nginx (Old) and /work/SRC/openSUSE:Factory/.nginx.new.6675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "nginx" Mon Dec 30 12:35:29 2019 rev:44 rq:759966 version:1.17.7 Changes: -------- --- /work/SRC/openSUSE:Factory/nginx/nginx.changes 2019-12-02 11:38:04.206457257 +0100 +++ /work/SRC/openSUSE:Factory/.nginx.new.6675/nginx.changes 2019-12-30 12:35:32.939827637 +0100 @@ -1,0 +2,22 @@ +Sat Dec 28 11:03:16 UTC 2019 - Илья Индиго <ilya@ilya.pp.ua> + +- Refresh spec-file via spec-cleaner. +- Add in service-file Wants=network-online.target (boo#1155690) +- Update to 1.17.7 + * https://nginx.org/en/CHANGES + * A segmentation fault might occur on start or during + reconfiguration if the "rewrite" directive with an empty + replacement string was used in the configuration. + * A segmentation fault might occur in a worker process if the + "break" directive was used with the "alias" directive or with + the "proxy_pass" directive with a URI. + * The "Location" response header line might contain garbage if + the request URI was rewritten to the one containing a null character. + * Requests with bodies were handled incorrectly when returning redirections + with the "error_page" directive; the bug had appeared in 0.7.12. + * Socket leak when using HTTP/2. + * A timeout might occur while handling pipelined requests in an + SSL connection; the bug had appeared in 1.17.5. + * Bugfix in the ngx_http_dav_module. + +------------------------------------------------------------------- Old: ---- nginx-1.17.6.tar.gz nginx-1.17.6.tar.gz.asc New: ---- nginx-1.17.7.tar.gz nginx-1.17.7.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nginx.spec ++++++ --- /var/tmp/diff_new_pack.JQGplW/_old 2019-12-30 12:35:34.851828663 +0100 +++ /var/tmp/diff_new_pack.JQGplW/_new 2019-12-30 12:35:34.855828665 +0100 @@ -1,7 +1,7 @@ # # spec file for package nginx # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,21 +16,43 @@ # -%bcond_with cpp_test -%bcond_with google_perftools - +%{!?vim_data_dir:%global vim_data_dir %{_datadir}/vim/%(readlink %{_datadir}/vim/current)} +%define pkg_name nginx +%define ngx_prefix %{_prefix} +%define ngx_sbin_path %{_sbindir}/nginx +%define ngx_module_dir %{_libdir}/nginx/modules +%define ngx_conf_dir %{_sysconfdir}/nginx +%define ngx_conf_path %{ngx_conf_dir}/nginx.conf +%define ngx_log_dir %{_localstatedir}/log/nginx +%define ngx_error_log %{ngx_log_dir}/error.log +%define ngx_access_log %{ngx_log_dir}/access.log +%define ngx_home %{_localstatedir}/lib/nginx +%define ngx_tmp_http %{ngx_home}/tmp/ +%define ngx_tmp_proxy %{ngx_home}/proxy/ +%define ngx_tmp_fcgi %{ngx_home}/fastcgi/ +%define ngx_tmp_scgi %{ngx_home}/scgi/ +%define ngx_tmp_uwsgi %{ngx_home}/uwsgi/ +%define ngx_user_group nginx +%define ngx_doc_dir %{_docdir}/%{name} +%define ngx_fancyindex_version 0.4.2 +%define ngx_fancyindex_module_path ngx-fancyindex-%{ngx_fancyindex_version} +%define headers_more_nginx_version 0.33 +%define headers_more_nginx_module_path headers-more-nginx-module-%{headers_more_nginx_version} +%define nginx_upstream_check_version 0.3.0 +%define nginx_upstream_check_module_path nginx_upstream_check_module-%{nginx_upstream_check_version} +%define nginx_rtmp_version 1.2.1 +%define nginx_rtmp_module_path nginx-rtmp-module-%{nginx_rtmp_version} +%define src_install_dir %{_prefix}/src/%{name} %if 0%{?is_opensuse} %bcond_without extra_modules %else %bcond_with extra_modules %endif - %if 0%{?suse_version} != 1315 || 0%{?is_opensuse} %bcond_without libatomic %else %bcond_with libatomic %endif - %if 0%{?suse_version} > 1220 %bcond_without http2 %bcond_without pcre_jit @@ -40,25 +62,8 @@ %bcond_with pcre_jit %bcond_with systemd %endif - -%{!?vim_data_dir:%global vim_data_dir /usr/share/vim/%(readlink /usr/share/vim/current)} - -%define pkg_name nginx -%define ngx_prefix %{_prefix} -%define ngx_sbin_path %{_sbindir}/nginx -%define ngx_module_dir %{_libdir}/nginx/modules -%define ngx_conf_dir %{_sysconfdir}/nginx -%define ngx_conf_path %{ngx_conf_dir}/nginx.conf -%define ngx_log_dir %{_localstatedir}/log/nginx -%define ngx_error_log %{ngx_log_dir}/error.log -%define ngx_access_log %{ngx_log_dir}/access.log -%define ngx_home %{_localstatedir}/lib/nginx -%define ngx_tmp_http %{ngx_home}/tmp/ -%define ngx_tmp_proxy %{ngx_home}/proxy/ -%define ngx_tmp_fcgi %{ngx_home}/fastcgi/ -%define ngx_tmp_scgi %{ngx_home}/scgi/ -%define ngx_tmp_uwsgi %{ngx_home}/uwsgi/ -%define ngx_user_group nginx +%bcond_with cpp_test +%bcond_with google_perftools # %if %{with systemd} %define ngx_pid_path /run/nginx.pid @@ -67,25 +72,10 @@ %define ngx_pid_path %{_localstatedir}/run/nginx.pid %define ngx_lock_path %{_localstatedir}/run/nginx.lock %endif -%define ngx_doc_dir %{_datadir}/doc/packages/%{name} # Name: nginx -Version: 1.17.6 +Version: 1.17.7 Release: 0 -%define ngx_fancyindex_version 0.4.2 -%define ngx_fancyindex_module_path ngx-fancyindex-%{ngx_fancyindex_version} - -%define headers_more_nginx_version 0.33 -%define headers_more_nginx_module_path headers-more-nginx-module-%{headers_more_nginx_version} - -%define nginx_upstream_check_version 0.3.0 -%define nginx_upstream_check_module_path nginx_upstream_check_module-%{nginx_upstream_check_version} - -%define nginx_rtmp_version 1.2.1 -%define nginx_rtmp_module_path nginx-rtmp-module-%{nginx_rtmp_version} - -%define src_install_dir /usr/src/%{name} - Summary: A HTTP server and IMAP/POP3 proxy server License: BSD-2-Clause Group: Productivity/Networking/Web/Proxy @@ -99,7 +89,7 @@ Source6: https://github.com/yaoweibin/nginx_upstream_check_module/archive/v%{nginx_upstream_check_version}/%{nginx_upstream_check_module_path}.tar.gz Source7: https://github.com/arut/nginx-rtmp-module/archive/v%{nginx_rtmp_version}/%{nginx_rtmp_module_path}.tar.gz Source100: nginx.rpmlintrc -Source101: http://nginx.org/download/nginx-%{version}.tar.gz.asc +Source101: https://nginx.org/download/nginx-%{version}.tar.gz.asc Source102: https://nginx.org/keys/mdounin.key#/%{name}.keyring # PATCH-FIX-UPSTREAM nginx-1.11.2-no_Werror.patch Patch0: nginx-1.11.2-no_Werror.patch @@ -115,6 +105,8 @@ Patch5: check_1.9.2+.patch BuildRequires: gcc-c++ BuildRequires: gd-devel +# +BuildRequires: libGeoIP-devel BuildRequires: libxslt-devel BuildRequires: openssl-devel BuildRequires: pcre-devel @@ -122,15 +114,13 @@ BuildRequires: vim BuildRequires: zlib-devel %requires_eq perl -Requires(pre): pwdutils +Requires(pre): shadow Recommends: logrotate Recommends: vim-plugin-nginx -Conflicts: otherproviders(nginx) +Conflicts: nginx Provides: http_daemon Provides: httpd # -BuildRequires: libGeoIP-devel -# %if %{with google_perftools} BuildRequires: google-perftools-devel %endif @@ -154,10 +144,11 @@ %package -n vim-plugin-nginx Summary: VIM support for nginx config files Group: Productivity/Text/Editors +%requires_eq vim %if 0%{?suse_version} > 1110 BuildArch: noarch %endif -%requires_eq vim + %description -n vim-plugin-nginx nginx [engine x] is a HTTP server and IMAP/POP3 proxy server written by Igor Sysoev. It has been running on many heavily loaded Russian sites for more than two years. @@ -192,6 +183,7 @@ %endif %build +# FIXME: you should use the %%configure macro ./configure \ --prefix=%{ngx_prefix}/ \ --sbin-path=%{ngx_sbin_path} \ ++++++ nginx-1.17.6.tar.gz -> nginx-1.17.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/CHANGES new/nginx-1.17.7/CHANGES --- old/nginx-1.17.6/CHANGES 2019-11-19 15:19:02.000000000 +0100 +++ new/nginx-1.17.7/CHANGES 2019-12-24 16:00:14.000000000 +0100 @@ -1,4 +1,29 @@ +Changes with nginx 1.17.7 24 Dec 2019 + + *) Bugfix: a segmentation fault might occur on start or during + reconfiguration if the "rewrite" directive with an empty replacement + string was used in the configuration. + + *) Bugfix: a segmentation fault might occur in a worker process if the + "break" directive was used with the "alias" directive or with the + "proxy_pass" directive with a URI. + + *) Bugfix: the "Location" response header line might contain garbage if + the request URI was rewritten to the one containing a null character. + + *) Bugfix: requests with bodies were handled incorrectly when returning + redirections with the "error_page" directive; the bug had appeared in + 0.7.12. + + *) Bugfix: socket leak when using HTTP/2. + + *) Bugfix: a timeout might occur while handling pipelined requests in an + SSL connection; the bug had appeared in 1.17.5. + + *) Bugfix: in the ngx_http_dav_module. + + Changes with nginx 1.17.6 19 Nov 2019 *) Feature: the $proxy_protocol_server_addr and diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/CHANGES.ru new/nginx-1.17.7/CHANGES.ru --- old/nginx-1.17.6/CHANGES.ru 2019-11-19 15:19:01.000000000 +0100 +++ new/nginx-1.17.7/CHANGES.ru 2019-12-24 16:00:12.000000000 +0100 @@ -1,4 +1,29 @@ +Изменения в nginx 1.17.7 24.12.2019 + + *) Исправление: на старте или во время переконфигурации мог произойти + segmentation fault, если в конфигурации использовалась директива + rewrite с пустой строкой замены. + + *) Исправление: в рабочем процессе мог произойти segmentation fault, + если директива break использовалась совместно с директивой alias или + директивой proxy_pass с URI. + + *) Исправление: строка Location заголовка ответа могла содержать мусор, + если URI запроса был изменён на URI, содержащий нулевой символ. + + *) Исправление: при возврате перенаправлений с помощью директивы + error_page запросы с телом обрабатывались некорректно; ошибка + появилась в 0.7.12. + + *) Исправление: утечки сокетов при использовании HTTP/2. + + *) Исправление: при обработке pipelined-запросов по SSL-соединению мог + произойти таймаут; ошибка появилась в 1.17.5. + + *) Исправление: в модуле ngx_http_dav_module. + + Изменения в nginx 1.17.6 19.11.2019 *) Добавление: переменные $proxy_protocol_server_addr и diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/man/nginx.8 new/nginx-1.17.7/man/nginx.8 --- old/nginx-1.17.6/man/nginx.8 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/man/nginx.8 2019-12-24 16:00:09.000000000 +0100 @@ -1,5 +1,5 @@ .\" -.\" Copyright (C) 2010 Sergey A. Osokin +.\" Copyright (C) 2010, 2019 Sergey A. Osokin .\" Copyright (C) Nginx, Inc. .\" All rights reserved. .\" @@ -25,7 +25,7 @@ .\" SUCH DAMAGE. .\" .\" -.Dd June 16, 2015 +.Dd December 5, 2019 .Dt NGINX 8 .Os .Sh NAME @@ -42,7 +42,8 @@ .Nm (pronounced .Dq engine x ) -is an HTTP and reverse proxy server, as well as a mail proxy server. +is an HTTP and reverse proxy server, a mail proxy server, and a generic +TCP/UDP proxy server. It is known for its high performance, stability, rich feature set, simple configuration, and low resource consumption. .Pp @@ -82,15 +83,15 @@ .It Cm reload .Dv SIGHUP .El +.It Fl T +Same as +.Fl t , +but additionally dump configuration files to standard output. .It Fl t Do not run, just test the configuration file. .Nm checks the configuration file syntax and then tries to open files referenced in the configuration file. -.It Fl T -Same as -.Fl t , -but additionally dump configuration files to standard output. .It Fl V Print the .Nm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/core/nginx.h new/nginx-1.17.7/src/core/nginx.h --- old/nginx-1.17.6/src/core/nginx.h 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/core/nginx.h 2019-12-24 16:00:09.000000000 +0100 @@ -9,8 +9,8 @@ #define _NGINX_H_INCLUDED_ -#define nginx_version 1017006 -#define NGINX_VERSION "1.17.6" +#define nginx_version 1017007 +#define NGINX_VERSION "1.17.7" #define NGINX_VER "nginx/" NGINX_VERSION #ifdef NGX_BUILD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/event/ngx_event.c new/nginx-1.17.7/src/event/ngx_event.c --- old/nginx-1.17.6/src/event/ngx_event.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/event/ngx_event.c 2019-12-24 16:00:09.000000000 +0100 @@ -238,8 +238,6 @@ } if (!ngx_queue_empty(&ngx_posted_next_events)) { - ngx_queue_add(&ngx_posted_events, &ngx_posted_next_events); - ngx_queue_init(&ngx_posted_next_events); timer = 0; } @@ -263,6 +261,7 @@ } ngx_event_process_posted(cycle, &ngx_posted_events); + ngx_event_process_posted_next(cycle, &ngx_posted_next_events); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/event/ngx_event_openssl.c new/nginx-1.17.7/src/event/ngx_event_openssl.c --- old/nginx-1.17.6/src/event/ngx_event_openssl.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/event/ngx_event_openssl.c 2019-12-24 16:00:09.000000000 +0100 @@ -43,7 +43,6 @@ #endif static ngx_int_t ngx_ssl_handle_recv(ngx_connection_t *c, int n); static void ngx_ssl_write_handler(ngx_event_t *wev); -static void ngx_ssl_next_read_handler(ngx_event_t *rev); #ifdef SSL_READ_EARLY_DATA_SUCCESS static ssize_t ngx_ssl_write_early(ngx_connection_t *c, u_char *data, size_t size); @@ -2018,11 +2017,6 @@ c->read->available = 0; c->read->ready = 0; - if (c->ssl->next_read_handler == NULL) { - c->ssl->next_read_handler = c->read->handler; - c->read->handler = ngx_ssl_next_read_handler; - } - ngx_post_event(c->read, &ngx_posted_next_events); } @@ -2328,31 +2322,6 @@ } -static void -ngx_ssl_next_read_handler(ngx_event_t *rev) -{ - ngx_connection_t *c; - - c = rev->data; - - ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL next read handler"); - - rev->handler = c->ssl->next_read_handler; - c->ssl->next_read_handler = NULL; - - if (!rev->ready) { - rev->ready = 1; - rev->available = -1; - } - - if (rev->posted) { - ngx_delete_posted_event(rev); - } - - rev->handler(rev); -} - - /* * OpenSSL has no SSL_writev() so we copy several bufs into our 16K buffer * before the SSL_write() call to decrease a SSL overhead. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/event/ngx_event_openssl.h new/nginx-1.17.7/src/event/ngx_event_openssl.h --- old/nginx-1.17.6/src/event/ngx_event_openssl.h 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/event/ngx_event_openssl.h 2019-12-24 16:00:09.000000000 +0100 @@ -86,7 +86,6 @@ ngx_event_handler_pt saved_read_handler; ngx_event_handler_pt saved_write_handler; - ngx_event_handler_pt next_read_handler; u_char early_buf; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/event/ngx_event_posted.c new/nginx-1.17.7/src/event/ngx_event_posted.c --- old/nginx-1.17.6/src/event/ngx_event_posted.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/event/ngx_event_posted.c 2019-12-24 16:00:09.000000000 +0100 @@ -34,3 +34,29 @@ ev->handler(ev); } } + + +void +ngx_event_process_posted_next(ngx_cycle_t *cycle, ngx_queue_t *posted) +{ + ngx_queue_t *q; + ngx_event_t *ev; + + while (!ngx_queue_empty(posted)) { + + q = ngx_queue_head(posted); + ev = ngx_queue_data(q, ngx_event_t, queue); + + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, + "posted next event %p", ev); + + ngx_delete_posted_event(ev); + + if (!ev->ready) { + ev->ready = 1; + ev->available = -1; + } + + ev->handler(ev); + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/event/ngx_event_posted.h new/nginx-1.17.7/src/event/ngx_event_posted.h --- old/nginx-1.17.6/src/event/ngx_event_posted.h 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/event/ngx_event_posted.h 2019-12-24 16:00:09.000000000 +0100 @@ -39,6 +39,7 @@ void ngx_event_process_posted(ngx_cycle_t *cycle, ngx_queue_t *posted); +void ngx_event_process_posted_next(ngx_cycle_t *cycle, ngx_queue_t *posted); extern ngx_queue_t ngx_posted_accept_events; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/http/modules/ngx_http_dav_module.c new/nginx-1.17.7/src/http/modules/ngx_http_dav_module.c --- old/nginx-1.17.6/src/http/modules/ngx_http_dav_module.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/http/modules/ngx_http_dav_module.c 2019-12-24 16:00:09.000000000 +0100 @@ -56,7 +56,7 @@ static ngx_int_t ngx_http_dav_depth(ngx_http_request_t *r, ngx_int_t dflt); static ngx_int_t ngx_http_dav_error(ngx_log_t *log, ngx_err_t err, ngx_int_t not_found, char *failed, u_char *path); -static ngx_int_t ngx_http_dav_location(ngx_http_request_t *r, u_char *path); +static ngx_int_t ngx_http_dav_location(ngx_http_request_t *r); static void *ngx_http_dav_create_loc_conf(ngx_conf_t *cf); static char *ngx_http_dav_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child); @@ -285,7 +285,7 @@ } if (status == NGX_HTTP_CREATED) { - if (ngx_http_dav_location(r, path.data) != NGX_OK) { + if (ngx_http_dav_location(r) != NGX_OK) { ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); return; } @@ -312,7 +312,7 @@ ngx_file_info_t fi; ngx_http_dav_loc_conf_t *dlcf; - if (r->headers_in.content_length_n > 0) { + if (r->headers_in.content_length_n > 0 || r->headers_in.chunked) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "DELETE with body is unsupported"); return NGX_HTTP_UNSUPPORTED_MEDIA_TYPE; @@ -495,7 +495,7 @@ size_t root; ngx_str_t path; - if (r->headers_in.content_length_n > 0) { + if (r->headers_in.content_length_n > 0 || r->headers_in.chunked) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "MKCOL with body is unsupported"); return NGX_HTTP_UNSUPPORTED_MEDIA_TYPE; @@ -513,7 +513,6 @@ } *(p - 1) = '\0'; - r->uri.len--; ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "http mkcol path: \"%s\"", path.data); @@ -521,7 +520,7 @@ if (ngx_create_dir(path.data, ngx_dir_access(dlcf->access)) != NGX_FILE_ERROR) { - if (ngx_http_dav_location(r, path.data) != NGX_OK) { + if (ngx_http_dav_location(r) != NGX_OK) { return NGX_HTTP_INTERNAL_SERVER_ERROR; } @@ -550,7 +549,9 @@ ngx_http_dav_copy_ctx_t copy; ngx_http_dav_loc_conf_t *dlcf; - if (r->headers_in.content_length_n > 0) { + if (r->headers_in.content_length_n > 0 || r->headers_in.chunked) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, + "COPY and MOVE with body are unsupported"); return NGX_HTTP_UNSUPPORTED_MEDIA_TYPE; } @@ -1069,35 +1070,16 @@ static ngx_int_t -ngx_http_dav_location(ngx_http_request_t *r, u_char *path) +ngx_http_dav_location(ngx_http_request_t *r) { - u_char *location; - ngx_http_core_loc_conf_t *clcf; - r->headers_out.location = ngx_list_push(&r->headers_out.headers); if (r->headers_out.location == NULL) { return NGX_ERROR; } - clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); - - if (!clcf->alias && clcf->root_lengths == NULL) { - location = path + clcf->root.len; - - } else { - location = ngx_pnalloc(r->pool, r->uri.len); - if (location == NULL) { - ngx_http_clear_location(r); - return NGX_ERROR; - } - - ngx_memcpy(location, r->uri.data, r->uri.len); - } - r->headers_out.location->hash = 1; ngx_str_set(&r->headers_out.location->key, "Location"); - r->headers_out.location->value.len = r->uri.len; - r->headers_out.location->value.data = location; + r->headers_out.location->value = r->uri; return NGX_OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/http/modules/ngx_http_index_module.c new/nginx-1.17.7/src/http/modules/ngx_http_index_module.c --- old/nginx-1.17.6/src/http/modules/ngx_http_index_module.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/http/modules/ngx_http_index_module.c 2019-12-24 16:00:09.000000000 +0100 @@ -163,7 +163,7 @@ name = ngx_http_map_uri_to_path(r, &path, &root, reserve); if (name == NULL) { - return NGX_ERROR; + return NGX_HTTP_INTERNAL_SERVER_ERROR; } allocated = path.data + path.len - name; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/http/modules/ngx_http_rewrite_module.c new/nginx-1.17.7/src/http/modules/ngx_http_rewrite_module.c --- old/nginx-1.17.6/src/http/modules/ngx_http_rewrite_module.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/http/modules/ngx_http_rewrite_module.c 2019-12-24 16:00:09.000000000 +0100 @@ -318,6 +318,11 @@ value = cf->args->elts; + if (value[2].len == 0) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "empty replacement"); + return NGX_CONF_ERROR; + } + ngx_memzero(&rc, sizeof(ngx_regex_compile_t)); rc.pattern = value[1]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/http/modules/ngx_http_static_module.c new/nginx-1.17.7/src/http/modules/ngx_http_static_module.c --- old/nginx-1.17.6/src/http/modules/ngx_http_static_module.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/http/modules/ngx_http_static_module.c 2019-12-24 16:00:09.000000000 +0100 @@ -157,8 +157,8 @@ len = r->uri.len + 1; - if (!clcf->alias && clcf->root_lengths == NULL && r->args.len == 0) { - location = path.data + clcf->root.len; + if (!clcf->alias && r->args.len == 0) { + location = path.data + root; *last = '/'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/http/modules/ngx_http_upstream_keepalive_module.c new/nginx-1.17.7/src/http/modules/ngx_http_upstream_keepalive_module.c --- old/nginx-1.17.6/src/http/modules/ngx_http_upstream_keepalive_module.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/http/modules/ngx_http_upstream_keepalive_module.c 2019-12-24 16:00:09.000000000 +0100 @@ -275,6 +275,7 @@ c->idle = 0; c->sent = 0; + c->data = NULL; c->log = pc->log; c->read->log = pc->log; c->write->log = pc->log; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/http/ngx_http_core_module.c new/nginx-1.17.7/src/http/ngx_http_core_module.c --- old/nginx-1.17.6/src/http/ngx_http_core_module.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/http/ngx_http_core_module.c 2019-12-24 16:00:09.000000000 +0100 @@ -1843,7 +1843,8 @@ } } - last = ngx_cpystrn(last, r->uri.data + alias, r->uri.len - alias + 1); + last = ngx_copy(last, r->uri.data + alias, r->uri.len - alias); + *last = '\0'; return last; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/http/ngx_http_script.c new/nginx-1.17.7/src/http/ngx_http_script.c --- old/nginx-1.17.6/src/http/ngx_http_script.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/http/ngx_http_script.c 2019-12-24 16:00:09.000000000 +0100 @@ -1470,7 +1470,14 @@ void ngx_http_script_break_code(ngx_http_script_engine_t *e) { - e->request->uri_changed = 0; + ngx_http_request_t *r; + + r = e->request; + + if (r->uri_changed) { + r->valid_location = 0; + r->uri_changed = 0; + } e->ip = ngx_http_script_exit; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/http/ngx_http_special_response.c new/nginx-1.17.7/src/http/ngx_http_special_response.c --- old/nginx-1.17.6/src/http/ngx_http_special_response.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/http/ngx_http_special_response.c 2019-12-24 16:00:09.000000000 +0100 @@ -623,6 +623,12 @@ return ngx_http_named_location(r, &uri); } + r->expect_tested = 1; + + if (ngx_http_discard_request_body(r) != NGX_OK) { + r->keepalive = 0; + } + location = ngx_list_push(&r->headers_out.headers); if (location == NULL) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.6/src/http/v2/ngx_http_v2.c new/nginx-1.17.7/src/http/v2/ngx_http_v2.c --- old/nginx-1.17.6/src/http/v2/ngx_http_v2.c 2019-11-19 15:18:58.000000000 +0100 +++ new/nginx-1.17.7/src/http/v2/ngx_http_v2.c 2019-12-24 16:00:09.000000000 +0100 @@ -178,6 +178,7 @@ static ngx_int_t ngx_http_v2_terminate_stream(ngx_http_v2_connection_t *h2c, ngx_http_v2_stream_t *stream, ngx_uint_t status); static void ngx_http_v2_close_stream_handler(ngx_event_t *ev); +static void ngx_http_v2_retry_close_stream_handler(ngx_event_t *ev); static void ngx_http_v2_handle_connection_handler(ngx_event_t *rev); static void ngx_http_v2_idle_handler(ngx_event_t *rev); static void ngx_http_v2_finalize_connection(ngx_http_v2_connection_t *h2c, @@ -4288,8 +4289,9 @@ fc = stream->request->connection; if (stream->queued) { - fc->write->handler = ngx_http_v2_close_stream_handler; - fc->read->handler = ngx_http_empty_handler; + fc->error = 1; + fc->write->handler = ngx_http_v2_retry_close_stream_handler; + fc->read->handler = ngx_http_v2_retry_close_stream_handler; return; } @@ -4409,6 +4411,22 @@ ngx_http_v2_close_stream(r->stream, 0); } + + +static void +ngx_http_v2_retry_close_stream_handler(ngx_event_t *ev) +{ + ngx_connection_t *fc; + ngx_http_request_t *r; + + fc = ev->data; + r = fc->data; + + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 retry close stream handler"); + + ngx_http_v2_close_stream(r->stream, 0); +} static void ++++++ nginx.service ++++++ --- /var/tmp/diff_new_pack.JQGplW/_old 2019-12-30 12:35:35.163828830 +0100 +++ /var/tmp/diff_new_pack.JQGplW/_new 2019-12-30 12:35:35.163828830 +0100 @@ -1,6 +1,7 @@ [Unit] Description=The nginx HTTP and reverse proxy server -After=network.target remote-fs.target nss-lookup.target +After=network-online.target remote-fs.target nss-lookup.target +Wants=network-online.target [Service] PIDFile=/run/nginx.pid
participants (1)
-
root