diff --git a/auto/configure b/auto/configure
new file mode 100755
index 0000000..c30b52d
--- /dev/null
+++ b/auto/configure
@@ -0,0 +1,12 @@
+
+CC=cc
+CPP='cc -E'
+
+echo > ngx_auto_config.h
+
+. auto/types/time_t
+
+. auto/types/uint64_t
+. auto/types/uintptr_t
+
+. auto/types/socklen_t
diff --git a/auto/types/socklen_t b/auto/types/socklen_t
new file mode 100644
index 0000000..84d39fb
--- /dev/null
+++ b/auto/types/socklen_t
@@ -0,0 +1,28 @@
+
+found=0
+
+echo 'Checking for socklen_t'
+
+echo '#include <sys/types.h>' > autotest.c
+echo '#include <sys/socket.h>' >> autotest.c
+echo 'int main() { socklen_t i = 0; return 0; }' >> autotest.c
+
+eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
+
+if [ -x autotest ]; then
+    echo ' + socklen_t found'
+    found=1
+else
+    echo ' + socklen_t not found'
+    echo ' + uint32_t used'
+    type='typedef uint32_t  socklen_t;'
+    found=2
+fi
+
+rm autotest*
+
+
+if [ $found = 2 ]; then
+    echo $type >> ngx_auto_config.h
+    echo >> ngx_auto_config.h
+fi
diff --git a/auto/types/time_t b/auto/types/time_t
new file mode 100644
index 0000000..ecd80ef
--- /dev/null
+++ b/auto/types/time_t
@@ -0,0 +1,30 @@
+
+echo "Checking for printf() time_t format"
+
+echo '#include <sys/types.h>' > autotest.c
+type=`${CPP} autotest.c | awk '/^typedef.*time_t/ {print \$2}'`
+rm autotest.c
+
+case $type in
+    long)
+        echo ' + long: "%ld" used'
+        fmt='"%ld"'
+    ;;
+
+    int)
+        echo ' + int: "%d" used'
+        fmt='"%d"'
+    ;;
+
+    *)
+        echo "$0: error: unknown time_t definition: \"$type\""
+        exit 1
+    ;;
+
+esac
+
+
+echo "#ifndef TIME_FMT" >> ngx_auto_config.h
+echo "#define TIME_FMT  $fmt" >> ngx_auto_config.h
+echo "#endif" >> ngx_auto_config.h
+echo >> ngx_auto_config.h
diff --git a/auto/types/uint64_t b/auto/types/uint64_t
new file mode 100644
index 0000000..070f9e4
--- /dev/null
+++ b/auto/types/uint64_t
@@ -0,0 +1,50 @@
+
+found=0
+
+echo 'Checking for uint64_t'
+
+    echo '#include <sys/types.h>' > autotest.c
+    echo 'int main() { uint64_t i = 0; return 0; }' >> autotest.c
+
+    eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
+
+    if [ -x autotest ]; then
+        echo ' + uint64_t found'
+        found=1
+    else
+        echo ' + uint64_t not found'
+    fi
+
+    rm autotest*
+
+
+if [ $found = 0 ]; then
+
+    echo '#include <sys/types.h>' > autotest.c
+    echo 'int main() { u_int64_t i = 0; return 0; }' >> autotest.c
+
+    eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
+
+    if [ -x autotest ]; then
+        echo ' + u_int64_t used'
+        type='typedef u_int64_t  uint64_t;'
+        found=2
+    else
+        echo ' + u_int64_t not found'
+    fi
+
+    rm autotest*
+
+fi
+
+
+if [ $found = 0 ]; then
+    echo "$0: error: uint64_t not found"
+    exit 1
+fi
+
+
+if [ $found = 2 ]; then
+    echo $type >> ngx_auto_config.h
+    echo >> ngx_auto_config.h
+fi
diff --git a/auto/types/uintptr_t b/auto/types/uintptr_t
new file mode 100644
index 0000000..f2cfe62
--- /dev/null
+++ b/auto/types/uintptr_t
@@ -0,0 +1,45 @@
+
+found=0
+
+echo 'Checking for uintptr_t'
+
+    echo '#include <sys/types.h>' > autotest.c
+    echo 'int main() { uintptr_t i = 0; return i; }' >> autotest.c
+
+    eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
+
+    if [ -x autotest ]; then
+        echo ' + uintptr_t found'
+        found=1
+    else
+        echo ' + uintptr_t not found'
+    fi
+
+    rm autotest*
+
+
+if [ $found = 0 ]; then
+    echo 'int main() { printf("%d", 8 * sizeof(void *)); return 0; }'	\
+          > autotest.c
+    eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
+
+    if [ -x autotest ]; then
+        type="uint`./autotest`_t"
+        echo " + $type used"
+        type="typedef $type  uintptr_t;"
+        found=2
+    fi
+fi
+
+
+if [ $found = 0 ]; then
+    echo "$0: error: uintptr_t not found"
+    exit 1
+fi
+
+
+if [ $found = 2 ]; then
+    echo $type >> ngx_auto_config.h
+    echo >> ngx_auto_config.h
+fi
+
diff --git a/src/core/ngx_auto_config.h b/src/core/ngx_auto_config.h
deleted file mode 100644
index fe5fbd0..0000000
--- a/src/core/ngx_auto_config.h
+++ /dev/null
@@ -1,7 +0,0 @@
-
-#ifndef OFF_EQUAL_PTR
-#define OFF_EQUAL_PTR 0
-#endif
-
-
-#define NGX_PAGE_SIZE   4096
diff --git a/src/core/ngx_connection.h b/src/core/ngx_connection.h
index e82ae58..da6f37a 100644
--- a/src/core/ngx_connection.h
+++ b/src/core/ngx_connection.h
@@ -62,9 +62,6 @@
 
     off_t             sent;
 
