diff --git a/src/http/modules/ngx_http_gzip_filter.c b/src/http/modules/ngx_http_gzip_filter.c
index b7b5abf..76b07bf 100644
--- a/src/http/modules/ngx_http_gzip_filter.c
+++ b/src/http/modules/ngx_http_gzip_filter.c
@@ -18,7 +18,7 @@
     int                  level;
     size_t               wbits;
     size_t               memlevel;
-    size_t               min_length;
+    ssize_t              min_length;
 } ngx_http_gzip_conf_t;
 
 
@@ -913,7 +913,7 @@
     ngx_conf_merge_size_value(conf->wbits, prev->wbits, MAX_WBITS);
     ngx_conf_merge_size_value(conf->memlevel, prev->memlevel,
                               MAX_MEM_LEVEL - 1);
-    ngx_conf_merge_size_value(conf->min_length, prev->min_length, 0);
+    ngx_conf_merge_value(conf->min_length, prev->min_length, 0);
     ngx_conf_merge_value(conf->no_buffer, prev->no_buffer, 0);
 
     return NGX_CONF_OK;
diff --git a/src/http/modules/ngx_http_range_filter.c b/src/http/modules/ngx_http_range_filter.c
index d63f4c8..ecb42ad 100644
--- a/src/http/modules/ngx_http_range_filter.c
+++ b/src/http/modules/ngx_http_range_filter.c
@@ -114,17 +114,6 @@
         || r->headers_out.status != NGX_HTTP_OK
         || r->headers_out.content_length_n == -1
         || !(r->filter & NGX_HTTP_FILTER_ALLOW_RANGES))
-
-#if 0
-        /* STUB: we currently support ranges for file hunks only */
-        || !r->sendfile
-        || r->filter & NGX_HTTP_FILTER_NEED_IN_MEMORY
-#endif
-
-#if 0
-        || (r->headers_out.content_encoding
-            && r->headers_out.content_encoding->value.len))
-#endif
     {
         return ngx_http_next_header_filter(r);
     }
@@ -506,8 +495,7 @@
         return ngx_http_next_body_filter(r, out);
     }
 
-    /* TODO: several incoming hunks of proxied responses
-             and memory hunks on platforms that have no sendfile() */
+    /* TODO: alert */
 
     return ngx_http_next_body_filter(r, in);
 }
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index b8e1a19..73a114a 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -37,6 +37,14 @@
 static ngx_conf_post_t  ngx_http_lowat_post = { ngx_http_lowat_check } ;
 
 
+static ngx_conf_enum_t  ngx_http_restrict_host_names[] = {
+    { ngx_string("off"), NGX_HTTP_RESTRICT_HOST_OFF },
+    { ngx_string("on"), NGX_HTTP_RESTRICT_HOST_ON },
+    { ngx_string("close"), NGX_HTTP_RESTRICT_HOST_CLOSE },
+    { ngx_null_string, 0 }
+};
+
+
 static ngx_command_t  ngx_http_core_commands[] = {
 
     { ngx_string("server"),
@@ -88,6 +96,13 @@
       offsetof(ngx_http_core_srv_conf_t, large_client_header),
       NULL },
 
+    { ngx_string("restrict_host_names"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
+      ngx_conf_set_enum_slot,
+      NGX_HTTP_SRV_CONF_OFFSET,
+      offsetof(ngx_http_core_srv_conf_t, restrict_host_names),
+      &ngx_http_restrict_host_names },
+
     { ngx_string("location"),
       NGX_HTTP_SRV_CONF|NGX_CONF_BLOCK|NGX_CONF_TAKE12,
       ngx_location_block,
@@ -1127,6 +1142,7 @@
     cscf->client_header_timeout = NGX_CONF_UNSET_MSEC;
     cscf->client_header_buffer_size = NGX_CONF_UNSET_SIZE;
     cscf->large_client_header = NGX_CONF_UNSET;
+    cscf->restrict_host_names = NGX_CONF_UNSET_UINT;
 
     return cscf;
 }
@@ -1182,6 +1198,8 @@
                               prev->client_header_buffer_size, 1024);
     ngx_conf_merge_value(conf->large_client_header,
                          prev->large_client_header, 1);
+    ngx_conf_merge_unsigned_value(conf->restrict_host_names,
+                                  prev->restrict_host_names, 0);
 
     return NGX_CONF_OK;
 }
diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
index 40cf40f..a8a6cf0 100644
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -58,6 +58,8 @@
     ngx_msec_t   post_accept_timeout;
     ngx_msec_t   client_header_timeout;
 
+    ngx_uint_t   restrict_host_names;
+
     ngx_flag_t   large_client_header;
 } ngx_http_core_srv_conf_t;
 
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index a8c4aee..25cc295 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -39,7 +39,8 @@
     "client %s sent too long header line, URL: %s",
     "client %s sent HTTP/1.1 request without \"Host\" header, URL: %s",
     "client %s sent invalid \"Content-Length\" header, URL: %s",
-    "client %s sent POST method without \"Content-Length\" header, URL: %s"
+    "client %s sent POST method without \"Content-Length\" header, URL: %s",
+    "client %s sent invalid \"Host\" header \"%s\", URL: %s"
 };
 
 
@@ -847,6 +848,7 @@
     size_t                     len;
     ngx_uint_t                 i;
     ngx_http_server_name_t    *name;
