nginx-0.0.2-2004-02-23-23:57:12 import
diff --git a/auto/configure b/auto/configure
index f9ad319..a944573 100755
--- a/auto/configure
+++ b/auto/configure
@@ -16,6 +16,10 @@
 . auto/cc
 . auto/lib/conf
 
+if [ "$PLATFORM" != win32 ]; then
+    . auto/threads
+fi
+
 . auto/make
 . auto/lib/make
 
@@ -23,4 +27,6 @@
     . auto/unix
 fi
 
+#have NGX_SMP . auto/have
+
 . auto/summary
diff --git a/auto/lib/make b/auto/lib/make
index d4cba34..fcf67a0 100644
--- a/auto/lib/make
+++ b/auto/lib/make
@@ -2,36 +2,60 @@
 if [ "$PLATFORM" != "win32" ]; then
 
     if [ $PCRE != NO ]; then
-        echo "$PCRE/.libs/libpcre.a:"                  >> $MAKEFILE
-        echo "	cd $PCRE \\"                           >> $MAKEFILE
-        echo "	&& ./configure --disable-shared \\"    >> $MAKEFILE
-        echo "	&& \$(MAKE)"                           >> $MAKEFILE
-        echo                                           >> $MAKEFILE
+        echo "$PCRE/.libs/libpcre.a:"                            >> $MAKEFILE
+        echo "	cd $PCRE \\"                                     >> $MAKEFILE
+        echo "	&& ./configure --disable-shared \\"              >> $MAKEFILE
+        echo "	&& \$(MAKE)"                                     >> $MAKEFILE
+        echo                                                     >> $MAKEFILE
     fi
 
 
     if [ $MD5 != NO ]; then
-        echo "$MD5/libmd5.a:"                          >> $MAKEFILE
+        echo "$MD5/libmd5.a:"                                    >> $MAKEFILE
 
         case $PLATFORM in
 
-        SunOS:*)
-            echo "	cd $MD5 && \$(MAKE) x86-solaris" >> $MAKEFILE
-        ;;
+            SunOS:*:i386)
+                echo "	cd $MD5 && \$(MAKE) x86-solaris"         >> $MAKEFILE
+            ;;
 
-        *)
-            echo "	cd $MD5 && \$(MAKE) x86-elf"   >> $MAKEFILE
-        ;;
+            *:i386)
+                echo "	cd $MD5 && \$(MAKE) x86-elf"             >> $MAKEFILE
+            ;;
+
+            *)
+                if [ $CC = gcc ]; then
+                    echo "	cd $MD5 && \$(MAKE) gcc"         >> $MAKEFILE
+                else
+                    echo "	cd $MD5 && \$(MAKE) cc"          >> $MAKEFILE
+                fi
+            ;;
+
         esac
 
-        echo                                           >> $MAKEFILE
+        echo                                                     >> $MAKEFILE
     fi
 
 
     if [ $ZLIB != NO ]; then
-        echo "$ZLIB/libz.a:"                           >> $MAKEFILE
-        echo "	cd $ZLIB && ./configure && \$(MAKE)"   >> $MAKEFILE
-        echo                                           >> $MAKEFILE
+        echo "$ZLIB/libz.a:"                                     >> $MAKEFILE
+
+        case $PLATFORM in
+
+            *:i386)
+                echo "	cd $ZLIB \\"                             >> $MAKEFILE
+                echo "	&& cp contrib/asm686/match.S . \\"       >> $MAKEFILE
+                echo "	&& CFLAGS=\"-O3 -DASMV\" ./configure \\" >> $MAKEFILE
+                echo "	&& \$(MAKE) OBJA=match.o"                >> $MAKEFILE
+            ;;
+
+            *)
+                echo "	cd $ZLIB && ./configure && \$(MAKE)"     >> $MAKEFILE
+            ;;
+
+        esac
+
+        echo                                                     >> $MAKEFILE
     fi
 
 fi
