diff --git a/docs/xml/nginx/changes.xml b/docs/xml/nginx/changes.xml
index 879da4f14..635851b6a 100644
--- a/docs/xml/nginx/changes.xml
+++ b/docs/xml/nginx/changes.xml
@@ -9,6 +9,22 @@
nginx changelog
+
+
+
+
+при некоторых условиях в SSI мог пропадать символы "<";
+ошибка появилась в 0.3.50.
+
+
+the "<" symbols might disappeared some conditions in the SSI;
+bug appeared in 0.3.50.
+
+
+
+
+
+
@@ -48,7 +64,7 @@ and FastCGI mode.
-символ "\" в парах "\"" и "\'" в SSI командах убирался только, если
+символ "\" в парах "\"" и "\'" в SSI командах убирался, только если
также использовался символ "$".
@@ -71,7 +87,7 @@ in the SSI after inclusion.
если в заголовке ответа была строка "Content-Length: 0",
-при использовании небуферизированного проксировании не закрывалось соединение
+то при использовании небуферизированного проксировании не закрывалось соединение
с клиентом.
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 834a4c895..91b6af221 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -8,7 +8,7 @@
#define _NGINX_H_INCLUDED_
-#define NGINX_VER "nginx/0.3.50"
+#define NGINX_VER "nginx/0.3.51"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
diff --git a/src/http/modules/ngx_http_charset_filter_module.c b/src/http/modules/ngx_http_charset_filter_module.c
index 635e6c521..b467e4dc2 100644
--- a/src/http/modules/ngx_http_charset_filter_module.c
+++ b/src/http/modules/ngx_http_charset_filter_module.c
@@ -217,7 +217,7 @@ ngx_http_charset_header_filter(ngx_http_request_t *r)
if (charset == NGX_HTTP_NO_CHARSET) {
ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
"unknown charset \"%V\" to override",
- &r->headers_out.override_charset);
+ r->headers_out.override_charset);
return ngx_http_next_header_filter(r);
}
diff --git a/src/http/modules/ngx_http_ssi_filter_module.c b/src/http/modules/ngx_http_ssi_filter_module.c
index 63c2dd138..5a65a03e8 100644
--- a/src/http/modules/ngx_http_ssi_filter_module.c
+++ b/src/http/modules/ngx_http_ssi_filter_module.c
@@ -942,7 +942,9 @@ ngx_http_ssi_parse(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ctx)
case ssi_sharp_state:
switch (ch) {
case '#':
- ctx->saved = 0;
+ if (p - ctx->pos < 4) {
+ ctx->saved = 0;
+ }
looked = 0;
state = ssi_precommand_state;
break;
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index cf9d27b70..a8c557a6e 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -1273,6 +1273,7 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
if (clf->fd == r->request_body->temp_file->file.fd) {
cl->handler(clf);
cl->handler = NULL;
+ r->request_body->temp_file->file.fd = NGX_INVALID_FILE;
break;
}
}