+    ngx_http_core_srv_conf_t  *cscf;
     ngx_http_core_loc_conf_t  *clcf;
 
     if (r->headers_in.host) {
@@ -881,6 +883,14 @@
             }
         }
 
+        if (i == r->virtual_names->nelts) {
+            cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
+
+            if (cscf->restrict_host_names != NGX_HTTP_RESTRICT_HOST_OFF) {
+                return NGX_HTTP_PARSE_INVALID_HOST;
+            }
+        }
+
     } else {
         if (r->http_version > NGX_HTTP_VERSION_10) {
             return NGX_HTTP_PARSE_NO_HOST_HEADER;
@@ -1653,7 +1663,8 @@
 static void ngx_http_client_error(ngx_http_request_t *r,
                                   int client_error, int error)
 {
-    ngx_http_log_ctx_t  *ctx;
+    ngx_http_log_ctx_t        *ctx;
+    ngx_http_core_srv_conf_t  *cscf;
 
     ctx = r->connection->log->data;
 
@@ -1668,9 +1679,26 @@
     r->connection->log->handler = NULL;
 
     if (ctx->url) {
-        ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+        if (client_error == NGX_HTTP_PARSE_INVALID_HOST) {
+            ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+                    client_header_errors[client_error - NGX_HTTP_CLIENT_ERROR],
+                    ctx->client, r->headers_in.host->value.data, ctx->url);
+
+            error = NGX_HTTP_INVALID_HOST;
+
+            cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
+
+            if (cscf->restrict_host_names == NGX_HTTP_RESTRICT_HOST_CLOSE) {
+                ngx_http_close_request(r, error);
+                ngx_http_close_connection(r->connection);
+                return;
+            }
+
+        } else {
+            ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
                     client_header_errors[client_error - NGX_HTTP_CLIENT_ERROR],
                     ctx->client, ctx->url);
+        }
 
     } else {
         if (error == NGX_HTTP_REQUEST_URI_TOO_LARGE) {
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index 716818f..8013ef8 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -31,6 +31,7 @@
 #define NGX_HTTP_PARSE_NO_HOST_HEADER      16
 #define NGX_HTTP_PARSE_INVALID_CL_HEADER   17
 #define NGX_HTTP_PARSE_POST_WO_CL_HEADER   18
+#define NGX_HTTP_PARSE_INVALID_HOST        19
 
 
 #define NGX_HTTP_OK                        200
@@ -50,6 +51,17 @@
 #define NGX_HTTP_REQUEST_URI_TOO_LARGE     414
 #define NGX_HTTP_RANGE_NOT_SATISFIABLE     416
 
+
+/* Our own HTTP codes */
+
+#define NGX_HTTP_NGX_CODES                 NGX_HTTP_INVALID_HOST
+
+/*
+ * We use the special code for the requests with invalid host name
+ * to distinguish it from 4XX in an error page redirection 
+ */
+#define NGX_HTTP_INVALID_HOST              498
+
 /*
  * HTTP does not define the code for the case when a client closed
  * the connection while we are processing its request so we introduce
@@ -58,6 +70,7 @@
  */
 #define NGX_HTTP_CLIENT_CLOSED_REQUEST     499
 
+
 #define NGX_HTTP_INTERNAL_SERVER_ERROR     500
 #define NGX_HTTP_NOT_IMPLEMENTED           501
 #define NGX_HTTP_BAD_GATEWAY               502
@@ -66,6 +79,13 @@
 
 
 typedef enum {
+    NGX_HTTP_RESTRICT_HOST_OFF = 0,
+    NGX_HTTP_RESTRICT_HOST_ON,
+    NGX_HTTP_RESTRICT_HOST_CLOSE
+} ngx_http_restrict_host_e;
+
+
+typedef enum {
     NGX_HTTP_INITING_REQUEST_STATE = 0,
     NGX_HTTP_READING_REQUEST_STATE,
     NGX_HTTP_PROCESS_REQUEST_STATE,
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
index 55f4bb3..4896346 100644
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -166,6 +166,9 @@
     ngx_null_string,             /* 415 */
     ngx_string(error_416_page),
 
+    ngx_string(error_404_page),  /* 498 */
+    ngx_null_string,             /* 499 */
+
     ngx_string(error_500_page),
     ngx_string(error_501_page),
     ngx_string(error_502_page),
@@ -229,13 +232,20 @@
         /* 3XX */
         err = error - NGX_HTTP_MOVED_PERMANENTLY;
 
-    } else if (error < NGX_HTTP_INTERNAL_SERVER_ERROR) {
+    } else if (error < NGX_HTTP_NGX_CODES) {
         /* 4XX */
         err = error - NGX_HTTP_BAD_REQUEST + 3;
 
     } else {
-        /* 5XX */
-        err = error - NGX_HTTP_INTERNAL_SERVER_ERROR + 3 + 17;
+        /* 49X, 5XX */
+        err = error - NGX_HTTP_NGX_CODES + 3 + 17;
+
+        switch (error) {
+            case NGX_HTTP_INVALID_HOST:
+                r->headers_out.status = NGX_HTTP_NOT_FOUND;
+                error = NGX_HTTP_NOT_FOUND;
+                break;
+        }
     }
 
     if (error_pages[err].len) {