diff --git a/auto/lib/md5/conf b/auto/lib/md5/conf
index 4f6a636..06006e4 100644
--- a/auto/lib/md5/conf
+++ b/auto/lib/md5/conf
@@ -27,11 +27,12 @@
 
     MD5=NO
 
-        # Solaris 8/9
-        ngx_lib="rsaref md5"
-        ngx_lib_test="MD5_CTX md5; MD5Init(&md5)"
-        ngx_libs=-lmd5
-        . auto/lib/test
+    # Solaris 8/9
+
+    ngx_lib="rsaref md5"
+    ngx_lib_test="MD5_CTX md5; MD5Init(&md5)"
+    ngx_libs=-lmd5
+    . auto/lib/test
 
 
     if [ $ngx_found = yes ]; then
@@ -42,6 +43,7 @@
 
     else
         # FreeBSD
+
         ngx_lib="rsaref md"
         ngx_lib_test="MD5_CTX md5; MD5Init(&md5)"
         ngx_libs=-lmd
@@ -56,8 +58,9 @@
         ngx_found=no
 
     else
-        ngx_lib_inc="#include <sys/types.h>
-#include <openssl/md5.h>"
+        # OpenSSL crypto library
+
+        ngx_inc="#include <openssl/md5.h>"
         ngx_lib="OpenSSL md5 crypto"
         ngx_lib_test="MD5_CTX md5; MD5_Init(&md5)"
         ngx_libs=-lcrypto
diff --git a/auto/options b/auto/options
index c912119..f153e94 100644
--- a/auto/options
+++ b/auto/options
@@ -15,6 +15,8 @@
 EVENT_POLL=NO
 EVENT_AIO=NO
 
+USE_THREADS=NO
+
 HTTP_REWRITE=YES
 HTTP_GZIP=YES
 HTTP_SSI=YES
@@ -51,6 +53,9 @@
         --without-poll_module)           EVENT_POLL=NONE            ;;
         --with-aio_module)               EVENT_AIO=YES              ;;
 
+        --with-threads=*)                USE_THREADS="$value"       ;;
+        --with-threads)                  USE_THREADS="pthreads"     ;;
+
         --without-http_rewrite_module)   HTTP_REWRITE=NO            ;;
         --without-http_ssi_module)       HTTP_SSI=NO                ;;
         --without-http_gzip_module)      HTTP_GZIP=NO               ;;
diff --git a/auto/sources b/auto/sources
index 81ba968..17e6a4a 100644
--- a/auto/sources
+++ b/auto/sources
@@ -5,6 +5,7 @@
 
 CORE_DEPS="src/core/nginx.h \
             src/core/ngx_config.h \
+            src/core/ngx_core.h \
             src/core/ngx_atomic.h \
             src/core/ngx_log.h \
             src/core/ngx_alloc.h \
@@ -98,6 +99,7 @@
             src/os/unix/ngx_errno.h \
             src/os/unix/ngx_files.h \
             src/os/unix/ngx_process.h \
+            src/os/unix/ngx_thread.h \
             src/os/unix/ngx_socket.h \
             src/os/unix/ngx_os.h"
 
@@ -117,7 +119,7 @@
 FREEBSD_DEPS=src/os/unix/ngx_freebsd_config.h
 FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c
 FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c
-
+FREEBSD_RFORK_SRCS="src/os/unix/ngx_freebsd_rfork_thread.c"
 
 LINUX_DEPS=src/os/unix/ngx_linux_config.h
 LINUX_SRCS=src/os/unix/ngx_linux_init.c
diff --git a/auto/threads b/auto/threads
new file mode 100644
index 0000000..71fbcb6
--- /dev/null
+++ b/auto/threads
@@ -0,0 +1,7 @@
+
+if [ $USE_THREADS = "rfork" ]; then
+    have=NGX_THREADS . auto/have
+    have=USE_RFORK . auto/have
+    CORE_DEPS="$CORE_DEPS $UNIX_THREADS_DEPS"
+    CORE_SRCS="$CORE_SRCS $FREEBSD_RFORK_SRCS"
+fi