mirror of
https://github.com/nginx/nginx.git
synced 2024-12-03 04:39:00 +08:00
Merged with the default branch.
This commit is contained in:
commit
1a3bf7d593
1
.hgtags
1
.hgtags
@ -455,3 +455,4 @@ a7b46539f507e6c64efa0efda69ad60b6f4ffbce release-1.19.2
|
||||
3cbc2602325f0ac08917a4397d76f5155c34b7b1 release-1.19.3
|
||||
dc0cc425fa63a80315f6efb68697cadb6626cdf2 release-1.19.4
|
||||
8e5b068f761cd512d10c9671fbde0b568c1fd08b release-1.19.5
|
||||
f618488eb769e0ed74ef0d93cd118d2ad79ef94d release-1.19.6
|
||||
|
@ -5,6 +5,55 @@
|
||||
<change_log title="nginx">
|
||||
|
||||
|
||||
<changes ver="1.19.6" date="2020-12-15">
|
||||
|
||||
<change type="bugfix">
|
||||
<para lang="ru">
|
||||
ошибки "no live upstreams",
|
||||
если server в блоке upstream был помечен как down.
|
||||
</para>
|
||||
<para lang="en">
|
||||
"no live upstreams" errors
|
||||
if a "server" inside "upstream" block was marked as "down".
|
||||
</para>
|
||||
</change>
|
||||
|
||||
<change type="bugfix">
|
||||
<para lang="ru">
|
||||
при использовании HTTPS в рабочем процессе мог произойти segmentation fault;
|
||||
ошибка появилась в 1.19.5.
|
||||
</para>
|
||||
<para lang="en">
|
||||
a segmentation fault might occur in a worker process if HTTPS was used;
|
||||
the bug had appeared in 1.19.5.
|
||||
</para>
|
||||
</change>
|
||||
|
||||
<change type="bugfix">
|
||||
<para lang="ru">
|
||||
nginx возвращал ошибку 400 на запросы вида
|
||||
<nobr>"GET http://example.com?args HTTP/1.0"</nobr>.
|
||||
</para>
|
||||
<para lang="en">
|
||||
nginx returned the 400 response on requests like
|
||||
<nobr>"GET http://example.com?args HTTP/1.0"</nobr>.
|
||||
</para>
|
||||
</change>
|
||||
|
||||
<change type="bugfix">
|
||||
<para lang="ru">
|
||||
в модулях ngx_http_flv_module и ngx_http_mp4_module.<br/>
|
||||
Спасибо Chris Newton.
|
||||
</para>
|
||||
<para lang="en">
|
||||
in the ngx_http_flv_module and ngx_http_mp4_module.<br/>
|
||||
Thanks to Chris Newton.
|
||||
</para>
|
||||
</change>
|
||||
|
||||
</changes>
|
||||
|
||||
|
||||
<changes ver="1.19.5" date="2020-11-24">
|
||||
|
||||
<change type="feature">
|
||||
|
@ -6,7 +6,7 @@ TEMP = tmp
|
||||
|
||||
CC = cl
|
||||
OBJS = objs.msvc8
|
||||
OPENSSL = openssl-1.1.1h
|
||||
OPENSSL = openssl-1.1.1i
|
||||
ZLIB = zlib-1.2.11
|
||||
PCRE = pcre-8.44
|
||||
|
||||
|
@ -9,8 +9,8 @@
|
||||
#define _NGINX_H_INCLUDED_
|
||||
|
||||
|
||||
#define nginx_version 1019005
|
||||
#define NGINX_VERSION "1.19.5"
|
||||
#define nginx_version 1019006
|
||||
#define NGINX_VERSION "1.19.6"
|
||||
#define NGINX_VER "nginx/" NGINX_VERSION
|
||||
|
||||
#ifdef NGX_BUILD
|
||||
|
@ -2887,6 +2887,7 @@ ngx_ssl_shutdown(ngx_connection_t *c)
|
||||
|
||||
SSL_free(c->ssl->connection);
|
||||
c->ssl = NULL;
|
||||
c->recv = ngx_recv;
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
@ -2932,6 +2933,7 @@ ngx_ssl_shutdown(ngx_connection_t *c)
|
||||
if (n == 1) {
|
||||
SSL_free(c->ssl->connection);
|
||||
c->ssl = NULL;
|
||||
c->recv = ngx_recv;
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
@ -2974,6 +2976,7 @@ ngx_ssl_shutdown(ngx_connection_t *c)
|
||||
if (sslerr == SSL_ERROR_ZERO_RETURN || ERR_peek_error() == 0) {
|
||||
SSL_free(c->ssl->connection);
|
||||
c->ssl = NULL;
|
||||
c->recv = ngx_recv;
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
@ -2984,6 +2987,7 @@ ngx_ssl_shutdown(ngx_connection_t *c)
|
||||
|
||||
SSL_free(c->ssl->connection);
|
||||
c->ssl = NULL;
|
||||
c->recv = ngx_recv;
|
||||
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
@ -156,12 +156,6 @@ ngx_http_flv_handler(ngx_http_request_t *r)
|
||||
}
|
||||
|
||||
if (!of.is_file) {
|
||||
|
||||
if (ngx_close_file(of.fd) == NGX_FILE_ERROR) {
|
||||
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
|
||||
ngx_close_file_n " \"%s\" failed", path.data);
|
||||
}
|
||||
|
||||
return NGX_DECLINED;
|
||||
}
|
||||
|
||||
|
@ -521,12 +521,6 @@ ngx_http_mp4_handler(ngx_http_request_t *r)
|
||||
}
|
||||
|
||||
if (!of.is_file) {
|
||||
|
||||
if (ngx_close_file(of.fd) == NGX_FILE_ERROR) {
|
||||
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
|
||||
ngx_close_file_n " \"%s\" failed", path.data);
|
||||
}
|
||||
|
||||
return NGX_DECLINED;
|
||||
}
|
||||
|
||||
|
@ -381,6 +381,12 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
|
||||
r->uri_start = p;
|
||||
state = sw_after_slash_in_uri;
|
||||
break;
|
||||
case '?':
|
||||
r->uri_start = p;
|
||||
r->args_start = p + 1;
|
||||
r->empty_path_in_uri = 1;
|
||||
state = sw_uri;
|
||||
break;
|
||||
case ' ':
|
||||
/*
|
||||
* use single "/" from request line to preserve pointers,
|
||||
@ -447,6 +453,13 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
|
||||
r->uri_start = p;
|
||||
state = sw_after_slash_in_uri;
|
||||
break;
|
||||
case '?':
|
||||
r->port_end = p;
|
||||
r->uri_start = p;
|
||||
r->args_start = p + 1;
|
||||
r->empty_path_in_uri = 1;
|
||||
state = sw_uri;
|
||||
break;
|
||||
case ' ':
|
||||
r->port_end = p;
|
||||
/*
|
||||
@ -1289,6 +1302,10 @@ ngx_http_parse_complex_uri(ngx_http_request_t *r, ngx_uint_t merge_slashes)
|
||||
r->uri_ext = NULL;
|
||||
r->args_start = NULL;
|
||||
|
||||
if (r->empty_path_in_uri) {
|
||||
*u++ = '/';
|
||||
}
|
||||
|
||||
ch = *p++;
|
||||
|
||||
while (p <= r->uri_end) {
|
||||
|
@ -1298,9 +1298,13 @@ ngx_http_process_request_uri(ngx_http_request_t *r)
|
||||
r->uri.len = r->uri_end - r->uri_start;
|
||||
}
|
||||
|
||||
if (r->complex_uri || r->quoted_uri) {
|
||||
if (r->complex_uri || r->quoted_uri || r->empty_path_in_uri) {
|
||||
|
||||
r->uri.data = ngx_pnalloc(r->pool, r->uri.len + 1);
|
||||
if (r->empty_path_in_uri) {
|
||||
r->uri.len++;
|
||||
}
|
||||
|
||||
r->uri.data = ngx_pnalloc(r->pool, r->uri.len);
|
||||
if (r->uri.data == NULL) {
|
||||
ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
|
||||
return NGX_ERROR;
|
||||
@ -1324,7 +1328,7 @@ ngx_http_process_request_uri(ngx_http_request_t *r)
|
||||
r->unparsed_uri.len = r->uri_end - r->uri_start;
|
||||
r->unparsed_uri.data = r->uri_start;
|
||||
|
||||
r->valid_unparsed_uri = r->space_in_uri ? 0 : 1;
|
||||
r->valid_unparsed_uri = (r->space_in_uri || r->empty_path_in_uri) ? 0 : 1;
|
||||
|
||||
if (r->uri_ext) {
|
||||
if (r->args_start) {
|
||||
@ -3553,8 +3557,6 @@ ngx_http_set_lingering_close(ngx_connection_t *c)
|
||||
c->ssl->handler = ngx_http_set_lingering_close;
|
||||
return;
|
||||
}
|
||||
|
||||
c->recv = ngx_recv;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -471,6 +471,9 @@ struct ngx_http_request_s {
|
||||
/* URI with " " */
|
||||
unsigned space_in_uri:1;
|
||||
|
||||
/* URI with empty path */
|
||||
unsigned empty_path_in_uri:1;
|
||||
|
||||
unsigned invalid_header:1;
|
||||
|
||||
unsigned add_uri_to_alias:1;
|
||||
|
@ -10,8 +10,8 @@
|
||||
#include <ngx_http.h>
|
||||
|
||||
|
||||
#define ngx_http_upstream_tries(p) ((p)->number \
|
||||
+ ((p)->next ? (p)->next->number : 0))
|
||||
#define ngx_http_upstream_tries(p) ((p)->tries \
|
||||
+ ((p)->next ? (p)->next->tries : 0))
|
||||
|
||||
|
||||
static ngx_http_upstream_rr_peer_t *ngx_http_upstream_get_peer(
|
||||
@ -32,7 +32,7 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
ngx_http_upstream_srv_conf_t *us)
|
||||
{
|
||||
ngx_url_t u;
|
||||
ngx_uint_t i, j, n, w;
|
||||
ngx_uint_t i, j, n, w, t;
|
||||
ngx_http_upstream_server_t *server;
|
||||
ngx_http_upstream_rr_peer_t *peer, **peerp;
|
||||
ngx_http_upstream_rr_peers_t *peers, *backup;
|
||||
@ -44,6 +44,7 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
|
||||
n = 0;
|
||||
w = 0;
|
||||
t = 0;
|
||||
|
||||
for (i = 0; i < us->servers->nelts; i++) {
|
||||
if (server[i].backup) {
|
||||
@ -52,6 +53,10 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
|
||||
n += server[i].naddrs;
|
||||
w += server[i].naddrs * server[i].weight;
|
||||
|
||||
if (!server[i].down) {
|
||||
t += server[i].naddrs;
|
||||
}
|
||||
}
|
||||
|
||||
if (n == 0) {
|
||||
@ -75,6 +80,7 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
peers->number = n;
|
||||
peers->weighted = (w != n);
|
||||
peers->total_weight = w;
|
||||
peers->tries = t;
|
||||
peers->name = &us->host;
|
||||
|
||||
n = 0;
|
||||
@ -110,6 +116,7 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
|
||||
n = 0;
|
||||
w = 0;
|
||||
t = 0;
|
||||
|
||||
for (i = 0; i < us->servers->nelts; i++) {
|
||||
if (!server[i].backup) {
|
||||
@ -118,6 +125,10 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
|
||||
n += server[i].naddrs;
|
||||
w += server[i].naddrs * server[i].weight;
|
||||
|
||||
if (!server[i].down) {
|
||||
t += server[i].naddrs;
|
||||
}
|
||||
}
|
||||
|
||||
if (n == 0) {
|
||||
@ -139,6 +150,7 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
backup->number = n;
|
||||
backup->weighted = (w != n);
|
||||
backup->total_weight = w;
|
||||
backup->tries = t;
|
||||
backup->name = &us->host;
|
||||
|
||||
n = 0;
|
||||
@ -214,6 +226,7 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
peers->number = n;
|
||||
peers->weighted = 0;
|
||||
peers->total_weight = n;
|
||||
peers->tries = n;
|
||||
peers->name = &us->host;
|
||||
|
||||
peerp = &peers->peer;
|
||||
@ -332,6 +345,7 @@ ngx_http_upstream_create_round_robin_peer(ngx_http_request_t *r,
|
||||
|
||||
peers->single = (ur->naddrs == 1);
|
||||
peers->number = ur->naddrs;
|
||||
peers->tries = ur->naddrs;
|
||||
peers->name = &ur->host;
|
||||
|
||||
if (ur->sockaddr) {
|
||||
|
@ -68,6 +68,7 @@ struct ngx_http_upstream_rr_peers_s {
|
||||
#endif
|
||||
|
||||
ngx_uint_t total_weight;
|
||||
ngx_uint_t tries;
|
||||
|
||||
unsigned single:1;
|
||||
unsigned weighted:1;
|
||||
|
@ -739,8 +739,6 @@ ngx_http_v2_lingering_close(ngx_connection_t *c)
|
||||
c->ssl->handler = ngx_http_v2_lingering_close;
|
||||
return;
|
||||
}
|
||||
|
||||
c->recv = ngx_recv;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -10,8 +10,8 @@
|
||||
#include <ngx_stream.h>
|
||||
|
||||
|
||||
#define ngx_stream_upstream_tries(p) ((p)->number \
|
||||
+ ((p)->next ? (p)->next->number : 0))
|
||||
#define ngx_stream_upstream_tries(p) ((p)->tries \
|
||||
+ ((p)->next ? (p)->next->tries : 0))
|
||||
|
||||
|
||||
static ngx_stream_upstream_rr_peer_t *ngx_stream_upstream_get_peer(
|
||||
@ -38,7 +38,7 @@ ngx_stream_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
ngx_stream_upstream_srv_conf_t *us)
|
||||
{
|
||||
ngx_url_t u;
|
||||
ngx_uint_t i, j, n, w;
|
||||
ngx_uint_t i, j, n, w, t;
|
||||
ngx_stream_upstream_server_t *server;
|
||||
ngx_stream_upstream_rr_peer_t *peer, **peerp;
|
||||
ngx_stream_upstream_rr_peers_t *peers, *backup;
|
||||
@ -50,6 +50,7 @@ ngx_stream_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
|
||||
n = 0;
|
||||
w = 0;
|
||||
t = 0;
|
||||
|
||||
for (i = 0; i < us->servers->nelts; i++) {
|
||||
if (server[i].backup) {
|
||||
@ -58,6 +59,10 @@ ngx_stream_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
|
||||
n += server[i].naddrs;
|
||||
w += server[i].naddrs * server[i].weight;
|
||||
|
||||
if (!server[i].down) {
|
||||
t += server[i].naddrs;
|
||||
}
|
||||
}
|
||||
|
||||
if (n == 0) {
|
||||
@ -81,6 +86,7 @@ ngx_stream_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
peers->number = n;
|
||||
peers->weighted = (w != n);
|
||||
peers->total_weight = w;
|
||||
peers->tries = t;
|
||||
peers->name = &us->host;
|
||||
|
||||
n = 0;
|
||||
@ -116,6 +122,7 @@ ngx_stream_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
|
||||
n = 0;
|
||||
w = 0;
|
||||
t = 0;
|
||||
|
||||
for (i = 0; i < us->servers->nelts; i++) {
|
||||
if (!server[i].backup) {
|
||||
@ -124,6 +131,10 @@ ngx_stream_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
|
||||
n += server[i].naddrs;
|
||||
w += server[i].naddrs * server[i].weight;
|
||||
|
||||
if (!server[i].down) {
|
||||
t += server[i].naddrs;
|
||||
}
|
||||
}
|
||||
|
||||
if (n == 0) {
|
||||
@ -145,6 +156,7 @@ ngx_stream_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
backup->number = n;
|
||||
backup->weighted = (w != n);
|
||||
backup->total_weight = w;
|
||||
backup->tries = t;
|
||||
backup->name = &us->host;
|
||||
|
||||
n = 0;
|
||||
@ -220,6 +232,7 @@ ngx_stream_upstream_init_round_robin(ngx_conf_t *cf,
|
||||
peers->number = n;
|
||||
peers->weighted = 0;
|
||||
peers->total_weight = n;
|
||||
peers->tries = n;
|
||||
peers->name = &us->host;
|
||||
|
||||
peerp = &peers->peer;
|
||||
@ -342,6 +355,7 @@ ngx_stream_upstream_create_round_robin_peer(ngx_stream_session_t *s,
|
||||
|
||||
peers->single = (ur->naddrs == 1);
|
||||
peers->number = ur->naddrs;
|
||||
peers->tries = ur->naddrs;
|
||||
peers->name = &ur->host;
|
||||
|
||||
if (ur->sockaddr) {
|
||||
|
@ -66,6 +66,7 @@ struct ngx_stream_upstream_rr_peers_s {
|
||||
#endif
|
||||
|
||||
ngx_uint_t total_weight;
|
||||
ngx_uint_t tries;
|
||||
|
||||
unsigned single:1;
|
||||
unsigned weighted:1;
|
||||
|
Loading…
Reference in New Issue
Block a user