nginx-0.1.5-RELEASE import

    *) Bugfix: on Solaris and Linux there may be too many "recvmsg()
       returned not enough data" alerts.

    *) Bugfix: there were the "writev() failed (22: Invalid argument)"
       errors on Solaris in proxy mode without sendfile. On other platforms
       that do not support sendfile at all the process got caught in an
       endless loop.

    *) Bugfix: segmentation fault on Solaris in proxy mode and using
       sendfile.

    *) Bugfix: segmentation fault on Solaris.

    *) Bugfix: on-line upgrade did not work on Linux.

    *) Bugfix: the ngx_http_autoindex_module module did not escape the
       spaces, the quotes, and the percent signs in the directory listing.

    *) Change: the decrease of the copy operations.

    *) Feature: the userid_p3p directive.
diff --git a/src/event/modules/ngx_aio_module.c b/src/event/modules/ngx_aio_module.c
index 483d675..398c571 100644
--- a/src/event/modules/ngx_aio_module.c
+++ b/src/event/modules/ngx_aio_module.c
@@ -110,6 +110,10 @@
         return NGX_OK;
     }
 
+    if (flags & NGX_CLOSE_EVENT) {
+        return NGX_OK;
+    }
+
     rc = aio_cancel(c->fd, NULL);
 
     ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "aio_cancel: %d", rc);
diff --git a/src/event/modules/ngx_devpoll_module.c b/src/event/modules/ngx_devpoll_module.c
index ea1d19b..663e2bf 100644
--- a/src/event/modules/ngx_devpoll_module.c
+++ b/src/event/modules/ngx_devpoll_module.c
@@ -208,7 +208,7 @@
 #if (NGX_DEBUG)
     c = ev->data;
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                   "devpoll add event: fd:%d ev:%04X", c->fd, event);
+                   "devpoll add event: fd:%d ev:%04Xd", c->fd, event);
 #endif
 
     ev->active = 1;
@@ -229,7 +229,7 @@
 #endif
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                   "devpoll del event: fd:%d ev:%04X", c->fd, event);
+                   "devpoll del event: fd:%d ev:%04Xd", c->fd, event);
 
     if (ngx_devpoll_set_event(ev, POLLREMOVE, flags) == NGX_ERROR) {
         return NGX_ERROR;
@@ -268,7 +268,7 @@
     c = ev->data;
 
     ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                   "devpoll fd:%d ev:%04X fl:%04X", c->fd, event, flags);
+                   "devpoll fd:%d ev:%04Xd fl:%04Xd", c->fd, event, flags);
 
     if (nchanges >= max_changes) {
         ngx_log_error(NGX_LOG_WARN, ev->log, 0,
@@ -453,13 +453,13 @@
         }
 
         ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                       "devpoll: fd:%d, ev:%04X, rev:%04X",
+                       "devpoll: fd:%d, ev:%04Xd, rev:%04Xd",
                        event_list[i].fd,
                        event_list[i].events, event_list[i].revents);
 
         if (event_list[i].revents & (POLLERR|POLLHUP|POLLNVAL)) {
             ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
-                          "ioctl(DP_POLL) error fd:%d ev:%04X rev:%04X",
+                          "ioctl(DP_POLL) error fd:%d ev:%04Xd rev:%04Xd",
                           event_list[i].fd,
                           event_list[i].events, event_list[i].revents);
         }
@@ -468,7 +468,7 @@
         {
             ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
                           "strange ioctl(DP_POLL) events "
-                          "fd:%d ev:%04X rev:%04X",
+                          "fd:%d ev:%04Xd rev:%04Xd",
                           event_list[i].fd,
                           event_list[i].events, event_list[i].revents);
         }
diff --git a/src/event/modules/ngx_epoll_module.c b/src/event/modules/ngx_epoll_module.c
index 45791e9..8096932 100644
--- a/src/event/modules/ngx_epoll_module.c
+++ b/src/event/modules/ngx_epoll_module.c
@@ -232,7 +232,7 @@
     ee.data.ptr = (void *) ((uintptr_t) c | ev->instance);
 
     ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                   "epoll add event: fd:%d op:%d ev:%08X",
+                   "epoll add event: fd:%d op:%d ev:%08XD",
                    c->fd, op, ee.events);
 
     if (epoll_ctl(ep, op, c->fd, &ee) == -1) {
@@ -291,7 +291,7 @@
     }
 
     ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                   "epoll del event: fd:%d op:%d ev:%08X",
+                   "epoll del event: fd:%d op:%d ev:%08XD",
                    c->fd, op, ee.events);
 
     if (epoll_ctl(ep, op, c->fd, &ee) == -1) {
@@ -314,7 +314,7 @@
     ee.data.ptr = (void *) ((uintptr_t) c | c->read->instance);
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
-                   "epoll add connection: fd:%d ev:%08X", c->fd, ee.events);
+                   "epoll add connection: fd:%d ev:%08XD", c->fd, ee.events);
 
     if (epoll_ctl(ep, EPOLL_CTL_ADD, c->fd, &ee) == -1) {
         ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
@@ -513,7 +513,7 @@
              */
 
             ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                           "epoll: stale event " PTR_FMT, c);
+                           "epoll: stale event %p", c);
             continue;
         }
 
@@ -522,18 +522,18 @@
 #endif
 
         ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0,
-                       "epoll: fd:%d ev:%04X d:" PTR_FMT,
+                       "epoll: fd:%d ev:%04XD d:%p",
                        c->fd, event_list[i].events, event_list[i].data);
 
         if (event_list[i].events & (EPOLLERR|EPOLLHUP)) {
             ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0,
-                           "epoll_wait() error on fd:%d ev:%04X",
+                           "epoll_wait() error on fd:%d ev:%04XD",
                            c->fd, event_list[i].events);
         }
 
         if (event_list[i].events & ~(EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP)) {
             ngx_log_error(NGX_LOG_ALERT, log, 0,
-                          "strange epoll_wait() events fd:%d ev:%04X",
+                          "strange epoll_wait() events fd:%d ev:%04XD",
                           c->fd, event_list[i].events);
         }
 
