diff --git a/src/http/modules/ngx_http_log_handler.c b/src/http/modules/ngx_http_log_handler.c
index f61461c..38aa233 100644
--- a/src/http/modules/ngx_http_log_handler.c
+++ b/src/http/modules/ngx_http_log_handler.c
@@ -198,5 +198,19 @@
         return ngx_conf_errstr;
     }
 
+#if (WIN32)
+    if (ngx_file_append_mode(lcf->file.fd) == NGX_ERROR) {
+        err = ngx_errno;
+        len = ngx_snprintf(ngx_conf_errstr, sizeof(ngx_conf_errstr) - 1,
+                          ngx_file_appned_mode_n " \"%s\" failed (%d: ",
+                          lcf->file.name.data, err);
+        len += ngx_strerror_r(err, ngx_conf_errstr + len,
+                              sizeof(ngx_conf_errstr) - len - 1);
+        ngx_conf_errstr[len++] = ')';
+        ngx_conf_errstr[len++] = '\0';
+        return ngx_conf_errstr;
+    }
+#endif
+
     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 d2696fd..d32123b 100644
--- a/src/http/modules/ngx_http_range_filter.c
+++ b/src/http/modules/ngx_http_range_filter.c
@@ -252,7 +252,7 @@
                                      r->headers_out.content_length);
 
                  len += ctx->boundary_header.len + range[i].content_range.len
-                        + range[i].end - range[i].start;
+                        + (size_t) (range[i].end - range[i].start);
             }
 
             r->headers_out.content_length = len;
diff --git a/src/http/ngx_http.c b/src/http/ngx_http.c
index 5612d63..44b650e 100644
--- a/src/http/ngx_http.c
+++ b/src/http/ngx_http.c
@@ -1,13 +1,10 @@
 
 #include <ngx_config.h>
+#include <ngx_core.h>
 
-#include <ngx_string.h>
-#include <ngx_socket.h>
 #include <ngx_listen.h>
-#include <ngx_inet.h>
+
 #include <ngx_http.h>
-#include <ngx_http_config.h>
-#include <ngx_http_core_module.h>
 
 
 static void ngx_http_init_filters(ngx_pool_t *pool, ngx_module_t **modules);
diff --git a/src/http/ngx_http.h b/src/http/ngx_http.h
index 4a6e3ce..c2608a3 100644
--- a/src/http/ngx_http.h
+++ b/src/http/ngx_http.h
@@ -3,15 +3,7 @@
 
 
 #include <ngx_config.h>
-
-#include <ngx_types.h>
-#include <ngx_string.h>
-#include <ngx_table.h>
-#include <ngx_hunk.h>
-#include <ngx_files.h>
-#include <ngx_connection.h>
-#include <ngx_conf_file.h>
-
+#include <ngx_core.h>
 #include <ngx_http_request.h>
 #include <ngx_http_config.h>
 #include <ngx_http_filter.h>
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index b390c94..08a9980 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -798,8 +798,12 @@
     if (conf->listen.nelts == 0) {
         ngx_test_null(l, ngx_push_array(&conf->listen), NGX_CONF_ERROR);
         l->addr = INADDR_ANY;
+#if (WIN32)
+        l->port = 80;
+#else
         /* STUB: getuid() should be cached */
         l->port = (getuid() == 0) ? 80 : 8000;
+#endif
         l->family = AF_INET;
     }
 
diff --git a/src/http/ngx_http_event.c b/src/http/ngx_http_event.c
index d65fdde..b4a9ae9 100644
--- a/src/http/ngx_http_event.c
+++ b/src/http/ngx_http_event.c
@@ -279,6 +279,10 @@
 
         /* STUB: we need to handle such URIs */
         if (r->complex_uri || r->unusual_uri) {
+            r->request_line.len = r->request_end - r->request_start;
+            r->request_line.data = r->request_start;
+            r->request_line.data[r->request_line.len] = '\0';
+
             ngx_http_header_parse_error(r, NGX_HTTP_PARSE_INVALID_REQUEST);
             ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
             return;
diff --git a/src/http/ngx_http_header_filter.c b/src/http/ngx_http_header_filter.c
index 583b56d..8989f7c 100644
--- a/src/http/ngx_http_header_filter.c
+++ b/src/http/ngx_http_header_filter.c
@@ -93,7 +93,6 @@
     ngx_hunk_t        *h;
     ngx_chain_t       *ch;
     ngx_table_elt_t   *header;
-    ngx_http_range_t  *range;
 
     if (r->http_version < NGX_HTTP_VERSION_10) {
         return NGX_OK;
