nginx-0.3.8-RELEASE import

    *) Security: nginx now checks URI got from a backend in
       "X-Accel-Redirect" header line or in SSI file for the "/../" paths
       and zeroes.

    *) Change: nginx now does not treat the empty user name in the
       "Authorization" header line as valid one.

    *) Feature: the "ssl_session_timeout" directives of the
       ngx_http_ssl_module and ngx_imap_ssl_module.

    *) Feature: the "auth_http_header" directive of the
       ngx_imap_auth_http_module.

    *) Feature: the "add_header" directive.

    *) Feature: the ngx_http_realip_module.

    *) Feature: the new variables to use in the "log_format" directive:
       $bytes_sent, $apache_bytes_sent, $status, $time_gmt, $uri,
       $request_time, $request_length, $upstream_status,
       $upstream_response_time, $gzip_ratio, $uid_got, $uid_set,
       $connection, $pipe, and $msec. The parameters in the "%name" form
       will be canceled soon.

    *) Change: now the false variable values in the "if" directive are the
       empty string "" and string starting with "0".

    *) Bugfix: while using proxied or FastCGI-server nginx may leave
       connections and temporary files with client requests in open state.

    *) Bugfix: the worker processes did not flush the buffered logs on
       graceful exit.

    *) Bugfix: if the request URI was changes by the "rewrite" directive
       and the request was proxied in location given by regular expression,
       then the incorrect request was transferred to backend; the bug had
       appeared in 0.2.6.

    *) Bugfix: the "expires" directive did not remove the previous
       "Expires" header.

    *) Bugfix: nginx may stop to accept requests if the "rtsig" method and
       several worker processes were used.

    *) Bugfix: the "\"" and "\'" escape symbols were incorrectly handled in
       SSI commands.

    *) Bugfix: if the response was ended just after the SSI command and
       gzipping was used, then the response did not transferred complete or
       did not transferred at all.
diff --git a/auto/cc/bcc b/auto/cc/bcc
index af108bb..83b2d60 100644
--- a/auto/cc/bcc
+++ b/auto/cc/bcc
@@ -63,5 +63,9 @@
 ngx_objext="obj"
 ngx_binext=".exe"
 
+ngx_long_start='@&&|
+	'
+ngx_long_end='|'
+
 ngx_regex_dirsep='\\'
 ngx_dirsep="\\"
diff --git a/auto/cc/conf b/auto/cc/conf
index 37f2d2e..82854d8 100644
--- a/auto/cc/conf
+++ b/auto/cc/conf
@@ -11,6 +11,9 @@
 ngx_objext="o"
 ngx_binext=
 
+ngx_long_start=
+ngx_long_end=
+
 ngx_regex_dirsep="\/"
 ngx_dirsep='/'
 
@@ -22,6 +25,9 @@
 		'
 ngx_spacer=
 
+ngx_long_regex_cont=$ngx_regex_cont
+ngx_long_cont=$ngx_cont
+
 . auto/cc/name
 
 if test -n "$CFLAGS"; then
diff --git a/auto/cc/icc b/auto/cc/icc
index d3a151c..6af9713 100644
--- a/auto/cc/icc
+++ b/auto/cc/icc
@@ -38,6 +38,7 @@
 CORE_LINK="$CORE_LINK $IPO"
 CORE_LINK="$CORE_LINK -opt_report_file=$NGX_OBJS/opt_report_file"
 
+
 case $CPU in
     pentium)
         # optimize for Pentium and Athlon
@@ -104,7 +105,7 @@
 CFLAGS="$CFLAGS -wd1419"
 
 case "$NGX_ICC_VER" in
-    8.* | 9.*)
+    9.*)
         # "cc" clobber ignored, warnings for Liunx's htons()
         CFLAGS="$CFLAGS -wd1469"
         # explicit conversion of a 64-bit integral type to a smaller
@@ -119,6 +120,15 @@
         CFLAGS="$CFLAGS -wd1595"
     ;;
 
+    8.*)
+        # "cc" clobber ignored, warnings for Liunx's htons()
+        CFLAGS="$CFLAGS -wd1469"
+
+        # STUB
+        # non-POD class type passed through ellipsis, Linux only ?
+        CFLAGS="$CFLAGS -wd1595"
+    ;;
+
     *)
     ;;
 esac