diff --git a/src/event/modules/ngx_iocp_module.c b/src/event/modules/ngx_iocp_module.c
index 1d15c93..4a3cd9f 100644
--- a/src/event/modules/ngx_iocp_module.c
+++ b/src/event/modules/ngx_iocp_module.c
@@ -82,7 +82,7 @@
     ngx_overlapped_wsarecv,
     NULL,
     NULL,
-    ngx_wsasend_chain,
+    ngx_overlapped_wsasend_chain,
     0
 };
 
@@ -138,7 +138,7 @@
     c->write->active = 1;
 
     ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                   "iocp add: fd:%d k:%d ov:" PTR_FMT, c->fd, key, &ev->ovlp);
+                   "iocp add: fd:%d k:%d ov:%p", c->fd, key, &ev->ovlp);
 
     if (CreateIoCompletionPort((HANDLE) c->fd, iocp, key, 0) == NULL) {
         ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
@@ -152,10 +152,16 @@
 
 static ngx_int_t ngx_iocp_del_connection(ngx_connection_t *c, u_int flags)
 {
+#if 0
+    if (flags & NGX_CLOSE_EVENT) {
+        return NGX_OK;
+    }
+
     if (CancelIo((HANDLE) c->fd) == 0) {
         ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno, "CancelIo() failed");
         return NGX_ERROR;
     }
+#endif
 
     return NGX_OK;
 }
@@ -195,12 +201,19 @@
     ngx_time_update(tv.tv_sec);
 
     ngx_log_debug4(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                   "iocp: %d b:%d k:%d ov:" PTR_FMT, rc, bytes, key, ovlp);
+                   "iocp: %d b:%d k:%d ov:%p", rc, bytes, key, ovlp);
 
     delta = ngx_elapsed_msec;
     ngx_elapsed_msec = (ngx_epoch_msec_t) tv.tv_sec * 1000
                                           + tv.tv_usec / 1000 - ngx_start_msec;
 
+    if (timer != INFINITE) {
+        delta = ngx_elapsed_msec - delta;
+
+        ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+                       "iocp timer: %d, delta: %d", timer, (int) delta);
+    }
+
     if (err) {
         if (ovlp == NULL) {
             if (err != WAIT_TIMEOUT) {
@@ -210,49 +223,76 @@
                 return NGX_ERROR;
             }
 
-        } else {
-            ovlp->error = err;
-        }
-    }
-
-    if (timer != INFINITE) {
-        delta = ngx_elapsed_msec - delta;
-
-        ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                       "iocp timer: %d, delta: %d", timer, (int) delta);
-    }
-
-    if (ovlp) {
-        ev = ovlp->event;
-
-        ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                       "iocp event:" PTR_FMT, ev);
-
-        switch (key) {
-
-        case NGX_IOCP_ACCEPT:
-            if (bytes) {
-                ev->ready = 1;
+            if (timer != INFINITE && delta) {
+                ngx_event_expire_timers((ngx_msec_t) delta);
             }
-            break;
 
-        case NGX_IOCP_IO:
-            ev->complete = 1;
-            ev->ready = 1;
-            break;
-
-        case NGX_IOCP_CONNECT:
-            ev->ready = 1;
+            return NGX_OK;
         }
 
-        ev->available = bytes;
-
-        ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                       "iocp event handler: " PTR_FMT, ev->event_handler);
-
-        ev->event_handler(ev);
+        ovlp->error = err;
     }
 
+    if (ovlp == NULL) {
+        ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
+                      "GetQueuedCompletionStatus() returned no operation");
+        return NGX_ERROR;
+    }
+
+
+    ev = ovlp->event;
+
+    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, err, "iocp event:%p", ev);
+
+
+    if (err == ERROR_NETNAME_DELETED /* the socket was closed */
+        || err == ERROR_OPERATION_ABORTED /* the operation was canceled */)
+    {
+
+        /*
+         * the WSA_OPERATION_ABORTED completion notification
+         * for a file descriptor that was closed
+         */
+
+        ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, err,
+                       "iocp: aborted event %p", ev); 
+
+        if (timer != INFINITE && delta) {
+            ngx_event_expire_timers((ngx_msec_t) delta);
+        }
+
+        return NGX_OK;
+    }
+
+    if (err) {
+        ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
+                      "GetQueuedCompletionStatus() returned operation error");
+    }
+
+    switch (key) {
+
+    case NGX_IOCP_ACCEPT:
+        if (bytes) {
+            ev->ready = 1;
+        }
+        break;
+
+    case NGX_IOCP_IO:
+        ev->complete = 1;
+        ev->ready = 1;
+        break;
+
+    case NGX_IOCP_CONNECT:
+        ev->ready = 1;
+    }
+
+    ev->available = bytes;
+
+    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+                   "iocp event handler: %p", ev->event_handler);
+
+    ev->event_handler(ev);
+
     if (timer != INFINITE && delta) {
         ngx_event_expire_timers((ngx_msec_t) delta);
     }
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index e6bebb5..e0fae6f 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -367,7 +367,7 @@
     c = ev->data;
 
     ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0,
-                   "kevent set event: %d: ft:%d fl:%04X",
+                   "kevent set event: %d: ft:%d fl:%04Xd",
                    c->fd, filter, flags);
 
     if (nchanges >= max_changes) {
@@ -599,7 +599,7 @@
                  */
 
                 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                               "kevent: stale event " PTR_FMT, ev);
+                               "kevent: stale event %p", ev);
                 continue;
             }
 
