diff --git a/auto/lib/make b/auto/lib/make
index 6055e3f..d4cba34 100644
--- a/auto/lib/make
+++ b/auto/lib/make
@@ -12,7 +12,18 @@
 
     if [ $MD5 != NO ]; then
         echo "$MD5/libmd5.a:"                          >> $MAKEFILE
-        echo "	cd $MD5 && \$(MAKE) x86-elf"           >> $MAKEFILE
+
+        case $PLATFORM in
+
+        SunOS:*)
+            echo "	cd $MD5 && \$(MAKE) x86-solaris" >> $MAKEFILE
+        ;;
+
+        *)
+            echo "	cd $MD5 && \$(MAKE) x86-elf"   >> $MAKEFILE
+        ;;
+        esac
+
         echo                                           >> $MAKEFILE
     fi
 
diff --git a/auto/os/linux b/auto/os/linux
index effb472..3a020e9 100644
--- a/auto/os/linux
+++ b/auto/os/linux
@@ -1,8 +1,8 @@
 
 CORE_INCS="$UNIX_INCS"
 CORE_DEPS="$UNIX_DEPS $LINUX_DEPS"
-CORE_SRCS="$UNIX_SRCS $LINUX_SRCS $SELECT_SRCS $POLL_SRCS"
-EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE $POLL_MODULE"
+CORE_SRCS="$UNIX_SRCS $LINUX_SRCS"
+EVENT_MODULES="$EVENT_MODULES"
 
 ZLIB_LIB="-lz"
 
diff --git a/auto/os/solaris b/auto/os/solaris
index 2fd479f..363ac1d 100644
--- a/auto/os/solaris
+++ b/auto/os/solaris
@@ -1,8 +1,8 @@
 
 CORE_INCS="$UNIX_INCS"
 CORE_DEPS="$UNIX_DEPS $SOLARIS_DEPS"
-CORE_SRCS="$UNIX_SRCS $SOLARIS_SRCS $SELECT_SRCS $POLL_SRCS"
-EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE $POLL_MODULE"
+CORE_SRCS="$UNIX_SRCS $SOLARIS_SRCS "
+EVENT_MODULES="$EVENT_MODULES"
 
 MD5_LIB="-lmd5"
 ZLIB_LIB="-lz"
diff --git a/src/core/nginx.c b/src/core/nginx.c
index 61cc53e..21a22d0 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -82,6 +82,7 @@
 ngx_uint_t  ngx_connection_counter;
 
 ngx_int_t   ngx_process;
+ngx_pid_t   ngx_pid;
 ngx_pid_t   ngx_new_binary;
 
 ngx_int_t   ngx_inherited;
@@ -122,6 +123,7 @@
 #endif
 
     log = ngx_log_init_errlog();
+    ngx_pid = ngx_getpid();
 
     /* init_cycle->log is required for signal handlers */
 
@@ -179,12 +181,6 @@
         }
     }
 
-    if (dup2(cycle->log->file->fd, STDERR_FILENO) == -1) {
-        ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
-                      "dup2(STDERR) failed");
-        return 1;
-    }
-
     if (ccf->pid.len == 0) {
         ccf->pid.len = sizeof(NGINX_PID) - 1;
         ccf->pid.data = NGINX_PID;
diff --git a/src/core/ngx_config.h b/src/core/ngx_config.h
index 796d7a2..b691c3c 100644
--- a/src/core/ngx_config.h
+++ b/src/core/ngx_config.h
@@ -2,9 +2,6 @@
 #define _NGX_CONFIG_H_INCLUDED_
 
 
-#include <ngx_auto_config.h>
-
-
 #if 1
 /* STUB to allocate a big ngx_connections */
 #undef  FD_SETSIZE
@@ -36,6 +33,8 @@
 
 #else /* posix */
 
+#include <ngx_auto_config.h>
+
 #endif
 
 
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index dcae4a0..8450998 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -228,6 +228,14 @@
         }
     }
 
+    /* TODO: Win32 DuplicateHandle ? */
+    if (dup2(cycle->log->file->fd, STDERR_FILENO) == -1) {
+        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
+                      "dup2(STDERR) failed");
+        failed = 1;
+    }
+
+
     if (failed) {
 
         /* rollback the new cycle configuration */
@@ -262,6 +270,7 @@
         return NULL;
     }
 
+
     /* commit the new cycle configuration */
 
     pool->log = cycle->log;
@@ -438,6 +447,12 @@
 
         file[i].fd = fd;
     }