diff --git a/auto/cc/msvc b/auto/cc/msvc
index 0fa5df9..29c40c7 100644
--- a/auto/cc/msvc
+++ b/auto/cc/msvc
@@ -114,5 +114,13 @@
 ngx_objext="obj"
 ngx_binext=".exe"
 
+ngx_long_start='@<<
+        '
+ngx_long_end='<<'
+ngx_long_regex_cont=' \
+	'
+ngx_long_cont='
+	'
+
 #ngx_regex_dirsep='\\'
 #ngx_dirsep="\\"
diff --git a/auto/make b/auto/make
index fcc05b1..f7eca87 100644
--- a/auto/make
+++ b/auto/make
@@ -26,7 +26,9 @@
     echo MAKE = wmake                                         >> $NGX_MAKEFILE
 
     ngx_regex_cont=' '
+    ngx_long_regex_cont=' '
     ngx_cont=' '
+    ngx_long_cont=' '
     ngx_tab=' '
 
 fi
@@ -170,22 +172,22 @@
           -e "s/\//$ngx_regex_dirsep/g"`
 
 ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \
-    | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
+    | sed -e "s/  *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \
           -e "s/\//$ngx_regex_dirsep/g"`
 
 ngx_libs=${CORE_LIBS:+`echo $NGX_LD_OPT $CORE_LIBS \
-    | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_regex_cont/"`}
+    | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`}
 
 ngx_link=${CORE_LINK:+`echo $CORE_LINK \
-    | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_regex_cont/"`}
+    | sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`}
 
 
 cat << END                                                    >> $NGX_MAKEFILE
 
 $NGX_OBJS${ngx_dirsep}nginx${ngx_binext}:	$ngx_deps$ngx_spacer
-	\$(LINK) ${ngx_binout}$NGX_OBJS${ngx_dirsep}nginx$ngx_cont$ngx_objs$ngx_libs$ngx_link
+	\$(LINK) ${ngx_long_start}${ngx_binout}$NGX_OBJS${ngx_dirsep}nginx$ngx_long_cont$ngx_objs$ngx_libs$ngx_link
 	$ngx_rcc
-
+${ngx_long_end}
 END
 
 
diff --git a/auto/modules b/auto/modules
index 46f356c..26b1087 100644
--- a/auto/modules
+++ b/auto/modules
@@ -139,6 +139,12 @@
     HTTP_SRCS="$HTTP_SRCS $HTTP_ACCESS_SRCS"
 fi
 
+if [ $HTTP_REALIP = YES ]; then
+    have=NGX_HTTP_REALIP . auto/have
+    HTTP_MODULES="$HTTP_MODULES $HTTP_REALIP_MODULE"
+    HTTP_SRCS="$HTTP_SRCS $HTTP_REALIP_SRCS"
+fi
+
 if [ $HTTP_STATUS = YES ]; then
     have=NGX_HTTP_STATUS . auto/have
     HTTP_MODULES="$HTTP_MODULES $HTTP_STATUS_MODULE"
diff --git a/auto/options b/auto/options
index 2960f09..35c7ad3 100644
--- a/auto/options
+++ b/auto/options
@@ -50,6 +50,7 @@
 HTTP_SSL=NO
 HTTP_SSI=YES
 HTTP_POSTPONE=NO
+HTTP_REALIP=NO
 HTTP_ACCESS=YES
 HTTP_AUTH_BASIC=YES
 HTTP_USERID=YES
@@ -125,6 +126,7 @@
         --http-fastcgi-temp-path=*)      NGX_HTTP_FASTCGI_TEMP_PATH="$value" ;;
 
         --with-http_ssl_module)          HTTP_SSL=YES               ;;
+        --with-http_realip_module)       HTTP_REALIP=YES            ;;
         --without-http_charset_module)   HTTP_CHARSET=NO            ;;
         --without-http_gzip_module)      HTTP_GZIP=NO               ;;
         --without-http_ssi_module)       HTTP_SSI=NO                ;;
diff --git a/auto/sources b/auto/sources
index c4aec70..8aa596c 100644
--- a/auto/sources
+++ b/auto/sources
@@ -310,6 +310,10 @@
 HTTP_USERID_SRCS=src/http/modules/ngx_http_userid_filter_module.c
 
 
+HTTP_REALIP_MODULE=ngx_http_realip_module
+HTTP_REALIP_SRCS=src/http/modules/ngx_http_realip_module.c
+
+
 HTTP_ACCESS_MODULE=ngx_http_access_module
 HTTP_ACCESS_SRCS=src/http/modules/ngx_http_access_module.c