@@ -776,9 +776,8 @@
 {
     ngx_log_debug6(NGX_LOG_DEBUG_EVENT, log, 0,
                    (kev->ident > 0x8000000 && kev->ident != (unsigned) -1) ?
-                    "kevent: " PTR_FMT ": ft:%d fl:%04X ff:%08X d:%d ud:"
-                                                                       PTR_FMT:
-                    "kevent: %d: ft:%d fl:%04X ff:%08X d:%d ud:" PTR_FMT,
+                    "kevent: %p: ft:%d fl:%04Xd ff:%08Xd d:%d ud:%p":
+                    "kevent: %d: ft:%d fl:%04Xd ff:%08Xd d:%d ud:%p",
                     kev->ident, kev->filter,
                     kev->flags, kev->fflags,
                     kev->data, kev->udata);
diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c
index bf78e8f..18f72c3 100644
--- a/src/event/modules/ngx_poll_module.c
+++ b/src/event/modules/ngx_poll_module.c
@@ -302,7 +302,7 @@
     if (cycle->log->log_level & NGX_LOG_DEBUG_ALL) {
         for (i = 0; i < nevents; i++) {
             ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                           "poll: %d: fd:%d ev:%04X",
+                           "poll: %d: fd:%d ev:%04Xd",
                            i, event_list[i].fd, event_list[i].events);
         }
     }
@@ -380,13 +380,13 @@
 
 #if 0
         ngx_log_debug4(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                       "poll: %d: fd:%d ev:%04X rev:%04X",
+                       "poll: %d: fd:%d ev:%04Xd rev:%04Xd",
                        i, event_list[i].fd,
                        event_list[i].events, event_list[i].revents);
 #else
         if (event_list[i].revents) {
             ngx_log_debug4(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                           "poll: %d: fd:%d ev:%04X rev:%04X",
+                           "poll: %d: fd:%d ev:%04Xd rev:%04Xd",
                            i, event_list[i].fd,
                            event_list[i].events, event_list[i].revents);
         }
@@ -394,7 +394,7 @@
 
         if (event_list[i].revents & POLLNVAL) {
             ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
-                          "poll() error fd:%d ev:%04X rev:%04X",
+                          "poll() error fd:%d ev:%04Xd rev:%04Xd",
                           event_list[i].fd,
                           event_list[i].events, event_list[i].revents);
         }
@@ -402,7 +402,7 @@
         if (event_list[i].revents & ~(POLLIN|POLLOUT|POLLERR|POLLHUP|POLLNVAL))
         {
             ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
-                          "strange poll() events fd:%d ev:%04X rev:%04X",
+                          "strange poll() events fd:%d ev:%04Xd rev:%04Xd",
                           event_list[i].fd,
                           event_list[i].events, event_list[i].revents);
         }
@@ -529,7 +529,7 @@
     for ( ;; ) {
 
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                      "accept event " PTR_FMT, ev);
+                      "accept event %p", ev);
 
         if (ev == NULL) {
             break;
diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c
index 4f2f480..3c0ea95 100644
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -383,7 +383,7 @@
     } else {
         err = 0;
         ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                       "rtsig signo:%d fd:%d band:%X",
+                       "rtsig signo:%d fd:%d band:%04Xd",
                        signo, si.si_fd, si.si_band);
     }
 
@@ -434,7 +434,7 @@
             ngx_accept_mutex_unlock();
 
             ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                           "rtsig: stale event " PTR_FMT, c);
+                           "rtsig: stale event %p", c);
 
             return NGX_OK;
         }
diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c
index 06ca4b3..14e6f81 100644
--- a/src/event/modules/ngx_select_module.c
+++ b/src/event/modules/ngx_select_module.c
@@ -23,7 +23,7 @@
 static fd_set         work_read_fd_set;
 static fd_set         work_write_fd_set;
 
-#if (WIN32)
+#if (NGX_WIN32)
 static int            max_read;
 static int            max_write;
 #else
@@ -114,7 +114,7 @@
 
     ngx_event_flags = NGX_USE_LEVEL_EVENT|NGX_USE_ONESHOT_EVENT;
 
-#if (WIN32)
+#if (NGX_WIN32)
     max_read = max_write = 0;
 #else
     max_fd = -1;
@@ -150,7 +150,7 @@
         return NGX_OK;
     }
 
-#if (WIN32)
+#if (NGX_WIN32)
 
     if ((event == NGX_READ_EVENT) && (max_read >= FD_SETSIZE)
         || (event == NGX_WRITE_EVENT) && (max_write >= FD_SETSIZE))
@@ -211,7 +211,7 @@
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
                    "select del event fd:%d ev:%d", c->fd, event);
 
-#if (WIN32)
+#if (NGX_WIN32)
 
     if (event == NGX_READ_EVENT) {
         FD_CLR(c->fd, &master_read_fd_set);
@@ -280,7 +280,7 @@
 
     expire = 1;
 
-#if !(WIN32)
+#if !(NGX_WIN32)
 
     if (ngx_accept_mutex) {
         if (ngx_accept_disabled > 0) {
@@ -324,7 +324,7 @@
                            "select event: fd:%d wr:%d", c->fd, ev->write);
         }
 
-#if !(WIN32)
+#if !(NGX_WIN32)
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                        "max_fd: %d", max_fd);
 #endif
@@ -348,9 +348,9 @@
     work_write_fd_set = master_write_fd_set;
 
     ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                   "select read fd_set: %08X", *(int *) &work_read_fd_set);
+                   "select read fd_set: %08Xd", *(int *) &work_read_fd_set);
 
-#if (WIN32)
+#if (NGX_WIN32)
     ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp);
 #else
     ready = select(max_fd + 1, &work_read_fd_set, &work_write_fd_set, NULL, tp);
