Skip to content

Commit

Permalink
update nginx to v1.21.3
Browse files Browse the repository at this point in the history
  • Loading branch information
[email protected] committed Sep 8, 2021
1 parent b471b83 commit 2162016
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 56 deletions.
9 changes: 9 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
@@ -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
Expand Down
8 changes: 8 additions & 0 deletions CHANGES.ru
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@

Изменения в nginx 1.21.3 07.09.2021

*) Изменение: оптимизация чтения тела запроса при использовании HTTP/2.

*) Исправление: во внутреннем API для обработки тела запроса при
использовании HTTP/2 и буферизации обрабатываемых данных.


Изменения в nginx 1.21.2 31.08.2021

*) Изменение: теперь nginx возвращает ошибку, если в запросе по
Expand Down
4 changes: 2 additions & 2 deletions src/core/nginx.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
82 changes: 28 additions & 54 deletions src/http/v2/ngx_http_v2.c
Original file line number Diff line number Diff line change
Expand Up @@ -1092,7 +1092,7 @@ static u_char *
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;
Expand Down Expand Up @@ -1148,32 +1148,6 @@ ngx_http_v2_state_read_data(ngx_http_v2_connection_t *h2c, u_char *pos,
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) {
Expand Down Expand Up @@ -4214,8 +4188,8 @@ ngx_http_v2_process_request_body(ngx_http_request_t *r, u_char *pos,

/* 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);

Expand Down Expand Up @@ -4255,30 +4229,22 @@ ngx_http_v2_process_request_body(ngx_http_request_t *r, u_char *pos,
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;
}
Expand All @@ -4287,9 +4253,8 @@ ngx_http_v2_process_request_body(ngx_http_request_t *r, u_char *pos,
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;
Expand All @@ -4301,7 +4266,10 @@ ngx_http_v2_process_request_body(ngx_http_request_t *r, u_char *pos,
}

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;
}

Expand Down Expand Up @@ -4455,14 +4423,26 @@ ngx_http_v2_read_client_request_body_handler(ngx_http_request_t *r)
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) {
Expand Down Expand Up @@ -4511,7 +4491,6 @@ ngx_http_v2_read_unbuffered_request_body(ngx_http_request_t *r)
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;
Expand All @@ -4535,14 +4514,14 @@ ngx_http_v2_read_unbuffered_request_body(ngx_http_request_t *r)
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;
}

Expand Down Expand Up @@ -4590,11 +4569,6 @@ ngx_http_v2_read_unbuffered_request_body(ngx_http_request_t *r)
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;
Expand Down

0 comments on commit 2162016

Please sign in to comment.