nginx-0.3.51-RELEASE import

    *) Bugfix: the "<" symbols might disappeared some conditions in the
       SSI; the bug had appeared in 0.3.50.
diff --git a/docs/xml/nginx/changes.xml b/docs/xml/nginx/changes.xml
index 879da4f..635851b 100644
--- a/docs/xml/nginx/changes.xml
+++ b/docs/xml/nginx/changes.xml
@@ -9,6 +9,22 @@
 <title lang="en">nginx changelog</title>
 
 
+<changes ver="0.3.51" date="30.06.2006">
+
+<change type="bugfix">
+<para lang="ru">
+ÐÒÉ ÎÅËÏÔÏÒÙÈ ÕÓÌÏ×ÉÑÈ × SSI ÍÏÇ ÐÒÏÐÁÄÁÔØ ÓÉÍ×ÏÌÙ "&lt;";
+ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.3.50.
+</para>
+<para lang="en">
+the "&lt;" symbols might disappeared some conditions in the SSI;
+bug appeared in 0.3.50.
+</para>
+</change>
+
+</changes>
+
+
 <changes ver="0.3.50" date="28.06.2006">
 
 <change type="change">
@@ -48,7 +64,7 @@
 
 <change type="bugfix">
 <para lang="ru">
-ÓÉÍ×ÏÌ "\" × ÐÁÒÁÈ "\"" É "\'" × SSI ËÏÍÁÎÄÁÈ ÕÂÉÒÁÌÓÑ ÔÏÌØËÏ, ÅÓÌÉ 
+ÓÉÍ×ÏÌ "\" × ÐÁÒÁÈ "\"" É "\'" × SSI ËÏÍÁÎÄÁÈ ÕÂÉÒÁÌÓÑ, ÔÏÌØËÏ ÅÓÌÉ 
 ÔÁËÖÅ ÉÓÐÏÌØÚÏ×ÁÌÓÑ ÓÉÍ×ÏÌ "$".
 </para>
 <para lang="en">
@@ -71,7 +87,7 @@
 <change type="bugfix">
 <para lang="ru">
 ÅÓÌÉ × ÚÁÇÏÌÏ×ËÅ ÏÔ×ÅÔÁ ÂÙÌÁ ÓÔÒÏËÁ <nobr>"Content-Length: 0",</nobr>
-ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÎÅÂÕÆÅÒÉÚÉÒÏ×ÁÎÎÏÇÏ ÐÒÏËÓÉÒÏ×ÁÎÉÉ ÎÅ ÚÁËÒÙ×ÁÌÏÓØ ÓÏÅÄÉÎÅÎÉÅ
+ÔÏ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÎÅÂÕÆÅÒÉÚÉÒÏ×ÁÎÎÏÇÏ ÐÒÏËÓÉÒÏ×ÁÎÉÉ ÎÅ ÚÁËÒÙ×ÁÌÏÓØ ÓÏÅÄÉÎÅÎÉÅ
 Ó ËÌÉÅÎÔÏÍ.
 </para>
 <para lang="en">
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 834a4c8..91b6af2 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 635e6c5..b467e4d 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 @@
             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 63c2dd1..5a65a03 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 @@
         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 cf9d27b..a8c557a 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -1273,6 +1273,7 @@
                 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;
                 }
             }