@@ -433,7 +433,7 @@
                    "select ready %d", ready);
 
     if (err) {
-#if (WIN32)
+#if (NGX_WIN32)
         ngx_log_error(NGX_LOG_ALERT, cycle->log, err, "select() failed");
 #else
         ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT,
@@ -534,7 +534,7 @@
     for ( ;; ) {
 
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                      "accept event " PTR_FMT, ev);
+                      "accept event %p", ev);
 
         if (ev == NULL) {
             break;
@@ -597,7 +597,7 @@
 
     /* disable warning: the default FD_SETSIZE is 1024U in FreeBSD 5.x */
 
-#if !(WIN32)
+#if !(NGX_WIN32)
     if ((unsigned) ecf->connections > FD_SETSIZE) {
         ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
                       "the maximum number of files "
@@ -606,7 +606,7 @@
     }
 #endif
 
-#if (NGX_THREADS)
+#if (NGX_THREADS) && !(NGX_WIN32)
     ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
                   "select() is not supported in the threaded mode");
     return NGX_CONF_ERROR;
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index f006c6b..563cf42 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -191,7 +191,7 @@
 
 static ngx_int_t ngx_event_module_init(ngx_cycle_t *cycle)
 {
-#if !(WIN32)
+#if !(NGX_WIN32)
 
     size_t             size;
     char              *shared;
@@ -240,7 +240,7 @@
 #endif
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                   "counter: " PTR_FMT ", %d",
+                   "counter: %p, %d",
                    ngx_connection_counter, *ngx_connection_counter);
 
 #endif
@@ -259,7 +259,7 @@
     ngx_core_conf_t     *ccf;
     ngx_event_conf_t    *ecf;
     ngx_event_module_t  *module;
-#if (WIN32)
+#if (NGX_WIN32)
     ngx_iocp_conf_t     *iocpcf;
 #endif
 
@@ -352,7 +352,7 @@
 
         fd = s[i].fd;
 
-#if (WIN32)
+#if (NGX_WIN32)
         /*
          * Winsock assignes a socket number divisible by 4
          * so to find a connection we divide a socket number by 4.
@@ -412,10 +412,10 @@
             }
         }
 
-#if (WIN32)
+#if (NGX_WIN32)
 
         if (ngx_event_flags & NGX_USE_IOCP_EVENT) {
-            rev->event_handler = &ngx_event_acceptex;
+            rev->event_handler = ngx_event_acceptex;
 
             if (ngx_add_event(rev, 0, NGX_IOCP_ACCEPT) == NGX_ERROR) {
                 return NGX_ERROR;
@@ -429,7 +429,8 @@
             }
 
         } else {
-            rev->event_handler = &ngx_event_accept;
+            rev->event_handler = ngx_event_accept;
+
             if (ngx_add_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) {
                 return NGX_ERROR;
             }
@@ -437,7 +438,7 @@
 
 #else
 
-        rev->event_handler = &ngx_event_accept;
+        rev->event_handler = ngx_event_accept;
 
         if (ngx_accept_mutex) {
             continue;
@@ -580,7 +581,7 @@
     ecf->connections = ngx_atoi(value[1].data, value[1].len);
     if (ecf->connections == (ngx_uint_t) NGX_ERROR) {
         ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
-                           "invalid number \"%s\"", value[1].data);
+                           "invalid number \"%V\"", &value[1]);
 
         return NGX_CONF_ERROR;
     }
@@ -631,12 +632,12 @@
                 {
                     ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                         "when the server runs without a master process "
-                        "the \"%s\" event type must be the same as "
+                        "the \"%V\" event type must be the same as "
                         "in previous configuration - \"%s\" "
                         "and it can not be changed on the fly, "
                         "to change it you need to stop server "
                         "and start it again",
-                        value[1].data, old_ecf->name);
+                        &value[1], old_ecf->name);
 
                     return NGX_CONF_ERROR;
                 }
@@ -647,7 +648,7 @@
     }
 
     ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
-                       "invalid event type \"%s\"", value[1].data);
+                       "invalid event type \"%V\"", &value[1]);
 
     return NGX_CONF_ERROR;
 }
@@ -681,7 +682,7 @@
 
     if (h == NULL || h->h_addr_list[0] == NULL) {
         ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
-                           "host %s not found", value[1].data);
+                           "host \"%s\" not found", value[1].data);
         return NGX_CONF_ERROR;
     }
 
@@ -755,7 +756,7 @@
 
 #elif (HAVE_SELECT)
 
-#if (WIN32)
+#if (NGX_WIN32)
     ngx_conf_init_unsigned_value(ecf->connections, DEFAULT_CONNECTIONS);
 #else
     ngx_conf_init_unsigned_value(ecf->connections,
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h
index f341a14..191b492 100644
--- a/src/event/ngx_event.h
+++ b/src/event/ngx_event.h
@@ -81,7 +81,7 @@
     unsigned         posted_ready:1;
 #endif
 
-#if (WIN32)
+#if (NGX_WIN32)
     /* setsockopt(SO_UPDATE_ACCEPT_CONTEXT) was succesfull */
     unsigned         accept_context_updated:1;
 #endif
@@ -473,7 +473,7 @@
 ngx_int_t ngx_enable_accept_events(ngx_cycle_t *cycle);
 
 
-#if (WIN32)
+#if (NGX_WIN32)
 void ngx_event_acceptex(ngx_event_t *ev);
 int ngx_event_post_acceptex(ngx_listening_t *ls, int n);
 #endif
@@ -490,7 +490,7 @@
 #include <ngx_event_posted.h>
 #include <ngx_event_busy_lock.h>
 
-#if (WIN32)
+#if (NGX_WIN32)
 #include <ngx_iocp_module.h>
 #endif
 
diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c
index 9ae5ccd..085a65e 100644
--- a/src/event/ngx_event_accept.c
+++ b/src/event/ngx_event_accept.c
@@ -11,13 +11,13 @@
 
 
 typedef struct {
-    int      flag;
-    u_char  *name;
+    int         flag;
+    ngx_str_t  *name;
 } ngx_accept_log_ctx_t;
 
 
 static void ngx_close_accepted_socket(ngx_socket_t s, ngx_log_t *log);
