nginx-0.1.29-RELEASE import

    *) Feature: the ngx_http_ssi_module supports "include virtual" command.

    *) Feature: the ngx_http_ssi_module supports the condition command like
       'if expr="$NAME"' and "else" and "endif" commands. Only one nested
       level is supported.

    *) Feature: the ngx_http_ssi_module supports the DATE_LOCAL and
       DATE_GMT variables and "config timefmt" command.

    *) Feature: the "ssi_ignore_recycled_buffers" directive.

    *) Bugfix: the "echo" command did not show the default value for the
       empty QUERY_STRING variable.

    *) Change: the ngx_http_proxy_module was rewritten.

    *) Feature: the "proxy_redirect", "proxy_pass_request_headers",
       "proxy_pass_request_body", and "proxy_method" directives.

    *) Feature: the "proxy_set_header" directive. The "proxy_x_var" was
       canceled and must be replaced with the proxy_set_header directive.

    *) Change: the "proxy_preserve_host" is canceled and must be replaced
       with the "proxy_set_header Host $host" and the "proxy_redirect off"
       directives, the "proxy_set_header Host $host:$proxy_port" directive
       and the appropriate proxy_redirect directives.

    *) Change: the "proxy_set_x_real_ip" is canceled and must be replaced
       with the "proxy_set_header X-Real-IP $remote_addr" directive.

    *) Change: the "proxy_add_x_forwarded_for" is canceled and must be
       replaced with
       the "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for"
       directive.

    *) Change: the "proxy_set_x_url" is canceled and must be replaced with
       the "proxy_set_header X-URL http://$host:$server_port$request_uri"
       directive.

    *) Feature: the "fastcgi_param" directive.

    *) Change: the "fastcgi_root", "fastcgi_set_var" and "fastcgi_params"
       directive are canceled and must be replaced with the fastcgi_param
       directives.

    *) Feature: the "index" directive can use the variables.

    *) Feature: the "index" directive can be used at http and server levels.

    *) Change: the last index only in the "index" directive can be absolute.

    *) Feature: the "rewrite" directive can use the variables.

    *) Feature: the "internal" directive.

    *) Feature: the CONTENT_LENGTH, CONTENT_TYPE, REMOTE_PORT, SERVER_ADDR,
       SERVER_PORT, SERVER_PROTOCOL, DOCUMENT_ROOT, SERVER_NAME,
       REQUEST_METHOD, REQUEST_URI, and REMOTE_USER variables.

    *) Change: nginx now passes the invalid lines in a client request
       headers or a backend response header.

    *) Bugfix: if the backend did not transfer response for a long time and
       the "send_timeout" was less than "proxy_read_timeout", then nginx
       returned the 408 response.

    *) Bugfix: the segmentation fault was occurred if the backend sent an
       invalid line in response header; the bug had appeared in 0.1.26.

    *) Bugfix: the segmentation fault may occurred in FastCGI fault
       tolerance configuration.

    *) Bugfix: the "expires" directive did not remove the previous
       "Expires" and "Cache-Control" headers.

    *) Bugfix: nginx did not take into account trailing dot in "Host"
       header line.

    *) Bugfix: the ngx_http_auth_module did not work under Linux.

    *) Bugfix: the rewrite directive worked incorrectly, if the arguments
       were in a request.

    *) Bugfix: nginx could not be built on MacOS X.
diff --git a/auto/cc/gcc b/auto/cc/gcc
index 46b0aab..2e5906a 100644
--- a/auto/cc/gcc
+++ b/auto/cc/gcc
@@ -57,6 +57,11 @@
         CPU_OPT="-march=pentium4"
     ;;
 
+    opteron)
+        # optimize for Opteron, gcc 3.x
+        CPU_OPT="-march=opteron"
+    ;;
+
     sparc64)
         # build 64-bit UltraSparc binary
         CPU_OPT="-m64"
diff --git a/auto/cc/msvc b/auto/cc/msvc
index d920ed0..0fa5df9 100644
--- a/auto/cc/msvc
+++ b/auto/cc/msvc
@@ -6,18 +6,31 @@
 
 # optimizations
 
-# maximize speed
+# maximize speed, equivalent to -Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy
 CFLAGS="$CFLAGS -O2"
+
 # enable global optimization
-CFLAGS="$CFLAGS -Og"
+#CFLAGS="$CFLAGS -Og"
 # enable intrinsic functions
-CFLAGS="$CFLAGS -Oi"
-# inline expansion
-CFLAGS="$CFLAGS -Ob1"
+#CFLAGS="$CFLAGS -Oi"
+
+# disable inline expansion
+#CFLAGS="$CFLAGS -Ob0"
+# explicit inline expansion
+#CFLAGS="$CFLAGS -Ob1"
+# explicit and implicit inline expansion
+#CFLAGS="$CFLAGS -Ob2"
+
 # enable frame pointer omission
-CFLAGS="$CFLAGS -Oy"
+#CFLAGS="$CFLAGS -Oy"
 # disable stack checking calls