+
+    /* TODO: Win32 DuplicateHandle ? */
+    if (dup2(cycle->log->file->fd, STDERR_FILENO) == -1) {
+        ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
+                      "dup2(STDERR) failed");
+    }
 }
 
 
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c
index 1f7bb11..a902f1e 100644
--- a/src/core/ngx_log.c
+++ b/src/core/ngx_log.c
@@ -79,7 +79,7 @@
 
     /* pid#tid */
     len += ngx_snprintf(errstr + len, max - len,
-                        PID_T_FMT "#%d: ", ngx_getpid(), /* STUB */ 0);
+                        PID_T_FMT "#%d: ", ngx_pid, /* STUB */ 0);
 
     if (log->data) {
         len += ngx_snprintf(errstr + len, max - len,
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 482310b..3ca1067 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -16,6 +16,7 @@
 
 #if (HAVE_DEVPOLL)
 extern ngx_module_t ngx_devpoll_module;
+extern ngx_event_module_t ngx_devpoll_module_ctx;
 #endif
 
 #if (HAVE_AIO)
@@ -386,6 +387,7 @@
         old_ecf = NULL;
     }
 
+
     for (m = 0; ngx_modules[m]; m++) {
         if (ngx_modules[m]->type != NGX_EVENT_MODULE) {
             continue;
@@ -397,14 +399,19 @@
                 ecf->use = ngx_modules[m]->ctx_index;
                 ecf->name = module->name->data;
 
-                if (old_ecf && old_ecf->use != ecf->use) {
+                if (ngx_process == NGX_PROCESS_SINGLE
+                    && old_ecf
+                    && old_ecf->use != ecf->use)
+                {
                     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 "
                         "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);
+
                     return NGX_CONF_ERROR;
                 }
 
diff --git a/src/os/unix/ngx_daemon.c b/src/os/unix/ngx_daemon.c
index b2a37c1..8bad544 100644
--- a/src/os/unix/ngx_daemon.c
+++ b/src/os/unix/ngx_daemon.c
@@ -19,6 +19,8 @@
         exit(0);
     }
 
+    ngx_pid = ngx_getpid();
+
     if (setsid() == -1) {
         ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "setsid() failed");
         return NGX_ERROR;
diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
index 6a43979..2e14831 100644
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -28,6 +28,8 @@
 #include <dirent.h>
 #include <osreldate.h>
 
+#include <ngx_auto_config.h>
+
 
 #ifndef HAVE_SELECT
 #define HAVE_SELECT  1
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index e43a6ca..f6b8456 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -26,13 +26,6 @@
 #include <sys/sysctl.h>
 #include <sys/wait.h>
 #include <sys/socket.h>
-
-#if (HAVE_SENDFILE64)
-#include <sys/sendfile.h>
-#else
-extern ssize_t sendfile(int s, int fd, int32_t *offset, size_t size);
-#endif
-
 #include <netinet/in.h>
 #include <netinet/tcp.h>        /* TCP_CORK */
 #include <arpa/inet.h>
@@ -41,6 +34,14 @@
 #include <netdb.h>
 #include <dirent.h>
 
+#include <ngx_auto_config.h>
+
+#if (HAVE_SENDFILE64)
+#include <sys/sendfile.h>
+#else
+extern ssize_t sendfile(int s, int fd, int32_t *offset, size_t size);
+#endif
+
 
 
 #ifndef HAVE_SELECT
diff --git a/src/os/unix/ngx_process.c b/src/os/unix/ngx_process.c
index 68bdaed..a8c9610 100644
--- a/src/os/unix/ngx_process.c
+++ b/src/os/unix/ngx_process.c
@@ -46,6 +46,7 @@
         return NGX_ERROR;
 
     case 0:
+        ngx_pid = ngx_getpid();
         proc(cycle, data);
         break;
 
diff --git a/src/os/unix/ngx_process.h b/src/os/unix/ngx_process.h
index a1aa74b..66b9d7d 100644
--- a/src/os/unix/ngx_process.h
+++ b/src/os/unix/ngx_process.h
@@ -49,6 +49,7 @@
 void ngx_respawn_processes(ngx_cycle_t *cycle);
 void ngx_process_get_status(void);
 
+extern ngx_pid_t      ngx_pid;
 extern ngx_uint_t     ngx_last_process;
 extern ngx_process_t  ngx_processes[NGX_MAX_PROCESSES];
 
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index 43068f2..920aaf9 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -32,6 +32,8 @@
 #include <netdb.h>
 #include <dirent.h>
 
+#include <ngx_auto_config.h>
+
 
 #ifndef HAVE_SELECT
 #define HAVE_SELECT  1
