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-09-16 23:14:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nginx (Old) and /work/SRC/openSUSE:Factory/.nginx.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nginx" Thu Sep 16 23:14:30 2021 rev:70 rq:918014 version:1.21.3 Changes: -------- --- /work/SRC/openSUSE:Factory/nginx/nginx.changes 2021-09-03 21:25:26.486119132 +0200 +++ /work/SRC/openSUSE:Factory/.nginx.new.1899/nginx.changes 2021-09-16 23:16:43.583925935 +0200 @@ -1,0 +2,9 @@ +Fri Sep 10 17:44:54 UTC 2021 - ???????? ???????????? <i...@ilya.pp.ua> + +- Updated to 1.21.3 + * https://nginx.org/en/CHANGES + * Optimization of client request body reading when using HTTP/2. + * Fixed request body filters internal API when using HTTP/2 and + buffering of the data being processed. + +------------------------------------------------------------------- Old: ---- nginx-1.21.2.tar.gz nginx-1.21.2.tar.gz.asc New: ---- nginx-1.21.3.tar.gz nginx-1.21.3.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nginx.spec ++++++ --- /var/tmp/diff_new_pack.TFPHtJ/_old 2021-09-16 23:16:44.279926656 +0200 +++ /var/tmp/diff_new_pack.TFPHtJ/_new 2021-09-16 23:16:44.283926661 +0200 @@ -23,7 +23,7 @@ %bcond_with ngx_google_perftools # Name: nginx -Version: 1.21.2 +Version: 1.21.3 Release: 0 Summary: A HTTP server and IMAP/POP3 proxy server License: BSD-2-Clause ++++++ nginx-1.21.2.tar.gz -> nginx-1.21.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.21.2/CHANGES new/nginx-1.21.3/CHANGES --- old/nginx-1.21.2/CHANGES 2021-08-31 17:13:56.000000000 +0200 +++ new/nginx-1.21.3/CHANGES 2021-09-07 17:21:08.000000000 +0200 @@ -1,4 +1,13 @@ +Changes with nginx 1.21.3 07 Sep 2021 + + *) Change: optimization of client request body reading when using + HTTP/2. + + *) Bugfix: in request body filters internal API when using HTTP/2 and + buffering of the data being processed. + + Changes with nginx 1.21.2 31 Aug 2021 *) Change: now nginx rejects HTTP/1.0 requests with the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.21.2/CHANGES.ru new/nginx-1.21.3/CHANGES.ru --- old/nginx-1.21.2/CHANGES.ru 2021-08-31 17:13:53.000000000 +0200 +++ new/nginx-1.21.3/CHANGES.ru 2021-09-07 17:21:06.000000000 +0200 @@ -1,4 +1,12 @@ +?????????????????? ?? nginx 1.21.3 07.09.2021 + + *) ??????????????????: ?????????????????????? ???????????? ???????? ?????????????? ?????? ?????????????????????????? HTTP/2. + + *) ??????????????????????: ???? ???????????????????? API ?????? ?????????????????? ???????? ?????????????? ?????? + ?????????????????????????? HTTP/2 ?? ?????????????????????? ???????????????????????????? ????????????. + + ?????????????????? ?? nginx 1.21.2 31.08.2021 *) ??????????????????: ???????????? nginx ???????????????????? ????????????, ???????? ?? ?????????????? ???? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.21.2/src/core/nginx.h new/nginx-1.21.3/src/core/nginx.h --- old/nginx-1.21.2/src/core/nginx.h 2021-08-31 17:13:47.000000000 +0200 +++ new/nginx-1.21.3/src/core/nginx.h 2021-09-07 17:21:03.000000000 +0200 @@ -9,8 +9,8 @@ #define _NGINX_H_INCLUDED_ -#define nginx_version 1021002 -#define NGINX_VERSION "1.21.2" +#define nginx_version 1021003 +#define NGINX_VERSION "1.21.3" #define NGINX_VER "nginx/" NGINX_VERSION #ifdef NGX_BUILD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nginx-1.21.2/src/http/v2/ngx_http_v2.c new/nginx-1.21.3/src/http/v2/ngx_http_v2.c --- old/nginx-1.21.2/src/http/v2/ngx_http_v2.c 2021-08-31 17:13:47.000000000 +0200 +++ new/nginx-1.21.3/src/http/v2/ngx_http_v2.c 2021-09-07 17:21:03.000000000 +0200 @@ -1092,7 +1092,7 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end) { - size_t size, window; + size_t size; ngx_buf_t *buf; ngx_int_t rc; ngx_connection_t *fc; @@ -1148,32 +1148,6 @@ ngx_http_finalize_request(r, rc); } - if (rc == NGX_AGAIN && !stream->no_flow_control) { - buf = r->request_body->buf; - window = buf->end - buf->last; - - window -= h2c->state.length - size; - - if (window < stream->recv_window) { - ngx_log_error(NGX_LOG_ALERT, h2c->connection->log, 0, - "http2 negative window update"); - return ngx_http_v2_connection_error(h2c, - NGX_HTTP_V2_INTERNAL_ERROR); - } - - if (window > stream->recv_window) { - if (ngx_http_v2_send_window_update(h2c, stream->node->id, - window - stream->recv_window) - == NGX_ERROR) - { - return ngx_http_v2_connection_error(h2c, - NGX_HTTP_V2_INTERNAL_ERROR); - } - - stream->recv_window = window; - } - } - ngx_http_run_posted_requests(fc); } else if (size) { @@ -4214,8 +4188,8 @@ /* update chains */ - ngx_log_error(NGX_LOG_DEBUG, fc->log, 0, - "http2 body update chains"); + ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 body update chains"); rc = ngx_http_v2_filter_request_body(r); @@ -4255,30 +4229,22 @@ rb->rest = 0; } - if (r->request_body_no_buffering) { + if (size == 0) { break; } + } - /* pass buffer to request body filter chain */ + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 request body rest %O", rb->rest); + if (flush) { rc = ngx_http_v2_filter_request_body(r); if (rc != NGX_OK) { return rc; } - - if (rb->rest == 0) { - break; - } - - if (size == 0) { - break; - } } - ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, - "http2 request body rest %O", rb->rest); - if (rb->rest == 0 && rb->last_saved) { break; } @@ -4287,9 +4253,8 @@ clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); ngx_add_timer(fc->read, clcf->client_body_timeout); - if (r->request_body_no_buffering) { + if (!flush) { ngx_post_event(fc->read, &ngx_posted_events); - return NGX_AGAIN; } return NGX_AGAIN; @@ -4301,7 +4266,10 @@ } if (r->request_body_no_buffering) { - ngx_post_event(fc->read, &ngx_posted_events); + if (!flush) { + ngx_post_event(fc->read, &ngx_posted_events); + } + return NGX_OK; } @@ -4455,14 +4423,26 @@ return; } + if (r->stream->no_flow_control) { + return; + } + if (r->request_body->rest == 0) { return; } + if (r->request_body->busy != NULL) { + return; + } + stream = r->stream; h2c = stream->connection; buf = r->request_body->buf; + + buf->pos = buf->start; + buf->last = buf->start; + window = buf->end - buf->start; if (h2c->state.stream == stream) { @@ -4511,7 +4491,6 @@ ngx_connection_t *fc; ngx_http_v2_stream_t *stream; ngx_http_v2_connection_t *h2c; - ngx_http_core_loc_conf_t *clcf; stream = r->stream; fc = r->connection; @@ -4535,14 +4514,14 @@ return NGX_HTTP_BAD_REQUEST; } - rc = ngx_http_v2_filter_request_body(r); + rc = ngx_http_v2_process_request_body(r, NULL, 0, r->stream->in_closed, 1); - if (rc != NGX_OK) { + if (rc != NGX_OK && rc != NGX_AGAIN) { stream->skip_data = 1; return rc; } - if (r->request_body->rest == 0 && r->request_body->last_saved) { + if (rc == NGX_OK) { return NGX_OK; } @@ -4590,11 +4569,6 @@ return NGX_HTTP_INTERNAL_SERVER_ERROR; } - if (stream->recv_window == 0) { - clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); - ngx_add_timer(fc->read, clcf->client_body_timeout); - } - stream->recv_window = window; return NGX_AGAIN;