-CFLAGS="$CFLAGS -Gs"
+#CFLAGS="$CFLAGS -Gs"
+
+# pools strings as read/write
+#CFLAGS="$CFLAGS -Gf"
+# pools strings as read-only
+#CFLAGS="$CFLAGS -GF"
+
 
 case $CPU in
     pentium)
diff --git a/auto/have_headers b/auto/have_headers
new file mode 100644
index 0000000..526ac47
--- /dev/null
+++ b/auto/have_headers
@@ -0,0 +1,11 @@
+
+# Copyright (C) Igor Sysoev
+
+
+cat << END >> $NGX_AUTO_HEADERS_H
+
+#ifndef $have
+#define $have  1
+#endif
+
+END
diff --git a/auto/include b/auto/include
index b369169..7ed3086 100644
--- a/auto/include
+++ b/auto/include
@@ -39,14 +39,7 @@
                   |  tr '[a-z]' '[A-Z]'`
 
 
-    cat << END >> $NGX_AUTO_HEADERS_H
-
-#ifndef NGX_HAVE_$ngx_name
-#define NGX_HAVE_$ngx_name  1
-#endif
-
-END
-
+    have=NGX_HAVE_$ngx_name . auto/have_headers
 
     eval "NGX_INCLUDE_$ngx_name='#include <$ngx_include>'"
 
diff --git a/auto/modules b/auto/modules
index 4ab272e..b032f05 100644
--- a/auto/modules
+++ b/auto/modules
@@ -51,6 +51,10 @@
 fi
 
 
+if [ $HTTP_SSI = YES ]; then
+    HTTP_POSTPONE=YES
+fi
+
 # the filter order is important
 #     ngx_http_write_filter
 #     ngx_http_header_filter
@@ -58,6 +62,7 @@
 #     ngx_http_range_header_filter
 #     ngx_http_ssl_filter
 #     ngx_http_gzip_filter
+#     ngx_http_postpone_filter
 #     ngx_http_charset_filter
 #     ngx_http_ssi_filter
 #     ngx_http_headers_filter
@@ -77,6 +82,11 @@
     HTTP_SRCS="$HTTP_SRCS $HTTP_GZIP_SRCS"
 fi
 
+if [ $HTTP_POSTPONE = YES ]; then
+    HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES $HTTP_POSTPONE_FILTER_MODULE"
+    HTTP_SRCS="$HTTP_SRCS $HTPP_POSTPONE_FILTER_SRCS"
+fi
+
 if [ $HTTP_CHARSET = YES ]; then
     have=NGX_HTTP_CHARSET . auto/have
     HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES $HTTP_CHARSET_FILTER_MODULE"
diff --git a/auto/options b/auto/options
index 2bdb5df..a56bc42 100644
--- a/auto/options
+++ b/auto/options
@@ -49,6 +49,7 @@
 HTTP_GZIP=YES
 HTTP_SSL=NO
 HTTP_SSI=YES
+HTTP_POSTPONE=NO
 HTTP_ACCESS=YES
 HTTP_AUTH_BASIC=YES
 HTTP_USERID=YES
diff --git a/auto/os/conf b/auto/os/conf
index b48b640..f2a49ce 100644
--- a/auto/os/conf
+++ b/auto/os/conf
@@ -23,6 +23,15 @@
         . auto/os/freebsd
     ;;
 
+    Darwin:*)
+        have=NGX_DARWIN . auto/have_headers
+        have=NGX_HAVE_INHERITED_NONBLOCK . auto/have
+        CORE_INCS="$UNIX_INCS"
+        CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
+        CORE_SRCS="$UNIX_SRCS"
+        CRYPT_LIB=
+    ;;
+
     Linux:*)
         . auto/os/linux
     ;;
@@ -47,16 +56,16 @@
 
 case "$NGX_MACHINE" in
 
-     i386|i686|i86pc|amd64)
-         have=NGX_HAVE_NONALIGNED . auto/have
-     ;;
+    i386|i686|i86pc|amd64)
+        have=NGX_HAVE_NONALIGNED . auto/have
+    ;;
 
 esac
 
 
 if [ "$NGX_PLATFORM" != win32 ]; then
 
-     NGX_USER=${NGX_USER:-nobody}
+    NGX_USER=${NGX_USER:-nobody}
 
     if [ -z "$NGX_GROUP" -a $NGX_USER = nobody ] ; then
        if grep nobody /etc/group 2>&1 >/dev/null; then
diff --git a/auto/os/freebsd b/auto/os/freebsd
index 133f5f5..f916860 100644
--- a/auto/os/freebsd
+++ b/auto/os/freebsd
@@ -2,14 +2,7 @@
 # Copyright (C) Igor Sysoev
 
 
-cat << END >> $NGX_AUTO_HEADERS_H
-
-#ifndef NGX_FREEBSD
-#define NGX_FREEBSD  1
-#endif
-
-END
-
+have=NGX_FREEBSD . auto/have_headers
 
 CORE_INCS="$UNIX_INCS"
 CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS"
@@ -39,6 +32,7 @@
     echo " + setproctitle() in libutil"
 
     CORE_LIBS="$CORE_LIBS -lutil"
+    NGX_SETPROCTITLE_LIB="-lutil"
 fi
 
 # sendfile
diff --git a/auto/os/linux b/auto/os/linux
index 84e4f66..5926211 100644
--- a/auto/os/linux
+++ b/auto/os/linux
@@ -2,13 +2,7 @@
 # Copyright (C) Igor Sysoev
 
 
-cat << END >> $NGX_AUTO_HEADERS_H
-
-#ifndef NGX_LINUX
-#define NGX_LINUX  1
-#endif
-
-END
+have=NGX_LINUX . auto/have_headers
 
 CORE_INCS="$UNIX_INCS"
 CORE_DEPS="$UNIX_DEPS $LINUX_DEPS"
diff --git a/auto/os/solaris b/auto/os/solaris
index 67e0a8e..cf7fc6c 100644
--- a/auto/os/solaris
+++ b/auto/os/solaris
@@ -2,13 +2,7 @@
 # Copyright (C) Igor Sysoev
 
 
-cat << END >> $NGX_AUTO_HEADERS_H
-
-#ifndef NGX_SOLARIS
-#define NGX_SOLARIS  1
-#endif
-
-END
+have=NGX_SOLARIS . auto/have_headers
 
 CORE_INCS="$UNIX_INCS"
 CORE_DEPS="$UNIX_DEPS $SOLARIS_DEPS"
diff --git a/auto/os/win32 b/auto/os/win32
index 5567535..f65f2c9 100644
--- a/auto/os/win32
+++ b/auto/os/win32
@@ -2,14 +2,7 @@
 # Copyright (C) Igor Sysoev
 
 
-cat << END >> $NGX_AUTO_HEADERS_H
-
-#ifndef NGX_WIN32
-#define NGX_WIN32  1
-#endif
-
-END
-
+have=NGX_WIN32 . auto/have_headers
 
 CORE_INCS="$WIN32_INCS"
 CORE_DEPS="$WIN32_DEPS"
diff --git a/auto/sources b/auto/sources
index 1a2abad..e597f97 100644
--- a/auto/sources
+++ b/auto/sources
@@ -120,6 +120,7 @@
             src/os/unix/ngx_channel.h \
             src/os/unix/ngx_shared.h \
             src/os/unix/ngx_process.h \
+            src/os/unix/ngx_setproctitle.h \
             src/os/unix/ngx_atomic.h \
             src/os/unix/ngx_thread.h \
             src/os/unix/ngx_socket.h \
@@ -224,9 +225,11 @@
 HTTP_WRITE_FILTER_MODULE="ngx_http_write_filter_module"
 HTTP_HEADER_FILTER_MODULE="ngx_http_header_filter_module"
 
+HTTP_POSTPONE_FILTER_MODULE=ngx_http_postpone_filter_module
+HTTP_COPY_FILTER_MODULE=ngx_http_copy_filter_module
+
 HTTP_CHUNKED_FILTER_MODULE=ngx_http_chunked_filter_module
 HTTP_HEADERS_FILTER_MODULE=ngx_http_headers_filter_module
-HTTP_COPY_FILTER_MODULE=ngx_http_copy_filter_module
 
 HTTP_RANGE_HEADER_FILTER_MODULE=ngx_http_range_header_filter_module
 HTTP_RANGE_BODY_FILTER_MODULE=ngx_http_range_body_filter_module
@@ -273,6 +276,8 @@
 # STUB
 HTTP_SRCS="$HTTP_SRCS src/http/ngx_http_busy_lock.c"
 
+HTPP_POSTPONE_FILTER_SRCS=src/http/ngx_http_postpone_filter_module.c
+
 HTPP_CACHE_SRCS=src/http/ngx_http_cache.c
 HTPP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c
 
@@ -323,17 +328,7 @@
 
 
 HTTP_PROXY_MODULE=ngx_http_proxy_module
-#HTTP_PROXY_SRCS=src/http/modules/ngx_http_proxy_module.c
-
-HTTP_PROXY_INCS="src/http/modules/proxy"
-HTTP_PROXY_DEPS=src/http/modules/proxy/ngx_http_proxy_handler.h
-HTTP_PROXY_SRCS="src/http/modules/proxy/ngx_http_proxy_handler.c \
-                 src/http/modules/proxy/ngx_http_proxy_upstream.c \
-                 src/http/modules/proxy/ngx_http_proxy_parse.c \
-                 src/http/modules/proxy/ngx_http_proxy_header.c"
-
-# STUB
-#                 src/http/modules/proxy/ngx_http_proxy_cache.c \
+HTTP_PROXY_SRCS=src/http/modules/ngx_http_proxy_module.c
 
 
 HTTP_FASTCGI_MODULE=ngx_http_fastcgi_module
diff --git a/auto/unix b/auto/unix
index 112626d..e9e0c7a 100755
--- a/auto/unix
+++ b/auto/unix
@@ -64,7 +64,7 @@
 ngx_feature_name="NGX_HAVE_SETPROCTITLE"
 ngx_feature_run=no
 ngx_feature_incs=
-ngx_feature_libs=
+ngx_feature_libs=$NGX_SETPROCTITLE_LIB
 ngx_feature_test="setproctitle(\"test\");"
 . auto/feature