-#if 0
-    void            (*handler)(ngx_connection_t *c);
-#endif
     void             *ctx;
     void             *servers;
 
@@ -72,11 +69,6 @@
     ngx_log_t        *log;
 
     ngx_pool_t       *pool;
-#if 0
-    int               pool_size;
-
-    int               family;
-#endif
 
     struct sockaddr  *sockaddr;
     socklen_t         socklen;
@@ -87,15 +79,7 @@
     socklen_t         local_socklen;
 #endif
 
-#if 0
-    int               addr;
-    int               addr_text_max_len;
-#endif
-
     ngx_hunk_t       *buffer;
-#if 0
-    unsigned int      post_accept_timeout;
-#endif
 
     int               number;
 
@@ -108,62 +92,7 @@
 };
 
 
-
-
-
-#if 0
-cached file
-    int      fd;       -2 unused, -1 closed (but read or mmaped), >=0 open
-    char    *name;
-
-    void    *buf;      addr if read or mmaped
-                       aiocb* if aio_read
-                       OVERLAPPED if TransmitFile or TransmitPackets
-                       NULL if sendfile
-
-    size_t   buf_size; for plain read
-    off_t    offset;   for plain read
-
-    size_t   size;
-    time_t   mod;
-    char    *last_mod; "Sun, 17 Mar 2002 19:39:50 GMT"
-    char    *etag;     ""a6d08-1302-3c94f106""
-    char    *len;      "4866"
-
-EV_VNODE        should notify by some signal if diretory tree is changed
-                or stat if aged >= N seconds (big enough)
-#endif
-
-
-#if 0
-typedef struct {
-    ssize_t       (*recv)(ngx_connection_t *c, char *buf, size_t size);
-    void           *dummy_recv_chain;
-    void           *dummy_send;
-    ngx_chain_t  *(*send_chain)(ngx_connection_t *c, ngx_chain_t *in);
-} ngx_os_io_t;
-#endif
-
-
-
-extern ngx_array_t  ngx_listening_sockets;
 extern ngx_os_io_t  ngx_io;
 
 
