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