Hello community, here is the log from the commit of package nginx for openSUSE:Factory checked in at 2019-07-17 13:20:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nginx (Old) and /work/SRC/openSUSE:Factory/.nginx.new.1887 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nginx" Wed Jul 17 13:20:46 2019 rev:37 rq:715679 version:1.17.1 Changes: -------- --- /work/SRC/openSUSE:Factory/nginx/nginx.changes 2019-05-24 11:33:35.233362168 +0200 +++ /work/SRC/openSUSE:Factory/.nginx.new.1887/nginx.changes 2019-07-17 13:21:15.819606977 +0200 @@ -1,0 +2,15 @@ +Tue Jul 9 12:05:55 UTC 2019 - Marcus Rueckert <mrueck...@suse.de> + +- update to 1.17.1 + - Feature: the "limit_req_dry_run" directive. + - Feature: when using the "hash" directive inside the "upstream" + block an empty hash key now triggers round-robin balancing. + Thanks to Niklas Keller. + - Bugfix: a segmentation fault might occur in a worker process if + caching was used along with the "image_filter" directive, and + errors with code 415 were redirected with the "error_page" + directive; the bug had appeared in 1.11.10. + - Bugfix: a segmentation fault might occur in a worker process if + embedded perl was used; the bug had appeared in 1.7.3. + +------------------------------------------------------------------- Old: ---- nginx-1.17.0.tar.gz nginx-1.17.0.tar.gz.asc New: ---- nginx-1.17.1.tar.gz nginx-1.17.1.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nginx.spec ++++++ --- /var/tmp/diff_new_pack.y0zJv3/_old 2019-07-17 13:21:16.651606504 +0200 +++ /var/tmp/diff_new_pack.y0zJv3/_new 2019-07-17 13:21:16.651606504 +0200 @@ -70,7 +70,7 @@ %define ngx_doc_dir %{_datadir}/doc/packages/%{name} # Name: nginx -Version: 1.17.0 +Version: 1.17.1 Release: 0 %define ngx_fancyindex_version 0.4.2 %define ngx_fancyindex_module_path ngx-fancyindex-%{ngx_fancyindex_version} ++++++ nginx-1.17.0.tar.gz -> nginx-1.17.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.0/CHANGES new/nginx-1.17.1/CHANGES --- old/nginx-1.17.0/CHANGES 2019-05-21 16:24:01.000000000 +0200 +++ new/nginx-1.17.1/CHANGES 2019-06-25 14:19:49.000000000 +0200 @@ -1,4 +1,21 @@ +Changes with nginx 1.17.1 25 Jun 2019 + + *) Feature: the "limit_req_dry_run" directive. + + *) Feature: when using the "hash" directive inside the "upstream" block + an empty hash key now triggers round-robin balancing. + Thanks to Niklas Keller. + + *) Bugfix: a segmentation fault might occur in a worker process if + caching was used along with the "image_filter" directive, and errors + with code 415 were redirected with the "error_page" directive; the + bug had appeared in 1.11.10. + + *) Bugfix: a segmentation fault might occur in a worker process if + embedded perl was used; the bug had appeared in 1.7.3. + + Changes with nginx 1.17.0 21 May 2019 *) Feature: variables support in the "limit_rate" and "limit_rate_after" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.0/CHANGES.ru new/nginx-1.17.1/CHANGES.ru --- old/nginx-1.17.0/CHANGES.ru 2019-05-21 16:24:00.000000000 +0200 +++ new/nginx-1.17.1/CHANGES.ru 2019-06-25 14:19:47.000000000 +0200 @@ -1,4 +1,22 @@ +Изменения в nginx 1.17.1 25.06.2019 + + *) Добавление: директива limit_req_dry_run. + + *) Добавление: при использовании директивы hash в блоке upstream пустой + ключ хэширования теперь приводит к переключению на round-robin + балансировку. + Спасибо Niklas Keller. + + *) Исправление: в рабочем процессе мог произойти segmentation fault, + если использовалось кэширование и директива image_filter, а ошибки с + кодом 415 перенаправлялись с помощь директивы error_page; ошибка + появилась в 1.11.10. + + *) Исправление: в рабочем процессе мог произойти segmentation fault, + если использовался встроенный перл; ошибка появилась в 1.7.3. + + Изменения в nginx 1.17.0 21.05.2019 *) Добавление: директивы limit_rate и limit_rate_after поддерживают diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.0/src/core/nginx.h new/nginx-1.17.1/src/core/nginx.h --- old/nginx-1.17.0/src/core/nginx.h 2019-05-21 16:23:57.000000000 +0200 +++ new/nginx-1.17.1/src/core/nginx.h 2019-06-25 14:19:45.000000000 +0200 @@ -9,8 +9,8 @@ #define _NGINX_H_INCLUDED_ -#define nginx_version 1017000 -#define NGINX_VERSION "1.17.0" +#define nginx_version 1017001 +#define NGINX_VERSION "1.17.1" #define NGINX_VER "nginx/" NGINX_VERSION #ifdef NGX_BUILD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.0/src/http/modules/ngx_http_limit_req_module.c new/nginx-1.17.1/src/http/modules/ngx_http_limit_req_module.c --- old/nginx-1.17.0/src/http/modules/ngx_http_limit_req_module.c 2019-05-21 16:23:57.000000000 +0200 +++ new/nginx-1.17.1/src/http/modules/ngx_http_limit_req_module.c 2019-06-25 14:19:45.000000000 +0200 @@ -53,6 +53,7 @@ ngx_uint_t limit_log_level; ngx_uint_t delay_log_level; ngx_uint_t status_code; + ngx_flag_t dry_run; } ngx_http_limit_req_conf_t; @@ -118,6 +119,13 @@ offsetof(ngx_http_limit_req_conf_t, status_code), &ngx_http_limit_req_status_bounds }, + { ngx_string("limit_req_dry_run"), + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, + ngx_conf_set_flag_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_limit_req_conf_t, dry_run), + NULL }, + ngx_null_command }; @@ -230,9 +238,10 @@ if (rc == NGX_BUSY) { ngx_log_error(lrcf->limit_log_level, r->connection->log, 0, - "limiting requests, excess: %ui.%03ui by zone \"%V\"", - excess / 1000, excess % 1000, - &limit->shm_zone->shm.name); + "limiting requests%s, excess: %ui.%03ui by zone \"%V\"", + lrcf->dry_run ? ", dry run" : "", + excess / 1000, excess % 1000, + &limit->shm_zone->shm.name); } while (n--) { @@ -251,6 +260,10 @@ ctx->node = NULL; } + if (lrcf->dry_run) { + return NGX_DECLINED; + } + return lrcf->status_code; } @@ -267,9 +280,14 @@ } ngx_log_error(lrcf->delay_log_level, r->connection->log, 0, - "delaying request, excess: %ui.%03ui, by zone \"%V\"", + "delaying request%s, excess: %ui.%03ui, by zone \"%V\"", + lrcf->dry_run ? ", dry run" : "", excess / 1000, excess % 1000, &limit->shm_zone->shm.name); + if (lrcf->dry_run) { + return NGX_DECLINED; + } + if (ngx_handle_read_event(r->connection->read, 0) != NGX_OK) { return NGX_HTTP_INTERNAL_SERVER_ERROR; } @@ -711,6 +729,7 @@ conf->limit_log_level = NGX_CONF_UNSET_UINT; conf->status_code = NGX_CONF_UNSET_UINT; + conf->dry_run = NGX_CONF_UNSET; return conf; } @@ -735,6 +754,8 @@ ngx_conf_merge_uint_value(conf->status_code, prev->status_code, NGX_HTTP_SERVICE_UNAVAILABLE); + ngx_conf_merge_value(conf->dry_run, prev->dry_run, 0); + return NGX_CONF_OK; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.0/src/http/modules/ngx_http_upstream_hash_module.c new/nginx-1.17.1/src/http/modules/ngx_http_upstream_hash_module.c --- old/nginx-1.17.0/src/http/modules/ngx_http_upstream_hash_module.c 2019-05-21 16:23:57.000000000 +0200 +++ new/nginx-1.17.1/src/http/modules/ngx_http_upstream_hash_module.c 2019-06-25 14:19:45.000000000 +0200 @@ -178,7 +178,7 @@ ngx_http_upstream_rr_peers_rlock(hp->rrp.peers); - if (hp->tries > 20 || hp->rrp.peers->single) { + if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) { ngx_http_upstream_rr_peers_unlock(hp->rrp.peers); return hp->get_rr_peer(pc, &hp->rrp); } @@ -509,7 +509,7 @@ ngx_http_upstream_rr_peers_wlock(hp->rrp.peers); - if (hp->tries > 20 || hp->rrp.peers->single) { + if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) { ngx_http_upstream_rr_peers_unlock(hp->rrp.peers); return hp->get_rr_peer(pc, &hp->rrp); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.0/src/http/modules/perl/nginx.xs new/nginx-1.17.1/src/http/modules/perl/nginx.xs --- old/nginx-1.17.0/src/http/modules/perl/nginx.xs 2019-05-21 16:23:57.000000000 +0200 +++ new/nginx-1.17.1/src/http/modules/perl/nginx.xs 2019-06-25 14:19:45.000000000 +0200 @@ -147,6 +147,8 @@ } } + r->disable_not_modified = 1; + (void) ngx_http_send_header(r); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.0/src/http/ngx_http_upstream.c new/nginx-1.17.1/src/http/ngx_http_upstream.c --- old/nginx-1.17.0/src/http/ngx_http_upstream.c 2019-05-21 16:23:57.000000000 +0200 +++ new/nginx-1.17.1/src/http/ngx_http_upstream.c 2019-06-25 14:19:45.000000000 +0200 @@ -597,10 +597,6 @@ u->cache_status = NGX_HTTP_CACHE_MISS; u->request_sent = 1; } - - if (ngx_http_upstream_cache_background_update(r, u) != NGX_OK) { - rc = NGX_ERROR; - } } if (rc != NGX_DECLINED) { @@ -902,9 +898,14 @@ || c->stale_updating) && !r->background && u->conf->cache_background_update) { - r->cache->background = 1; - u->cache_status = rc; - rc = NGX_OK; + if (ngx_http_upstream_cache_background_update(r, u) == NGX_OK) { + r->cache->background = 1; + u->cache_status = rc; + rc = NGX_OK; + + } else { + rc = NGX_ERROR; + } } break; @@ -1106,10 +1107,6 @@ { ngx_http_request_t *sr; - if (!r->cached || !r->cache->background) { - return NGX_OK; - } - if (r == r->main) { r->preserve_body = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.17.0/src/stream/ngx_stream_upstream_hash_module.c new/nginx-1.17.1/src/stream/ngx_stream_upstream_hash_module.c --- old/nginx-1.17.0/src/stream/ngx_stream_upstream_hash_module.c 2019-05-21 16:23:57.000000000 +0200 +++ new/nginx-1.17.1/src/stream/ngx_stream_upstream_hash_module.c 2019-06-25 14:19:45.000000000 +0200 @@ -178,7 +178,7 @@ ngx_stream_upstream_rr_peers_rlock(hp->rrp.peers); - if (hp->tries > 20 || hp->rrp.peers->single) { + if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) { ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers); return hp->get_rr_peer(pc, &hp->rrp); } @@ -511,7 +511,7 @@ ngx_stream_upstream_rr_peers_wlock(hp->rrp.peers); - if (hp->tries > 20 || hp->rrp.peers->single) { + if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) { ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers); return hp->get_rr_peer(pc, &hp->rrp); }