[-]
[+]
|
Changed |
_service
|
@@ -2,6 +2,6 @@
<service name="download_url">
<param name="host">nginx.org</param>
<param name="protocol">http</param>
- <param name="path">/download/nginx-1.13.6.tar.gz</param>
+ <param name="path">/download/nginx-1.13.7.tar.gz</param>
</service>
-<service name="download_url"><param name="host">nginx.org</param><param name="protocol">http</param><param name="path">/download/nginx-1.13.6.tar.gz</param></service><service name="download_url"><param name="host">www.openssl.org</param><param name="protocol">https</param><param name="path">/source/openssl-1.1.0f.tar.gz</param></service></services>
\ No newline at end of file
+<service name="download_url"><param name="host">nginx.org</param><param name="protocol">http</param><param name="path">/download/nginx-1.13.7.tar.gz</param></service><service name="download_url"><param name="host">www.openssl.org</param><param name="protocol">https</param><param name="path">/source/openssl-1.1.0f.tar.gz</param></service></services>
\ No newline at end of file
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/CHANGES
^
|
@@ -1,4 +1,28 @@
+Changes with nginx 1.13.7 21 Nov 2017
+
+ *) Bugfix: in the $upstream_status variable.
+
+ *) Bugfix: a segmentation fault might occur in a worker process if a
+ backend returned a "101 Switching Protocols" response to a
+ subrequest.
+
+ *) Bugfix: a segmentation fault occurred in a master process if a shared
+ memory zone size was changed during a reconfiguration and the
+ reconfiguration failed.
+
+ *) Bugfix: in the ngx_http_fastcgi_module.
+
+ *) Bugfix: nginx returned the 500 error if parameters without variables
+ were specified in the "xslt_stylesheet" directive.
+
+ *) Workaround: "gzip filter failed to use preallocated memory" alerts
+ appeared in logs when using a zlib library variant from Intel.
+
+ *) Bugfix: the "worker_shutdown_timeout" directive did not work when
+ using mail proxy and when proxying WebSocket connections.
+
+
Changes with nginx 1.13.6 10 Oct 2017
*) Bugfix: switching to the next upstream server in the stream module
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/CHANGES.ru
^
|
@@ -1,4 +1,28 @@
+Изменения в nginx 1.13.7 21.11.2017
+
+ *) Исправление: в переменной $upstream_status.
+
+ *) Исправление: в рабочем процессе мог произойти segmentation fault,
+ если бэкенд возвращал ответ "101 Switching Protocols" на подзапрос.
+
+ *) Исправление: если при переконфигурации изменялся размер зоны
+ разделяемой памяти и переконфигурация завершалась неудачно, то в
+ главном процессе происходил segmentation fault.
+
+ *) Исправление: в модуле ngx_http_fastcgi_module.
+
+ *) Исправление: nginx возвращал ошибку 500, если в директиве
+ xslt_stylesheet были заданы параметры без использования переменных.
+
+ *) Изменение: при использовании варианта библиотеки zlib от Intel в лог
+ писались сообщения "gzip filter failed to use preallocated memory".
+
+ *) Исправление: директива worker_shutdown_timeout не работала при
+ использовании почтового прокси-сервера и при проксировании
+ WebSocket-соединений.
+
+
Изменения в nginx 1.13.6 10.10.2017
*) Исправление: при использовании директивы ssl_preread в модуле stream
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/core/nginx.h
^
|
@@ -9,8 +9,8 @@
#define _NGINX_H_INCLUDED_
-#define nginx_version 1013006
-#define NGINX_VERSION "1.13.6"
+#define nginx_version 1013007
+#define NGINX_VERSION "1.13.7"
#define NGINX_VER "nginx/" NGINX_VERSION
#ifdef NGX_BUILD
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/core/ngx_conf_file.h
^
|
@@ -128,7 +128,7 @@
ngx_uint_t cmd_type;
ngx_conf_handler_pt handler;
- char *handler_conf;
+ void *handler_conf;
};
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/core/ngx_cycle.c
^
|
@@ -470,8 +470,6 @@
goto shm_zone_found;
}
- ngx_shm_free(&oshm_zone[n].shm);
-
break;
}
@@ -662,14 +660,26 @@
n = 0;
}
- if (oshm_zone[i].shm.name.len == shm_zone[n].shm.name.len
- && ngx_strncmp(oshm_zone[i].shm.name.data,
- shm_zone[n].shm.name.data,
- oshm_zone[i].shm.name.len)
- == 0)
+ if (oshm_zone[i].shm.name.len != shm_zone[n].shm.name.len) {
+ continue;
+ }
+
+ if (ngx_strncmp(oshm_zone[i].shm.name.data,
+ shm_zone[n].shm.name.data,
+ oshm_zone[i].shm.name.len)
+ != 0)
+ {
+ continue;
+ }
+
+ if (oshm_zone[i].tag == shm_zone[n].tag
+ && oshm_zone[i].shm.size == shm_zone[n].shm.size
+ && !oshm_zone[i].noreuse)
{
goto live_shm_zone;
}
+
+ break;
}
ngx_shm_free(&oshm_zone[i].shm);
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/event/ngx_event_openssl.h
^
|
@@ -22,6 +22,7 @@
#include <openssl/engine.h>
#endif
#include <openssl/evp.h>
+#include <openssl/hmac.h>
#ifndef OPENSSL_NO_OCSP
#include <openssl/ocsp.h>
#endif
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/http/modules/ngx_http_fastcgi_module.c
^
|
@@ -2646,6 +2646,7 @@
}
}
+ f->pos = p;
f->state = state;
return NGX_AGAIN;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/http/modules/ngx_http_gzip_filter_module.c
^
|
@@ -57,6 +57,7 @@
unsigned nomem:1;
unsigned gzheader:1;
unsigned buffering:1;
+ unsigned intel:1;
size_t zin;
size_t zout;
@@ -233,6 +234,8 @@
static ngx_http_output_header_filter_pt ngx_http_next_header_filter;
static ngx_http_output_body_filter_pt ngx_http_next_body_filter;
+static ngx_uint_t ngx_http_gzip_assume_intel;
+
static ngx_int_t
ngx_http_gzip_header_filter(ngx_http_request_t *r)
@@ -527,7 +530,27 @@
* *) 5920 bytes on amd64 and sparc64
*/
- ctx->allocated = 8192 + (1 << (wbits + 2)) + (1 << (memlevel + 9));
+ if (!ngx_http_gzip_assume_intel) {
+ ctx->allocated = 8192 + (1 << (wbits + 2)) + (1 << (memlevel + 9));
+
+ } else {
+ /*
+ * A zlib variant from Intel, https://github.com/jtkukunas/zlib.
+ * It can force window bits to 13 for fast compression level,
+ * on processors with SSE 4.2 it uses 64K hash instead of scaling
+ * it from the specified memory level, and also introduces
+ * 16-byte padding in one out of the two window-sized buffers.
+ */
+
+ if (conf->level == 1) {
+ wbits = ngx_max(wbits, 13);
+ }
+
+ ctx->allocated = 8192 + 16 + (1 << (wbits + 2))
+ + (1 << (ngx_max(memlevel, 8) + 8))
+ + (1 << (memlevel + 8));
+ ctx->intel = 1;
+ }
}
@@ -1003,7 +1026,7 @@
alloc = items * size;
- if (alloc % 512 != 0 && alloc < 8192) {
+ if (items == 1 && alloc % 512 != 0 && alloc < 8192) {
/*
* The zlib deflate_state allocation, it takes about 6K,
@@ -1025,9 +1048,14 @@
return p;
}
- ngx_log_error(NGX_LOG_ALERT, ctx->request->connection->log, 0,
- "gzip filter failed to use preallocated memory: %ud of %ui",
- items * size, ctx->allocated);
+ if (ctx->intel) {
+ ngx_log_error(NGX_LOG_ALERT, ctx->request->connection->log, 0,
+ "gzip filter failed to use preallocated memory: "
+ "%ud of %ui", items * size, ctx->allocated);
+
+ } else {
+ ngx_http_gzip_assume_intel = 1;
+ }
p = ngx_palloc(ctx->request->pool, items * size);
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/http/modules/ngx_http_ssi_filter_module.c
^
|
@@ -1630,8 +1630,7 @@
u_char ch, *p, **value, *data, *part_data;
size_t *size, len, prefix, part_len;
ngx_str_t var, *val;
- ngx_int_t key;
- ngx_uint_t i, n, bracket, quoted;
+ ngx_uint_t i, n, bracket, quoted, key;
ngx_array_t lengths, values;
ngx_http_variable_value_t *vv;
@@ -1883,9 +1882,8 @@
int rc, *captures;
u_char *p, errstr[NGX_MAX_CONF_ERRSTR];
size_t size;
- ngx_int_t key;
ngx_str_t *vv, name, value;
- ngx_uint_t i, n;
+ ngx_uint_t i, n, key;
ngx_http_ssi_ctx_t *ctx;
ngx_http_ssi_var_t *var;
ngx_regex_compile_t rgc;
@@ -1988,10 +1986,10 @@
ngx_http_ssi_include(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx,
ngx_str_t **params)
{
- ngx_int_t rc, key;
+ ngx_int_t rc;
ngx_str_t *uri, *file, *wait, *set, *stub, args;
ngx_buf_t *b;
- ngx_uint_t flags, i;
+ ngx_uint_t flags, i, key;
ngx_chain_t *cl, *tl, **ll, *out;
ngx_http_request_t *sr;
ngx_http_ssi_var_t *var;
@@ -2248,9 +2246,9 @@
{
u_char *p;
uintptr_t len;
- ngx_int_t key;
ngx_buf_t *b;
ngx_str_t *var, *value, *enc, text;
+ ngx_uint_t key;
ngx_chain_t *cl;
ngx_http_variable_value_t *vv;
@@ -2410,8 +2408,9 @@
ngx_http_ssi_set(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx,
ngx_str_t **params)
{
- ngx_int_t key, rc;
+ ngx_int_t rc;
ngx_str_t *name, *value, *vv;
+ ngx_uint_t key;
ngx_http_ssi_var_t *var;
ngx_http_ssi_ctx_t *mctx;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/http/modules/ngx_http_xslt_filter_module.c
^
|
@@ -686,8 +686,19 @@
* specified in xslt_stylesheet directives
*/
- p = string.data;
- last = string.data + string.len;
+ if (param[i].value.lengths) {
+ p = string.data;
+
+ } else {
+ p = ngx_pnalloc(r->pool, string.len + 1);
+ if (p == NULL) {
+ return NGX_ERROR;
+ }
+
+ ngx_memcpy(p, string.data, string.len + 1);
+ }
+
+ last = p + string.len;
while (p && *p) {
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/http/ngx_http_postpone_filter_module.c
^
|
@@ -63,7 +63,10 @@
if (r != c->data) {
if (in) {
- ngx_http_postpone_filter_add(r, in);
+ if (ngx_http_postpone_filter_add(r, in) != NGX_OK) {
+ return NGX_ERROR;
+ }
+
return NGX_OK;
}
@@ -86,7 +89,9 @@
}
if (in) {
- ngx_http_postpone_filter_add(r, in);
+ if (ngx_http_postpone_filter_add(r, in) != NGX_OK) {
+ return NGX_ERROR;
+ }
}
do {
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/http/ngx_http_request.c
^
|
@@ -2225,6 +2225,13 @@
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
"http run request: \"%V?%V\"", &r->uri, &r->args);
+ if (c->close) {
+ r->main->count++;
+ ngx_http_terminate_request(r, 0);
+ ngx_http_run_posted_requests(c);
+ return;
+ }
+
if (ev->delayed && ev->timedout) {
ev->delayed = 0;
ev->timedout = 0;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/http/ngx_http_upstream.c
^
|
@@ -3206,6 +3206,13 @@
/* TODO: prevent upgrade if not requested or not possible */
+ if (r != r->main) {
+ ngx_log_error(NGX_LOG_ERR, c->log, 0,
+ "connection upgrade in subrequest");
+ ngx_http_upstream_finalize_request(r, u, NGX_ERROR);
+ return;
+ }
+
r->keepalive = 0;
c->log->action = "proxying upgraded connection";
@@ -4111,6 +4118,7 @@
switch (ft_type) {
case NGX_HTTP_UPSTREAM_FT_TIMEOUT:
+ case NGX_HTTP_UPSTREAM_FT_HTTP_504:
status = NGX_HTTP_GATEWAY_TIME_OUT;
break;
@@ -4118,6 +4126,10 @@
status = NGX_HTTP_INTERNAL_SERVER_ERROR;
break;
+ case NGX_HTTP_UPSTREAM_FT_HTTP_503:
+ status = NGX_HTTP_SERVICE_UNAVAILABLE;
+ break;
+
case NGX_HTTP_UPSTREAM_FT_HTTP_403:
status = NGX_HTTP_FORBIDDEN;
break;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/mail/ngx_mail_proxy_module.c
^
|
@@ -882,10 +882,13 @@
c = ev->data;
s = c->data;
- if (ev->timedout) {
+ if (ev->timedout || c->close) {
c->log->action = "proxying";
- if (c == s->connection) {
+ if (c->close) {
+ ngx_log_error(NGX_LOG_INFO, c->log, 0, "shutdown timeout");
+
+ } else if (c == s->connection) {
ngx_log_error(NGX_LOG_INFO, c->log, NGX_ETIMEDOUT,
"client timed out");
c->timedout = 1;
|
[-]
[+]
|
Changed |
_service:download_url:nginx-1.13.7.tar.gz/src/stream/ngx_stream_proxy_module.c
^
|
@@ -1290,6 +1290,12 @@
s = c->data;
u = s->upstream;
+ if (c->close) {
+ ngx_log_error(NGX_LOG_INFO, c->log, 0, "shutdown timeout");
+ ngx_stream_proxy_finalize(s, NGX_STREAM_OK);
+ return;
+ }
+
c = s->connection;
pc = u->peer.connection;
|