-static size_t ngx_accept_log_error(void *data, char *buf, size_t len);
+static u_char *ngx_accept_log_error(void *data, u_char *buf, size_t len);
 
 
 void ngx_event_accept(ngx_event_t *ev)
@@ -46,8 +46,8 @@
     ls = ev->data;
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                   "accept on %s, ready: %d",
-                   ls->listening->addr_text.data, ev->available);
+                   "accept on %V, ready: %d",
+                   &ls->listening->addr_text, ev->available);
 
     ev->ready = 0;
     accepted = 0;
@@ -88,7 +88,7 @@
 
         /* -1 disables the connection number logging */
         ctx->flag = -1;
-        ctx->name = ls->listening->addr_text.data;
+        ctx->name = &ls->listening->addr_text;
 
         log->data = ctx;
         log->handler = ngx_accept_log_error;
@@ -114,8 +114,7 @@
             }
 
             ngx_log_error(NGX_LOG_ALERT, ev->log, err,
-                          "accept() on %s failed",
-                          ls->listening->addr_text.data);
+                          "accept() on %V failed", &ls->listening->addr_text);
 
             if (err == NGX_ECONNABORTED) {
                 if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {
@@ -144,10 +143,10 @@
         if ((ngx_uint_t) s >= ecf->connections) {
 
             ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
-                          "accept() on %s returned socket #%d while "
+                          "accept() on %V returned socket #%d while "
                           "only %d connections was configured, "
                           "closing the connection",
-                          ls->listening->addr_text.data, s, ecf->connections);
+                          &ls->listening->addr_text, s, ecf->connections);
 
             ngx_close_accepted_socket(s, log);
             ngx_destroy_pool(pool);
@@ -185,7 +184,7 @@
             }
         }
 
-#if (WIN32)
+#if (NGX_WIN32)
         /*
          * Winsock assignes a socket number divisible by 4
          * so to find a connection we divide a socket number by 4.
@@ -193,9 +192,9 @@
 
         if (s % 4) {
             ngx_log_error(NGX_LOG_EMERG, ev->log, 0,
-                          "accept() on %s returned socket #%d, "
+                          "accept() on %V returned socket #%d, "
                           "not divisible by 4",
-                          ls->listening->addr_text.data, s);
+                          &ls->listening->addr_text, s);
             exit(1);
         }
 
@@ -467,9 +466,9 @@
 }
 
 
-static size_t ngx_accept_log_error(void *data, char *buf, size_t len)
+static u_char *ngx_accept_log_error(void *data, u_char *buf, size_t len)
 {
     ngx_accept_log_ctx_t  *ctx = data;
 
-    return ngx_snprintf(buf, len, " while accept() on %s", ctx->name);
+    return ngx_snprintf(buf, len, " while accept() on %V", ctx->name);
 }
diff --git a/src/event/ngx_event_acceptex.c b/src/event/ngx_event_acceptex.c
index 9877b3b..486636b 100644
--- a/src/event/ngx_event_acceptex.c
+++ b/src/event/ngx_event_acceptex.c
@@ -14,22 +14,24 @@
 {
     ngx_connection_t  *c;
 
-    c = (ngx_connection_t *) rev->data;
+    c = rev->data;
+
+    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "AcceptEx: %d", c->fd);
 
     if (rev->ovlp.error) {
         ngx_log_error(NGX_LOG_CRIT, c->log, rev->ovlp.error,
-                      "AcceptEx() %s failed", c->listening->addr_text.data);
+                      "AcceptEx() %V failed", &c->listening->addr_text);
         return;
     }
 
     /* SO_UPDATE_ACCEPT_CONTEXT is required for shutdown() to work */
 
     if (setsockopt(c->fd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
-                   (char *)&c->listening->fd, sizeof(ngx_socket_t)) == -1)
+                   (char *) &c->listening->fd, sizeof(ngx_socket_t)) == -1)
     {
         ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno,
-                      "setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed for %s",
-                      c->addr_text.data);
+                      "setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed for %V",
+                      &c->addr_text);
     } else {
         c->accept_context_updated = 1;
     }
@@ -49,6 +51,23 @@
         c->buffer = NULL;
     }
 
+    if (c->listening->addr_ntop) {
+        c->addr_text.data = ngx_palloc(c->pool,
+                                       c->listening->addr_text_max_len);
+        if (c->addr_text.data == NULL) {
+            /* TODO: close socket */
+            return;
+        }
+
+        c->addr_text.len = ngx_sock_ntop(c->listening->family, c->sockaddr,
+                                         c->addr_text.data,
+                                         c->listening->addr_text_max_len);
+        if (c->addr_text.len == 0) {
+            /* TODO: close socket */
+            return;
+        }
+    }
+
     ngx_event_post_acceptex(c->listening, 1);
 
     c->number = ngx_atomic_inc(ngx_connection_counter);
@@ -73,10 +92,10 @@
 
         /* TODO: look up reused sockets */
 
-        s = ngx_socket(ls->family, ls->type, ls->protocol, ls->flags);
+        s = ngx_socket(ls->family, ls->type, ls->protocol);
 