-extern ngx_chain_t *(*ngx_write_chain_proc)
-                                        (ngx_connection_t *c, ngx_chain_t *in);
-
-
-ssize_t ngx_recv_chain(ngx_connection_t *c, ngx_chain_t *ce);
-#if 0
-ngx_chain_t *ngx_write_chain(ngx_connection_t *c, ngx_chain_t *in, off_t flush);
-#endif
-
-
-/* TODO: move it to OS specific file */
-#if (__FreeBSD__)
-ngx_chain_t *ngx_aio_write_chain(ngx_connection_t *c, ngx_chain_t *in);
-#endif
-
-
 #endif /* _NGX_CONNECTION_H_INCLUDED_ */
diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c
index 17f8899..ea63724 100644
--- a/src/event/ngx_event_accept.c
+++ b/src/event/ngx_event_accept.c
@@ -85,7 +85,7 @@
             ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
                           "accept() on %s returned socket #%d while "
                           "only %d connections was configured, "
-                          "sleeping for 1 second",
+                          "closing the connection",
                           ls->listening->addr_text.data, s, ecf->connections);
 
             if (ngx_close_socket(s) == -1) {
@@ -93,7 +93,7 @@
                               ngx_close_socket_n "failed");
             }
 
-            ngx_msleep(1000);
+            /* TODO: disable temporary accept() event */
 
             ngx_destroy_pool(pool);
             return;
@@ -225,11 +225,9 @@
 
         ls->listening->handler(c);
 
-#if 0
         if (ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) {
             ev->available--;
         }
-#endif
 
         accepted++;
 
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index 62c9a66..ccaa73f 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -157,7 +157,7 @@
     if (in_port->addrs.nelts > 1) {
 
         /*
-         * there're the several addresses on this port and one of them
+         * There're the several addresses on this port and one of them
          * is "*:port" so getsockname() is needed to determine
          * the server address.
          * AcceptEx() already gave this address.
@@ -346,11 +346,13 @@
 
         r->request_line.len = r->request_end - r->request_start;
 
-        /* if the large client headers are enabled then
-           we need to copy a request line */
-
         if (cscf->large_client_header) {
 
+           /*
+            * if the large client headers are enabled then
+            * we need to copy a request line
+            */
+
             r->request_line.data = ngx_palloc(r->pool, r->request_line.len + 1);
             if (r->request_line.data == NULL) {
                 ngx_http_close_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
@@ -366,9 +368,11 @@
             r->request_line.data[r->request_line.len] = '\0';
         }
 
-        /* copy URI extention if it exists */
 
         if (r->uri_ext) {
+
+            /* copy URI extention */
+
             if (r->args_start) {
                 r->exten.len = r->args_start - 1 - r->uri_ext;
             } else {
@@ -384,9 +388,10 @@
             ngx_cpystrn(r->exten.data, r->uri_ext, r->exten.len + 1);
         }
 
-        /* copy URI arguments if they exist */
-
         if (r->args_start && r->uri_end > r->args_start) {
+
+            /* copy URI arguments */
+
             r->args.len = r->uri_end - r->args_start;
 
             if (!(r->args.data = ngx_palloc(r->pool, r->args.len + 1))) {
@@ -446,8 +451,8 @@
 
         /*
          * If it's a pipelined request and a request line is not complete
-         * then we need to copy it to the start of the r->header_in hunk.
-         * We need to copy it here only if the large client headers
+         * then we have to copy it to the start of the r->header_in hunk.
+         * We have to copy it here only if the large client headers
          * are enabled otherwise a request line had been already copied
          * to the start of the r->header_in hunk in ngx_http_set_keepalive().
          */
diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
index a045a1d..8a2f55e 100644
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -27,18 +27,6 @@
 #include <osreldate.h>
 
 
-/* TODO: autoconf */
-#if __FreeBSD_version < 300007
-typedef u_int64_t  uint64_t;
-typedef u_int32_t  uintptr_t;
-#endif
-
-
-/* TODO: autoconf ??? */
-#if __FreeBSD_version < 330002  /* exactly */
-typedef uint32_t   socklen_t;
-#endif
-
 
 /* TODO: autoconf */
 #if (i386)
@@ -55,7 +43,9 @@
 
 #endif
 
+#if 0
 #define TIME_FMT   "%ld"
+#endif
 #define PID_FMT    "%d"
 #define RLIM_FMT   "%lld"
 
