diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index 54fd0f9..49eade1 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -252,7 +252,9 @@
 #if !(WIN32)
         || err == NGX_EPIPE
 #endif
-        || err == NGX_ENOTCONN)
+        || err == NGX_ENOTCONN
+        || err == NGX_ECONNREFUSED
+        || err == NGX_EHOSTUNREACH)
     {
 
         switch (c->log_error) {
diff --git a/src/core/ngx_string.h b/src/core/ngx_string.h
index fb3e35b..158ad0f 100644
--- a/src/core/ngx_string.h
+++ b/src/core/ngx_string.h
@@ -20,11 +20,6 @@
 
 #define ngx_strncasecmp           strnicmp
 #define ngx_strcasecmp            stricmp
-#define ngx_strncmp               strncmp
-#define ngx_strcmp                strcmp
-
-#define ngx_strstr                strstr
-#define ngx_strlen                strlen
 
 #define ngx_snprintf              _snprintf
 #define ngx_vsnprintf             _vsnprintf
@@ -33,20 +28,26 @@
 
 #define ngx_strncasecmp           strncasecmp
 #define ngx_strcasecmp            strcasecmp
-#define ngx_strncmp               strncmp
-#define ngx_strcmp                strcmp
-
-#define ngx_strstr                strstr
-#define ngx_strlen                strlen
 
 #define ngx_snprintf              snprintf
 #define ngx_vsnprintf             vsnprintf
 
 #endif
 
+
+#define ngx_strncmp               strncmp
+
+/* msvc and icc compile strcmp() to inline loop */
+#define ngx_strcmp                strcmp
+
+#define ngx_strstr                strstr
+#define ngx_strlen                strlen
+
 /*
  * msvc and icc compile memset() to inline "rep stos"
  * while ZeroMemory and bzero are calls.
+ *
+ * icc can also inline mov's of a zeroed register for small blocks.
  */
 #define ngx_memzero(buf, n)       memset(buf, 0, n)
 
diff --git a/src/event/modules/ngx_iocp_module.c b/src/event/modules/ngx_iocp_module.c
index 2056fd6..cd76914 100644
--- a/src/event/modules/ngx_iocp_module.c
+++ b/src/event/modules/ngx_iocp_module.c
@@ -30,11 +30,11 @@
      offsetof(ngx_iocp_conf_t, threads),
      NULL},
 
-    {ngx_string("acceptex"),
+    {ngx_string("post_acceptex"),
      NGX_EVENT_CONF|NGX_CONF_TAKE1,
      ngx_conf_set_num_slot,
      0,
-     offsetof(ngx_iocp_conf_t, acceptex),
+     offsetof(ngx_iocp_conf_t, post_acceptex),
      NULL},
 
     {ngx_string("acceptex_read"),
@@ -266,7 +266,7 @@
                   NGX_CONF_ERROR);
 
     cf->threads = NGX_CONF_UNSET;
-    cf->acceptex = NGX_CONF_UNSET;
+    cf->post_acceptex = NGX_CONF_UNSET;
     cf->acceptex_read = NGX_CONF_UNSET;
 
     return cf;
@@ -278,7 +278,7 @@
     ngx_iocp_conf_t *cf = conf;
 
     ngx_conf_init_value(cf->threads, 0);
-    ngx_conf_init_value(cf->acceptex, 10);
+    ngx_conf_init_value(cf->post_acceptex, 10);
     ngx_conf_init_value(cf->acceptex_read, 1);
 
     return NGX_CONF_OK;
diff --git a/src/event/modules/ngx_iocp_module.h b/src/event/modules/ngx_iocp_module.h
index 7b61a46..a1c1efd 100644
--- a/src/event/modules/ngx_iocp_module.h
+++ b/src/event/modules/ngx_iocp_module.h
@@ -4,7 +4,7 @@
 
 typedef struct {
     int  threads;
-    int  acceptex;
+    int  post_acceptex;
     int  acceptex_read;
 } ngx_iocp_conf_t;
 
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index a4c3c9c..03be86a 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -264,7 +264,9 @@
             }
 
             iocpcf = ngx_event_get_conf(cycle->conf_ctx, ngx_iocp_module);
-            if (ngx_event_post_acceptex(&s[i], iocpcf->acceptex) == NGX_ERROR) {
+            if (ngx_event_post_acceptex(&s[i], iocpcf->post_acceptex)
+                                                                  == NGX_ERROR)
+            {
                 return NGX_ERROR;
             }
 
diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c
index b11ccd4..7b5e9a6 100644
--- a/src/event/ngx_event_connect.c
+++ b/src/event/ngx_event_connect.c
@@ -179,6 +179,8 @@
 
     c->fd = s;
 
+    c->log_error = pc->log_error;
+
     pc->connection = c;
 
     /*
@@ -212,10 +214,10 @@
     if (rc == -1) {
         err = ngx_socket_errno;
 
-        /* Winsock returns WSAEWOULDBLOCK */
+        /* Winsock returns WSAEWOULDBLOCK (NGX_EAGAIN) */
 
         if (err != NGX_EINPROGRESS && err != NGX_EAGAIN) {
-            ngx_log_error(NGX_LOG_ERR, pc->log, err, "connect() failed");
+            ngx_connection_error(c, err, "connect() failed");
 
             if (ngx_close_socket(s) == -1) {
                 ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno,
diff --git a/src/event/ngx_event_connect.h b/src/event/ngx_event_connect.h
index eb8b64b..1534c14 100644
--- a/src/event/ngx_event_connect.h
+++ b/src/event/ngx_event_connect.h
@@ -47,6 +47,7 @@
     ngx_log_t         *log;
 
     unsigned           cached:1;
+    unsigned           log_error:2;  /* ngx_connection_log_error_e */
 } ngx_peer_connection_t;
 
 
diff --git a/src/http/modules/ngx_http_index_handler.c b/src/http/modules/ngx_http_index_handler.c
index d5ecd41..bec9d65 100644
--- a/src/http/modules/ngx_http_index_handler.c
+++ b/src/http/modules/ngx_http_index_handler.c
@@ -98,7 +98,6 @@
 int ngx_http_index_handler(ngx_http_request_t *r)
 {
     char                       *name;
-    uint32_t                    crc;
     size_t                      len;
     ngx_fd_t                    fd;
     ngx_int_t                   rc;
@@ -108,6 +107,9 @@
     ngx_http_index_ctx_t       *ctx;
     ngx_http_core_loc_conf_t   *clcf;
     ngx_http_index_loc_conf_t  *ilcf;
+#if (NGX_HTTP_CACHE)
+    uint32_t                    crc;
+#endif
 
     if (r->uri.data[r->uri.len - 1] != '/') {
         return NGX_DECLINED;
diff --git a/src/http/modules/ngx_http_static_handler.c b/src/http/modules/ngx_http_static_handler.c
index 6925a03..7876d2a 100644
--- a/src/http/modules/ngx_http_static_handler.c
+++ b/src/http/modules/ngx_http_static_handler.c
@@ -61,7 +61,6 @@
 static ngx_int_t ngx_http_static_handler(ngx_http_request_t *r)
 {
     char                        *last;
-    uint32_t                     file_crc, redirect_crc;
     ngx_fd_t                     fd;
     ngx_int_t                    rc;
     ngx_uint_t                   level;
@@ -71,11 +70,14 @@
     ngx_hunk_t                  *h;
     ngx_chain_t                  out;
     ngx_file_info_t              fi;
-    ngx_http_cache_t            *file, *redirect;
     ngx_http_cleanup_t          *file_cleanup, *redirect_cleanup;
     ngx_http_log_ctx_t          *ctx;
     ngx_http_core_loc_conf_t    *clcf;
     ngx_http_static_loc_conf_t  *slcf;
+#if (NGX_HTTP_CACHE)
+    uint32_t                     file_crc, redirect_crc;
+    ngx_http_cache_t            *file, *redirect;
+#endif
 
     if (r->uri.data[r->uri.len - 1] == '/') {
         return NGX_DECLINED;
diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.c b/src/http/modules/proxy/ngx_http_proxy_handler.c
index 669a970..e382f05 100644
--- a/src/http/modules/proxy/ngx_http_proxy_handler.c
+++ b/src/http/modules/proxy/ngx_http_proxy_handler.c
@@ -81,6 +81,13 @@
       offsetof(ngx_http_proxy_loc_conf_t, send_timeout),
       NULL },
 
+    { ngx_string("proxy_preserve_host"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+      ngx_conf_set_flag_slot,
+      NGX_HTTP_LOC_CONF_OFFSET,
+      offsetof(ngx_http_proxy_loc_conf_t, preserve_host),
+      NULL },
+
     { ngx_string("proxy_set_x_real_ip"),
       NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
       ngx_conf_set_flag_slot,
@@ -774,6 +781,7 @@
     conf->connect_timeout = NGX_CONF_UNSET;
     conf->send_timeout = NGX_CONF_UNSET;
 
+    conf->preserve_host = NGX_CONF_UNSET;
     conf->set_x_real_ip = NGX_CONF_UNSET;
     conf->add_x_forwarded_for = NGX_CONF_UNSET;
 
@@ -816,6 +824,7 @@
                               prev->connect_timeout, 60000);
     ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 30000);
 
+    ngx_conf_merge_value(conf->preserve_host, prev->preserve_host, 0);
     ngx_conf_merge_value(conf->set_x_real_ip, prev->set_x_real_ip, 0);
     ngx_conf_merge_value(conf->add_x_forwarded_for,
                          prev->add_x_forwarded_for, 0);
@@ -1057,6 +1066,7 @@
             }
 
             if (u->port_text.data == NULL) {
+                u->default_port = 1;
                 u->port = htons(80);
                 u->port_text.len = 2;
                 u->port_text.data = "80";
@@ -1087,6 +1097,7 @@
     u->uri.len = 1;
 
     if (u->port_text.data == NULL) {
+        u->default_port = 1;
         u->port = htons(80);
         u->port_text.len = 2;
         u->port_text.data = "80";
diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.h b/src/http/modules/proxy/ngx_http_proxy_handler.h
index 44fb662..dd9cd15 100644
--- a/src/http/modules/proxy/ngx_http_proxy_handler.h
+++ b/src/http/modules/proxy/ngx_http_proxy_handler.h
@@ -41,6 +41,7 @@
     ngx_str_t                        port_text;
     ngx_str_t                       *location;
     int                              port;
+    unsigned                         default_port:1;
 } ngx_http_proxy_upstream_conf_t;
 
 
@@ -60,6 +61,7 @@
 
     ngx_flag_t                       cache;
 
+    ngx_flag_t                       preserve_host;
     ngx_flag_t                       set_x_real_ip;
     ngx_flag_t                       add_x_forwarded_for;
 
diff --git a/src/http/modules/proxy/ngx_http_proxy_upstream.c b/src/http/modules/proxy/ngx_http_proxy_upstream.c
index 67dabe9..dc55050 100644
--- a/src/http/modules/proxy/ngx_http_proxy_upstream.c
+++ b/src/http/modules/proxy/ngx_http_proxy_upstream.c
@@ -57,6 +57,7 @@
 
     p->upstream = u;
 
+    u->peer.log_error = NGX_ERROR_ERR;
     u->peer.peers = p->lcf->peers;
     u->peer.tries = p->lcf->peers->number;
 
@@ -113,21 +114,29 @@
           + r->uri.len - uc->location->len
           + 1 + r->args.len                                  /* 1 is for "?" */
           + sizeof(http_version) - 1
-          + sizeof(host_header) - 1 + uc->host_header.len + 2
-                                                          /* 2 is for "\r\n" */
           + sizeof(connection_close_header) - 1
           + 2;                          /* 2 is for "\r\n" at the header end */
 
-    if (p->lcf->set_x_real_ip) {
-                                                          /* 2 is for "\r\n" */
+
+    if (p->lcf->preserve_host) {
+        len += sizeof(host_header) - 1
+               + r->headers_in.host_name_len
+               + 1                                           /* 1 is for ":" */
+               + uc->port_text.len
+               + 2;                                       /* 2 is for "\r\n" */
+    } else {                                              /* 2 is for "\r\n" */
+        len += sizeof(host_header) - 1 + uc->host_header.len + 2;
+    }
+
+
+    if (p->lcf->set_x_real_ip) {                          /* 2 is for "\r\n" */
         len += sizeof(x_real_ip_header) - 1 + INET_ADDRSTRLEN - 1 + 2;
     }
 
 
     if (p->lcf->add_x_forwarded_for) {
         if (r->headers_in.x_forwarded_for) {
-            len += r->headers_in.x_forwarded_for->key.len
-                   + 2                                      /* 2 is ofr ": " */
+            len += sizeof(x_forwarded_for_header) - 1
                    + r->headers_in.x_forwarded_for->value.len
                    + 2                                      /* 2 is ofr ", " */
                    + INET_ADDRSTRLEN - 1
@@ -179,19 +188,33 @@
     h->last = ngx_cpymem(h->last, http_version, sizeof(http_version) - 1);
 
 
-    /* the "Host" header */
-
-    h->last = ngx_cpymem(h->last, host_header, sizeof(host_header) - 1);
-    h->last = ngx_cpymem(h->last, uc->host_header.data, uc->host_header.len);
-    *(h->last++) = CR; *(h->last++) = LF;
-
-
     /* the "Connection: close" header */
 
     h->last = ngx_cpymem(h->last, connection_close_header,
                          sizeof(connection_close_header) - 1);
 
 
+    /* the "Host" header */
+
+    h->last = ngx_cpymem(h->last, host_header, sizeof(host_header) - 1);
+
+    if (p->lcf->preserve_host) {
+        h->last = ngx_cpymem(h->last, r->headers_in.host->value.data,
+                             r->headers_in.host_name_len);
+
+        if (!uc->default_port) {
+            *(h->last++) = ':';
+            h->last = ngx_cpymem(h->last, uc->port_text.data,
+                                 uc->port_text.len);
+        }
+
+    } else {
+        h->last = ngx_cpymem(h->last, uc->host_header.data,
+                             uc->host_header.len);
+    }
+    *(h->last++) = CR; *(h->last++) = LF;
+
+
     /* the "X-Real-IP" header */
 
     if (p->lcf->set_x_real_ip) {
@@ -207,11 +230,8 @@
 
     if (p->lcf->add_x_forwarded_for) {
         if (r->headers_in.x_forwarded_for) {
-            h->last = ngx_cpymem(h->last,
-                                 r->headers_in.x_forwarded_for->key.data,
-                                 r->headers_in.x_forwarded_for->key.len);
-
-            *(h->last++) = ':'; *(h->last++) = ' ';
+            h->last = ngx_cpymem(h->last, x_forwarded_for_header,
+                                 sizeof(x_forwarded_for_header) - 1);
 
             h->last = ngx_cpymem(h->last,
                                  r->headers_in.x_forwarded_for->value.data,
@@ -416,7 +436,10 @@
 
 void ngx_http_proxy_upstream_busy_lock(ngx_http_proxy_ctx_t *p)
 {
-    int  rc, ft_type;
+    ngx_int_t  rc;
+#if (NGX_HTTP_CACHE)
+    ngx_int_t  ft_type;
+#endif
 
     if (p->busy_lock.time == 0) {
         p->busy_lock.event = p->request->connection->read;
@@ -436,6 +459,8 @@
 
     ngx_http_busy_unlock(p->lcf->busy_lock, &p->busy_lock);
 
+#if (NGX_HTTP_CACHE)
+
     if (rc == NGX_DONE) {
         ft_type = NGX_HTTP_PROXY_FT_BUSY_LOCK;
 
@@ -444,8 +469,6 @@
         ft_type = NGX_HTTP_PROXY_FT_MAX_WAITING;
     }
 
-#if (NGX_HTTP_CACHE)
-
     if (p->stale && (p->lcf->use_stale & ft_type)) {
         ngx_http_proxy_finalize_request(p,
                                         ngx_http_proxy_send_cached_response(p));
@@ -1067,13 +1090,13 @@
     ep->pool = r->pool;
     ep->log = r->connection->log;
 
+    ep->cachable = p->cachable;
+
     if (!(ep->temp_file = ngx_pcalloc(r->pool, sizeof(ngx_temp_file_t)))) {
         ngx_http_proxy_finalize_request(p, 0);
         return;
     }
 
-    ep->cachable = p->cachable;
-
     ep->temp_file->file.fd = NGX_INVALID_FILE;
     ep->temp_file->file.log = r->connection->log;
     ep->temp_file->path = p->lcf->temp_path;
diff --git a/src/os/unix/ngx_errno.h b/src/os/unix/ngx_errno.h
index 7ead602..cbfc98b 100644
--- a/src/os/unix/ngx_errno.h
+++ b/src/os/unix/ngx_errno.h
@@ -23,6 +23,8 @@
 #define NGX_ECONNRESET    ECONNRESET
 #define NGX_ENOTCONN      ENOTCONN
 #define NGX_ETIMEDOUT     ETIMEDOUT
+#define NGX_ECONNREFUSED  ECONNREFUSED
+#define NGX_EHOSTUNREACH  EHOSTUNREACH
 #define NGX_ECANCELED     ECANCELED
 #define NGX_ENOMOREFILES  0
 
diff --git a/src/os/win32/ngx_errno.h b/src/os/win32/ngx_errno.h
index a7acf53..d55b395 100644
--- a/src/os/win32/ngx_errno.h
+++ b/src/os/win32/ngx_errno.h
@@ -25,6 +25,8 @@
 #define NGX_ECONNRESET             WSAECONNRESET
 #define NGX_ENOTCONN               WSAENOTCONN
 #define NGX_ETIMEDOUT              WSAETIMEDOUT
+#define NGX_ECONNREFUSED           WSAECONNREFUSED
+#define NGX_EHOSTUNREACH           WSAEHOSTUNREACH
 #define NGX_ENOMOREFILES           ERROR_NO_MORE_FILES
 
 #define NGX_EALREADY               WSAEALREADY