-        ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ls->log, 0,
-                       ngx_socket_n " s:%d fl:%d", s, ls->flags);
+        ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ls->log, 0,
+                       ngx_socket_n " s:%d", s);
 
         if (s == -1) {
             ngx_log_error(NGX_LOG_ALERT, ls->log, ngx_socket_errno,
@@ -107,49 +126,60 @@
         ngx_memzero(rev, sizeof(ngx_event_t));
         ngx_memzero(wev, sizeof(ngx_event_t));
 
-        rev->index = wev->index = NGX_INVALID_INDEX;
+        c->listening = ls;
+
+        rev->index = NGX_INVALID_INDEX;
+        wev->index = NGX_INVALID_INDEX;
 
         rev->ovlp.event = rev;
         wev->ovlp.event = wev;
+        rev->event_handler = ngx_event_acceptex;
 
-        rev->data = wev->data = c;
+        rev->data = c;
+        wev->data = c;
+
         c->read = rev;
         c->write = wev;
 
-        c->listening = ls;
         c->fd = s;
+        c->unexpected_eof = 1;
+
+        rev->ready = 1;
+        wev->write = 1;
+        wev->ready = 1;
 
         c->ctx = ls->ctx;
         c->servers = ls->servers;
 
-        c->unexpected_eof = 1;
-        wev->write = 1;
-        rev->event_handler = ngx_event_acceptex;
+        c->recv = ngx_recv;
+        c->send_chain = ngx_send_chain;
 
-        rev->ready = 1;
-        wev->ready = 1;
+        if (!(c->pool = ngx_create_pool(ls->pool_size, ls->log))) {
+            return NGX_ERROR;
+        }
 
-        ngx_test_null(c->pool,
-                      ngx_create_pool(ls->pool_size, ls->log),
-                      NGX_ERROR);
+        c->buffer = ngx_create_temp_buf(c->pool,
+                                        ls->post_accept_buffer_size
+                                        + 2 * (c->listening->socklen + 16));
+        if (c->buffer == NULL) {
+            return NGX_ERROR;
+        }
 
-        ngx_test_null(c->buffer,
-                      ngx_create_temp_buf(c->pool,
-                                          ls->post_accept_buffer_size
-                                          + 2 * (c->listening->socklen + 16)),
-                      NGX_ERROR);
+        if (!(c->local_sockaddr = ngx_palloc(c->pool, ls->socklen))) {
+            return NGX_ERROR;
+        }
 
-        ngx_test_null(c->local_sockaddr, ngx_palloc(c->pool, ls->socklen),
-                      NGX_ERROR);
+        if (!(c->sockaddr = ngx_palloc(c->pool, ls->socklen))) {
+            return NGX_ERROR;
+        }
 
-        ngx_test_null(c->sockaddr, ngx_palloc(c->pool, ls->socklen),
-                      NGX_ERROR);
-
-        ngx_test_null(c->log, ngx_palloc(c->pool, sizeof(ngx_log_t)),
-                      NGX_ERROR);
+        if (!(c->log = ngx_palloc(c->pool, sizeof(ngx_log_t)))) {
+            return NGX_ERROR;
+        }
 
         ngx_memcpy(c->log, ls->log, sizeof(ngx_log_t));
-        c->read->log = c->write->log = c->log;
+        c->read->log = c->log;
+        c->write->log = c->log;
 
         if (ngx_add_event(rev, 0, NGX_IOCP_IO) == NGX_ERROR) {
             return NGX_ERROR;
diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c
index b41eca7..c068968 100644
--- a/src/event/ngx_event_connect.c
+++ b/src/event/ngx_event_connect.c
@@ -13,7 +13,7 @@
 
 /* AF_INET only */
 
-int ngx_event_connect_peer(ngx_peer_connection_t *pc)
+ngx_int_t ngx_event_connect_peer(ngx_peer_connection_t *pc)
 {
     int                  rc;
     ngx_uint_t           instance;
@@ -107,7 +107,7 @@
     /* ngx_unlock_mutex(pc->peers->mutex); */
 
 
-    s = ngx_socket(AF_INET, SOCK_STREAM, IPPROTO_IP, 0);
+    s = ngx_socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
 
     if (s == -1) {
         ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno,
@@ -165,7 +165,7 @@
         return NGX_ERROR;
     }
 
-#if (WIN32)
+#if (NGX_WIN32)
     /*
      * Winsock assignes a socket number divisible by 4
      * so to find a connection we divide a socket number by 4.
@@ -261,7 +261,7 @@
     addr.sin_addr.s_addr = peer->addr;
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, pc->log, 0,
-                   "connect to %s, #%d", peer->addr_port_text.data, c->number);
+                   "connect to %V, #%d", &peer->addr_port_text, c->number);
 
     rc = connect(s, (struct sockaddr *) &addr, sizeof(struct sockaddr_in));
 
diff --git a/src/event/ngx_event_connect.h b/src/event/ngx_event_connect.h
index 345c2f9..0408694 100644
--- a/src/event/ngx_event_connect.h
+++ b/src/event/ngx_event_connect.h
@@ -60,7 +60,7 @@
 } ngx_peer_connection_t;
 
 
-int ngx_event_connect_peer(ngx_peer_connection_t *pc);
+ngx_int_t ngx_event_connect_peer(ngx_peer_connection_t *pc);
 void ngx_event_connect_peer_failed(ngx_peer_connection_t *pc);
 
 
diff --git a/src/event/ngx_event_connectex.c b/src/event/ngx_event_connectex.c
index f3ad2f5..30ccf98 100644
--- a/src/event/ngx_event_connectex.c
+++ b/src/event/ngx_event_connectex.c
@@ -199,7 +199,7 @@
 
         ngx_log_error(NGX_LOG_ALERT, c[n].log, 0,
                       "WSAWaitForMultipleEvents() "
-                      "returned unexpected network event %lu",
+                      "returned unexpected network event %ul",
                       ne.lNetworkEvents);
     }
 }
diff --git a/src/event/ngx_event_mutex.c b/src/event/ngx_event_mutex.c
index ab4e6ab..2335e5b 100644
--- a/src/event/ngx_event_mutex.c
+++ b/src/event/ngx_event_mutex.c
@@ -13,7 +13,7 @@
                                     ngx_event_t *ev)
 {
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                   "lock event mutex " PTR_FMT " lock:%X", m, m->lock);
+                   "lock event mutex %p lock:%XD", m, m->lock);
 
     if (m->lock) {
 
@@ -48,13 +48,12 @@
 
     if (m->lock == 0) {
         ngx_log_error(NGX_LOG_ALERT, log, 0,
-                      "tring to unlock the free event mutex " PTR_FMT, m);
+                      "tring to unlock the free event mutex %p", m);
         return NGX_ERROR;
     }
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0,
-                   "unlock event mutex " PTR_FMT ", next event: " PTR_FMT,
-                   m, m->events);
+                   "unlock event mutex %p, next event: %p", m, m->events);
 
     m->lock = 0;
 
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 7a7038d..b5c5b72 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -73,7 +73,7 @@
     }
 
     if (!SSL_is_init_finished(c->ssl->ssl)) {
-        handshake = "in SSL handshake";
+        handshake = " in SSL handshake";
 
     } else {
         handshake = "";
@@ -269,7 +269,7 @@
     if (sslerr == SSL_ERROR_WANT_READ) {
 
         if (!SSL_is_init_finished(c->ssl->ssl)) {
-            handshake = "in SSL handshake";
+            handshake = " in SSL handshake";
 
         } else {
             handshake = "";
@@ -310,6 +310,9 @@
     }
 
     again = 0;
+#if (NGX_SUPPRESS_WARN)
+    sslerr = 0;
+#endif
 
     for ( ;; ) {
         n = SSL_shutdown(c->ssl->ssl);
@@ -366,23 +369,18 @@
 void ngx_ssl_error(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
                    char *fmt, ...)
 {   
-    int        len;
-    char       errstr[NGX_MAX_CONF_ERRSTR];
-    va_list    args;
+    u_char   errstr[NGX_MAX_CONF_ERRSTR], *p, *last;
+    va_list  args;
+
+    last = errstr + NGX_MAX_CONF_ERRSTR;
 
     va_start(args, fmt);
-    len = ngx_vsnprintf(errstr, sizeof(errstr) - 1, fmt, args);
+    p = ngx_vsnprintf(errstr, sizeof(errstr) - 1, fmt, args);
     va_end(args);
 
-    errstr[len++] = ' ';
-    errstr[len++] = '(';
-    errstr[len++] = 'S';
-    errstr[len++] = 'S';
-    errstr[len++] = 'L';
-    errstr[len++] = ':';
-    errstr[len++] = ' ';
+    p = ngx_cpystrn(p, " (SSL: ", last - p);
 
-    ERR_error_string_n(ERR_get_error(), errstr + len, sizeof(errstr) - len - 1);
+    ERR_error_string_n(ERR_get_error(), (char *) p, last - p);
 
     ngx_log_error(level, log, err, "%s)", errstr);
 }
diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c
index 24bc4d3..2739419 100644
--- a/src/event/ngx_event_pipe.c
+++ b/src/event/ngx_event_pipe.c
@@ -79,7 +79,8 @@
 
 ngx_int_t ngx_event_pipe_read_upstream(ngx_event_pipe_t *p)
 {
-    int           n, rc, size;
+    ssize_t       n, size;
+    ngx_int_t     rc;
     ngx_buf_t    *b;
     ngx_chain_t  *chain, *cl, *tl;
 
@@ -109,7 +110,7 @@
             n = p->preread_size;
 
             ngx_log_debug1(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                           "pipe preread: %d", n);
+                           "pipe preread: %z", n);
 
             if (n) {
                 p->read = 1;
@@ -197,7 +198,7 @@
                 rc = ngx_event_pipe_write_chain_to_temp_file(p);
 
                 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                               "pipe temp offset: %d", p->temp_file->offset);
+                               "pipe temp offset: %O", p->temp_file->offset);
 
                 if (rc == NGX_AGAIN) {
                     if (ngx_event_flags & NGX_USE_LEVEL_EVENT
@@ -237,7 +238,7 @@
             n = ngx_recv_chain(p->upstream, chain);
 
             ngx_log_debug1(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                           "pipe recv chain: %d", n);
+                           "pipe recv chain: %z", n);
 
             if (p->free_raw_bufs) {
                 chain->next = p->free_raw_bufs;
@@ -303,7 +304,7 @@
 
     for (cl = p->busy; cl; cl = cl->next) {
         ngx_log_debug3(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                       "pipe buf busy " PTR_FMT ", pos " PTR_FMT ", size: %d",
+                       "pipe buf busy %p, pos %p, size: %z",
                        cl->buf->start, cl->buf->pos,
                        cl->buf->last - cl->buf->pos);
     }
@@ -311,9 +312,8 @@
     for (cl = p->out; cl; cl = cl->next) {
         if (cl->buf->in_file && cl->buf->temporary) {
             ngx_log_debug5(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                           "pipe buf out shadow "
-                           PTR_FMT ", pos " PTR_FMT ", size: %d "
-                           "file: " OFF_T_FMT ", size: %d",
+                           "pipe buf out shadow %p, pos %p, size: %z "
+                           "file: %O, size: %z",
                            cl->buf->start, cl->buf->pos,
                            cl->buf->last - cl->buf->pos,
                            cl->buf->file_pos,
@@ -321,13 +321,12 @@
 
         } else if (cl->buf->in_file) {
             ngx_log_debug2(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                           "pipe buf out file " OFF_T_FMT ", size: %d",
+                           "pipe buf out file %O, size: %z",
                            cl->buf->file_pos,
                            cl->buf->file_last - cl->buf->file_pos);
         } else {
             ngx_log_debug3(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                           "pipe buf out " PTR_FMT ", pos " PTR_FMT
-                           ", size: %d",
+                           "pipe buf out %p, pos %p, size: %z",
                            cl->buf->start, cl->buf->pos,
                            cl->buf->last - cl->buf->pos);
         }
@@ -335,14 +334,14 @@
 
     for (cl = p->in; cl; cl = cl->next) {
         ngx_log_debug3(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                       "pipe buf in " PTR_FMT ", pos " PTR_FMT ", size: %d",
+                       "pipe buf in %p, pos %p, size: %z",
                        cl->buf->start, cl->buf->pos,
                        cl->buf->last - cl->buf->pos);
     }
 
     for (cl = p->free_raw_bufs; cl; cl = cl->next) {
         ngx_log_debug3(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                       "pipe buf free " PTR_FMT ", last " PTR_FMT ", size: %d",
+                       "pipe buf free %p, last %p, size: %z",
                        cl->buf->start, cl->buf->last,
                        cl->buf->end - cl->buf->last);
     }
@@ -443,7 +442,7 @@
         }
 
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                       "pipe write busy: " SIZE_T_FMT, bsize);
+                       "pipe write busy: %uz", bsize);
 
         out = NULL;
         ll = NULL;
@@ -482,7 +481,7 @@
         }
 
         ngx_log_debug2(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                       "pipe write: out:" PTR_FMT ", f:%d", out, flush);
+                       "pipe write: out:%p, f:%d", out, flush);
 
         if (out == NULL && !flush) {
             break;
@@ -553,13 +552,13 @@
         ll = NULL;
 
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                       "pipe offset: %d", p->temp_file->offset);
+                       "pipe offset: %O", p->temp_file->offset);
 
         do {
             bsize = cl->buf->last - cl->buf->pos;
 
             ngx_log_debug3(NGX_LOG_DEBUG_EVENT, p->log, 0,
-                           "pipe buf " PTR_FMT ", pos " PTR_FMT ", size: %d",
+                           "pipe buf %p, pos %p, size: %z",
                            cl->buf->start, cl->buf->pos, bsize);
 
             if ((size + bsize > p->temp_file_write_size)
@@ -574,7 +573,7 @@
 
         } while (cl);
 
-        ngx_log_debug1(NGX_LOG_DEBUG_EVENT, p->log, 0, "size: %d", size);
+        ngx_log_debug1(NGX_LOG_DEBUG_EVENT, p->log, 0, "size: %z", size);
 
         if (cl) {
            p->in = cl;
diff --git a/src/event/ngx_event_posted.c b/src/event/ngx_event_posted.c
index eb064f5..aed07fa 100644
--- a/src/event/ngx_event_posted.c
+++ b/src/event/ngx_event_posted.c
@@ -25,7 +25,7 @@
         ev = (ngx_event_t *) ngx_posted_events;
 
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                      "posted event " PTR_FMT, ev);
+                      "posted event %p", ev);
 
         if (ev == NULL) {
             return;
@@ -38,7 +38,7 @@
 }
 
 
-#if (NGX_THREADS)
+#if (NGX_THREADS) && !(NGX_WIN32)
 
 void ngx_wakeup_worker_thread(ngx_cycle_t *cycle)
 {
@@ -87,7 +87,7 @@
         for ( ;; ) {
 
             ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                          "posted event " PTR_FMT, ev);
+                          "posted event %p", ev);
 
             if (ev == NULL) {
                 return NGX_OK;
@@ -96,7 +96,7 @@
             if (ngx_trylock(ev->lock) == 0) {
 
                 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                               "posted event " PTR_FMT " is busy", ev);
+                               "posted event %p is busy", ev);
 
                 ev = ev->next;
                 continue;
@@ -105,8 +105,7 @@
             if (ev->lock != ev->own_lock) {
                 if (*(ev->own_lock)) {
                     ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
-                                  "the own lock of the posted event "
-                                  PTR_FMT " is busy", ev);
+                             "the own lock of the posted event %p is busy", ev);
                     ngx_unlock(ev->lock);
                     ev = ev->next;
                     continue;
@@ -153,7 +152,7 @@
             }
 
             ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                           "posted event " PTR_FMT " is done", ev);
+                           "posted event %p is done", ev);
 
             break;
         }
diff --git a/src/event/ngx_event_posted.h b/src/event/ngx_event_posted.h
index 5e29edc..86100af 100644
--- a/src/event/ngx_event_posted.h
+++ b/src/event/ngx_event_posted.h
@@ -22,10 +22,10 @@
                     ev->next->prev = &ev->next;                               \
                 }                                                             \
                 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,                \
-                               "post event " PTR_FMT, ev);                    \
+                               "post event %p", ev);                          \
             } else  {                                                         \
                 ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,                \
-                               "update posted event " PTR_FMT, ev);           \
+                               "update posted event %p", ev);                 \
             }
 
 #define ngx_delete_posted_event(ev)                                           \
@@ -35,7 +35,7 @@
         }                                                                     \
         ev->prev = NULL;                                                      \
         ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0,                        \
-                       "delete posted event " PTR_FMT, ev);
+                       "delete posted event %p", ev);
 
 
 
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
index a09f07f..c1ca124 100644
--- a/src/event/ngx_event_timer.c
+++ b/src/event/ngx_event_timer.c
@@ -110,14 +110,13 @@
                  */
 
                 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                               "event " PTR_FMT " is busy in expire timers",
-                               ev);
+                               "event %p is busy in expire timers", ev);
                 break;
             }
 #endif
 
             ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                           "event timer del: %d: %d",
+                           "event timer del: %d: %i",
                             ngx_event_ident(ev->data), ev->rbtree_key);
 
             ngx_rbtree_delete((ngx_rbtree_t **) &ngx_event_timer_rbtree,
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
index f40e572..9d6319a 100644
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -89,7 +89,7 @@
 
         if (abs(key - ev->rbtree_key) < 100 / NGX_TIMER_RESOLUTION) {
             ngx_log_debug3(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                           "event timer: %d, old: %d, new: %d",
+                           "event timer: %d, old: %i, new: %i",
                             ngx_event_ident(ev->data), ev->rbtree_key, key);
             return;
         }
@@ -100,7 +100,7 @@
     ev->rbtree_key = key;
 
     ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
-                   "event timer add: %d: %d",
+                   "event timer add: %d: %i",
                     ngx_event_ident(ev->data), ev->rbtree_key);
 
     if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {