]> git.kaiwu.me - nginx.git/commitdiff
nginx-0.1.33-RELEASE import release-0.1.33
authorIgor Sysoev <igor@sysoev.ru>
Mon, 23 May 2005 12:07:45 +0000 (12:07 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 23 May 2005 12:07:45 +0000 (12:07 +0000)
    *) Bugfix: nginx could not be built with the --without-pcre parameter;
       the bug had appeared in 0.1.29.

    *) Bugfix: 3, 4, 7, and 8 the "proxy_set_header" directives in one
       level cause the bus fault on start up.

    *) Bugfix: the HTTP protocol was specified in the HTTPS redirects.

    *) Bugfix: if the "rewrite" directive used the captures inside the "if"
       directive, then the 500 error code was returned.

28 files changed:
auto/cc/ccc
auto/cc/conf
auto/cc/name
auto/os/conf
docs/xml/nginx/changes.xml
src/core/nginx.c
src/core/nginx.h
src/core/ngx_conf_file.c
src/core/ngx_config.h
src/core/ngx_connection.h
src/core/ngx_cycle.c
src/core/ngx_file.c
src/core/ngx_file.h
src/core/ngx_garbage_collector.c
src/core/ngx_inet.c
src/core/ngx_log.c
src/core/ngx_output_chain.c
src/core/ngx_string.c
src/core/ngx_times.c
src/core/ngx_unix_domain.c
src/http/modules/ngx_http_proxy_module.c
src/http/modules/ngx_http_rewrite_module.c
src/http/ngx_http_header_filter_module.c
src/http/ngx_http_script.c
src/http/ngx_http_script.h
src/os/unix/ngx_errno.h
src/os/unix/ngx_time.c
src/os/unix/ngx_time.h

index 968015fe2921fababeb3388420b5f61046528f8c..298f31e99c2198544290d626dd993f1b27ac00ac 100644 (file)
@@ -10,27 +10,30 @@ ngx_include_opt="-I"
 
 CFLAGS="$CFLAGS -msg_enable level6 -msg_fatal level6"
 
+CFLAGS="$CFLAGS -msg_disable unknownmacro"
+CFLAGS="$CFLAGS -msg_disable unusedincl"
 CFLAGS="$CFLAGS -msg_disable unnecincl"
 CFLAGS="$CFLAGS -msg_disable nestincl"
-CFLAGS="$CFLAGS -msg_disable unusedincl"
-CFLAGS="$CFLAGS -msg_disable unknownmacro"
 CFLAGS="$CFLAGS -msg_disable strctpadding"
 CFLAGS="$CFLAGS -msg_disable ansialiascast"
 CFLAGS="$CFLAGS -msg_disable inlinestoclsmod"
 CFLAGS="$CFLAGS -msg_disable cxxkeyword"
 CFLAGS="$CFLAGS -msg_disable longlongsufx"
+CFLAGS="$CFLAGS -msg_disable valuepres"
 
 # STUB
 CFLAGS="$CFLAGS -msg_disable truncintcast"
 CFLAGS="$CFLAGS -msg_disable trunclongcast"
+
 CFLAGS="$CFLAGS -msg_disable truncintasn"
 CFLAGS="$CFLAGS -msg_disable trunclongint"
 CFLAGS="$CFLAGS -msg_disable intconcastsgn"
 CFLAGS="$CFLAGS -msg_disable intconstsign"
-CFLAGS="$CFLAGS -msg_disable hexoctunsign"
 CFLAGS="$CFLAGS -msg_disable switchlong"
-CFLAGS="$CFLAGS -msg_disable valuepres"
 CFLAGS="$CFLAGS -msg_disable subscrbounds2"
+
+CFLAGS="$CFLAGS -msg_disable hexoctunsign"
+
 CFLAGS="$CFLAGS -msg_disable ignorecallval"
 CFLAGS="$CFLAGS -msg_disable nonstandcast"
 CFLAGS="$CFLAGS -msg_disable embedcomment"
@@ -38,4 +41,5 @@ CFLAGS="$CFLAGS -msg_disable unreachcode"
 CFLAGS="$CFLAGS -msg_disable questcompare2"
 CFLAGS="$CFLAGS -msg_disable unusedtop"
 CFLAGS="$CFLAGS -msg_disable unrefdecl"
+
 CFLAGS="$CFLAGS -msg_disable bitnotint"
index b2eabebe543cb39021462d50c3fb358a896b7d25..4d151da96b8cf8785dbe01f12a84295530994fc8 100644 (file)
@@ -124,7 +124,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
     . auto/feature
 
 
-    if [ $NGX_CC_NAME = 'ccc' ]; then
+    if [ "$NGX_CC_NAME" = "ccc" ]; then
         echo "checking for C99 variadic macros ... disabled"
     else
         ngx_feature="C99 variadic macros"
index fb4f49aaf20e457ee8fc3c5ecda9af7a0b336573..c89ce79759b486668def2f1c35bf9ee722c2bdcd 100644 (file)
@@ -34,7 +34,7 @@ if `$CC -v 2>&1 | grep 'gcc version' 2>&1 >/dev/null`; then
     echo " using GNU C compiler"
 
 else
-if `$CC -V 2>&1 | grep '^Intel(R) C++ Compiler' 2>&1 >/dev/null`; then
+if `$CC -V 2>&1 | grep '^Intel(R) C' 2>&1 >/dev/null`; then
     NGX_CC_NAME=icc
     echo " using Intel C++ compiler"
 
@@ -49,6 +49,7 @@ if `$CC -V 2>&1 | grep '^aCC: ' 2>&1 >/dev/null`; then
     echo " using HP aC++ compiler"
 
 else
+    NGX_CC_NAME=unknown
     echo " unknown"
 
 fi # acc
index 226f8ddc45552f2aa2ccfec27f6061f2f02d68a2..69813ce25a99db4eecb279c05e032633a7ff7f4f 100644 (file)
@@ -53,8 +53,9 @@ case "$NGX_PLATFORM" in
     ;;
 
     OSF1:*)
-        # HP Tru64
+        # Tru64 UNIX
         have=NGX_TRU64 . auto/have_headers
+        have=NGX_HAVE_STRERROR_R . auto/nohave
         CORE_INCS="$UNIX_INCS"
         CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
         CORE_SRCS="$UNIX_SRCS"
index ce7f6c351aa269f8891c83def5603f539af80411..f65c70589634e58378a7532ebba7f58e33ed2567 100644 (file)
@@ -9,6 +9,53 @@
 <title lang="en">nginx changelog</title>
 
 
+<changes ver="0.1.33" date="23.05.2005">
+
+<change type="bugfix">
+<para lang="ru">
+nginx ÎÅ ÓÏÂÉÒÁÌÓÑ Ó ÐÁÒÁÍÅÔÒÏÍ --without-pcre;
+ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.1.29.
+</para>
+<para lang="en">
+nginx could not be built with the --without-pcre parameter;
+bug appeared in 0.1.29.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+3, 5, 7 É 8 ÄÉÒÅËÔÉ× proxy_set_header ÎÁ ÏÄÎÏÍ ÕÒÏ×ÎÅ ×ÙÚÙ×ÁÌÉ
+bus fault ÐÒÉ ÚÁÐÕÓËÅ.
+</para>
+<para lang="en">
+3, 4, 7, and 8 the "proxy_set_header" directives in one level cause
+the bus fault on start up.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+× ÒÅÄÉÒÅËÔÁÈ ×ÎÕÔÒÉ HTTPS ÓÅÒ×ÅÒÁ ÂÙÌ ÕËÁÚÁΠÐÒÏÔÏËÏÌ HTTP.
+</para>
+<para lang="en">
+the HTTP protocol was specified in the HTTPS redirects.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+ÅÓÌÉ ÄÉÒÅËÔÉ×Á rewrite ÉÓÐÏÌØÚÏ×ÁÌÁ ×ÙÄÅÌÅÎÉÑ ×ÎÕÔÒÉ ÄÉÒÅËÔÉ×Ù if, ÔÏ
+×ÏÚ×ÒÁÝÁÌÁÓØ ÏÛÉÂËÁ 500.
+</para>
+<para lang="en">
+if the "rewrite" directive used the captures inside the "if" directive, then
+the 500 error code was returned.
+</para>
+</change>
+
+</changes>
+
+
 <changes ver="0.1.32" date="19.05.2005">
 
 <change type="bugfix">
index bb6f093e4851a36d04598c0c61b8aa767c6fdb36..7b98e1263650883f3f1a96ec6e4fe278cffe1981 100644 (file)
@@ -440,7 +440,7 @@ ngx_save_argv(ngx_cycle_t *cycle, int argc, char *const *argv)
             return NGX_ERROR;
         }
 
-        ngx_cpystrn((u_char *) ngx_argv[i], (u_char *) argv[i], len);
+        (void) ngx_cpystrn((u_char *) ngx_argv[i], (u_char *) argv[i], len);
     }
 
     ngx_argv[i] = NULL;
@@ -473,8 +473,8 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle)
     ccf->master = NGX_CONF_UNSET;
     ccf->worker_processes = NGX_CONF_UNSET;
     ccf->debug_points = NGX_CONF_UNSET;
-    ccf->user = (ngx_uid_t) NGX_CONF_UNSET;
-    ccf->group = (ngx_gid_t) NGX_CONF_UNSET;
+    ccf->user = (ngx_uid_t) NGX_CONF_UNSET_UINT;
+    ccf->group = (ngx_gid_t) NGX_CONF_UNSET_UINT;
 #if (NGX_THREADS)
     ccf->worker_threads = NGX_CONF_UNSET;
     ccf->thread_stack_size = NGX_CONF_UNSET_SIZE;
@@ -507,7 +507,7 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf)
 
 #if !(NGX_WIN32)
 
-    if (ccf->user == (uid_t) NGX_CONF_UNSET && geteuid() == 0) {
+    if (ccf->user == (uid_t) NGX_CONF_UNSET_UINT && geteuid() == 0) {
 
         pwd = getpwnam(NGX_USER);
         if (pwd == NULL) {
@@ -573,7 +573,7 @@ ngx_set_user(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     struct group     *grp;
     ngx_str_t        *value;
 
-    if (ccf->user != (uid_t) NGX_CONF_UNSET) {
+    if (ccf->user != (uid_t) NGX_CONF_UNSET_UINT) {
         return "is duplicate";
     }
 
index d1a5693b61e1d328f215bf4b14927517db5ebe26..efc35b85eb6a2417063dc67d9e7a24cdf0556a40 100644 (file)
@@ -8,7 +8,7 @@
 #define _NGINX_H_INCLUDED_
 
 
-#define NGINX_VER          "nginx/0.1.32"
+#define NGINX_VER          "nginx/0.1.33"
 
 #define NGINX_VAR          "NGINX"
 #define NGX_NEWPID_EXT     ".newbin"
index 42143bd2c2d07a2ecdccfa55c9a9aac21fd6d2b7..1a66ea92a71edaeacfd6a1f1b60a4b563b281eac 100644 (file)
@@ -457,7 +457,7 @@ ngx_conf_read_token(ngx_conf_t *cf)
                 return NGX_OK;
 
             case '}':
-                if (cf->args->nelts > 0) {
+                if (cf->args->nelts != 0) {
                     ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
                                   "unexpected \"}\" in %s:%ui",
                                   cf->conf_file->file.name.data,
index 675d427d44c9cf6afd3f33b2b00bedb31aa4091f..4045e7a828e3d7fe6d66b3b3d8cf3462e30b318d 100644 (file)
@@ -126,9 +126,9 @@ typedef long               ngx_flag_t;
 
 
 #if ((__GNU__ == 2) && (__GNUC_MINOR__ < 8))
-#define NGX_MAX_UINT32_VALUE  0xffffffffLL
+#define NGX_MAX_UINT32_VALUE  (uint32_t) 0xffffffffLL
 #else
-#define NGX_MAX_UINT32_VALUE  0xffffffff
+#define NGX_MAX_UINT32_VALUE  (uint32_t) 0xffffffff
 #endif
 
 
index eed955a7234ed8beb8c543a2d3a32a6df44c52f7..bbca32ba63329caf431a1e377ecf167e62e516b7 100644 (file)
@@ -17,8 +17,8 @@ typedef struct {
 
     struct sockaddr  *sockaddr;
     socklen_t         socklen;    /* size of sockaddr */
-    int               addr;       /* offset to address in sockaddr */
-    int               addr_text_max_len;
+    size_t            addr;       /* offset to address in sockaddr */
+    size_t            addr_text_max_len;
     ngx_str_t         addr_text;
 
     int               family;
index eaebdb0bfaf9852dfd6414e785d07e55c2847a89..3a1c00e65e7d2ebc3b66f764312b0c0faab8d1d0 100644 (file)
@@ -717,7 +717,7 @@ void ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user)
             continue;
         }
 #else
-        if (user != (ngx_uid_t) -1) {
+        if (user != (ngx_uid_t) NGX_CONF_UNSET_UINT) {
 
             if (ngx_file_info((const char *) file[i].name.data, &fi) == -1) {
                 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
index 46d2e0acb7938ff765d4ef34fa486335d56e9512..efabd39b82dc9a0771636449ead7d27951acf4fc 100644 (file)
@@ -61,8 +61,8 @@ ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path, ngx_pool_t *pool,
     n = ngx_next_temp_number(0);
 
     for ( ;; ) {
-        ngx_sprintf(file->name.data + path->name.len + 1 + path->len,
-                    "%0muA%Z", n);
+        (void) ngx_sprintf(file->name.data + path->name.len + 1 + path->len,
+                           "%0muA%Z", n);
 
         ngx_create_hashed_filename(file, path);
 
@@ -123,7 +123,8 @@ ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path, ngx_pool_t *pool,
 void
 ngx_create_hashed_filename(ngx_file_t *file, ngx_path_t *path)
 {
-    ngx_uint_t  i, name, pos, level;
+    size_t      name, pos, level;
+    ngx_uint_t  i;
 
     name = file->name.len;
     pos = path->name.len + 1;
@@ -151,8 +152,9 @@ ngx_create_hashed_filename(ngx_file_t *file, ngx_path_t *path)
 ngx_int_t
 ngx_create_path(ngx_file_t *file, ngx_path_t *path)
 {
-    int        i, pos;
-    ngx_err_t  err;
+    size_t      pos;
+    ngx_err_t   err;
+    ngx_uint_t  i;
 
     pos = path->name.len;
 
@@ -344,7 +346,7 @@ ngx_create_pathes(ngx_cycle_t *cycle, ngx_uid_t user)
             }
         }
 
-        if (user == (ngx_uid_t) -1) {
+        if (user == (ngx_uid_t) NGX_CONF_UNSET_UINT) {
             continue;
         }
 
index 2bda85886bbfe602d38830813aa272e17b89d034..1efee294e8bc5afa9c1bf4e6f6075e622033eaed 100644 (file)
@@ -33,8 +33,8 @@ struct ngx_file_s {
 
 struct ngx_path_s {
     ngx_str_t           name;
-    ngx_uint_t          len;
-    ngx_uint_t          level[3];
+    size_t              len;
+    size_t              level[3];
     ngx_gc_handler_pt   cleaner;
 
     u_char             *conf_file;
index 07a3f7fc54b5cacadaf89800186683b0c85fba64..4eeaeb9be1f3175d3de2f77417a5cc8ec5db9138 100644 (file)
@@ -6,7 +6,6 @@
 
 #include <ngx_config.h>
 #include <ngx_core.h>
-#include <ngx_garbage_collector.h>
 
 
 
index e7bdc410dcd82fa234327946416b4b4f567376df..7b2d8d6b82053c3836999e0fdf9edaaefdafce22 100644 (file)
@@ -225,8 +225,9 @@ ngx_inet_upstream_parse(ngx_conf_t *cf, ngx_inet_upstream_t *u)
 {
     char                *err;
     u_char              *host;
+    size_t               len;
     in_addr_t            in_addr;
-    ngx_uint_t           i, len;
+    ngx_uint_t           i;
     ngx_peers_t         *peers;
     struct hostent      *h;
     struct sockaddr_in  *sin;
@@ -281,7 +282,7 @@ ngx_inet_upstream_parse(ngx_conf_t *cf, ngx_inet_upstream_t *u)
         return NULL;
     }
 
-    ngx_cpystrn(host, u->host.data, u->host.len + 1);
+    (void) ngx_cpystrn(host, u->host.data, u->host.len + 1);
 
     /* AF_INET only */
 
index 27825826233276d2a54eff01b65898075e4a94f6..efc62f93ccd7441ac44ec4be5319d37b7e2a6208 100644 (file)
@@ -179,7 +179,7 @@ ngx_log_write(ngx_log_t *log, u_char *errstr, size_t len)
 
     errstr[len++] = LF;
 
-    write(log->file->fd, errstr, len);
+    (void) write(log->file->fd, errstr, len);
 
 #endif
 }
index e4a8723b2d39675a45dbccfe22163f5e2dcef167..1e7229114e9ebed274b7d4beec8f793529ae4d89 100644 (file)
@@ -381,12 +381,12 @@ ngx_output_chain_copy_buf(ngx_buf_t *dst, ngx_buf_t *src, ngx_uint_t sendfile)
         n = ngx_read_file(src->file, dst->pos, (size_t) size, src->file_pos);
 
         if (n == NGX_ERROR) {
-            return n;
+            return (ngx_int_t) n;
         }
 
 #if (NGX_FILE_AIO_READ)
         if (n == NGX_AGAIN) {
-            return n;
+            return (ngx_int_t) n;
         }
 #endif
 
index 8d69c1b72a07f3617a53b2d5ca4258739d3328a8..0307bb1cd85207ae953b26ff839669e9764445dc 100644 (file)
@@ -15,7 +15,7 @@ ngx_cpystrn(u_char *dst, u_char *src, size_t n)
         return dst;
     }
 
-    for (/* void */; --n; dst++, src++) {
+    for ( /* void */ ; --n; dst++, src++) {
         *dst = *src;
 
         if (*dst == '\0') {
index 30938a174cb3d5f36ec0469e2232a6e735ff30a6..f43987e85563b30f8457bd0e490e736111833a11 100644 (file)
@@ -155,14 +155,14 @@ ngx_time_update(time_t s)
 
     p = cached_http_time[slot];
 
-    ngx_sprintf(p, "%s, %02d %s %4d %02d:%02d:%02d GMT",
-                week[ngx_cached_gmtime.ngx_tm_wday],
-                ngx_cached_gmtime.ngx_tm_mday,
-                months[ngx_cached_gmtime.ngx_tm_mon - 1],
-                ngx_cached_gmtime.ngx_tm_year,
-                ngx_cached_gmtime.ngx_tm_hour,
-                ngx_cached_gmtime.ngx_tm_min,
-                ngx_cached_gmtime.ngx_tm_sec);
+    (void) ngx_sprintf(p, "%s, %02d %s %4d %02d:%02d:%02d GMT",
+                       week[ngx_cached_gmtime.ngx_tm_wday],
+                       ngx_cached_gmtime.ngx_tm_mday,
+                       months[ngx_cached_gmtime.ngx_tm_mon - 1],
+                       ngx_cached_gmtime.ngx_tm_year,
+                       ngx_cached_gmtime.ngx_tm_hour,
+                       ngx_cached_gmtime.ngx_tm_min,
+                       ngx_cached_gmtime.ngx_tm_sec);
 
     ngx_cached_http_time.data = p;
 
@@ -175,7 +175,7 @@ ngx_time_update(time_t s)
 #elif (NGX_HAVE_GMTOFF)
 
     ngx_localtime(&tm);
-    ngx_gmtoff = tm.ngx_tm_gmtoff / 60;
+    ngx_gmtoff = (ngx_int_t) (tm.ngx_tm_gmtoff / 60);
 
 #else
 
@@ -187,22 +187,22 @@ ngx_time_update(time_t s)
 
     p = cached_err_log_time[slot];
 
-    ngx_sprintf(p, "%4d/%02d/%02d %02d:%02d:%02d",
-                tm.ngx_tm_year, tm.ngx_tm_mon,
-                tm.ngx_tm_mday, tm.ngx_tm_hour,
-                tm.ngx_tm_min, tm.ngx_tm_sec);
+    (void) ngx_sprintf(p, "%4d/%02d/%02d %02d:%02d:%02d",
+                       tm.ngx_tm_year, tm.ngx_tm_mon,
+                       tm.ngx_tm_mday, tm.ngx_tm_hour,
+                       tm.ngx_tm_min, tm.ngx_tm_sec);
 
     ngx_cached_err_log_time.data = p;
 
 
     p = cached_http_log_time[slot];
 
-    ngx_sprintf(p, "%02d/%s/%d:%02d:%02d:%02d %c%02d%02d",
-                tm.ngx_tm_mday, months[tm.ngx_tm_mon - 1],
-                tm.ngx_tm_year, tm.ngx_tm_hour,
-                tm.ngx_tm_min, tm.ngx_tm_sec,
-                ngx_gmtoff < 0 ? '-' : '+',
-                abs(ngx_gmtoff / 60), abs(ngx_gmtoff % 60));
+    (void) ngx_sprintf(p, "%02d/%s/%d:%02d:%02d:%02d %c%02d%02d",
+                       tm.ngx_tm_mday, months[tm.ngx_tm_mon - 1],
+                       tm.ngx_tm_year, tm.ngx_tm_hour,
+                       tm.ngx_tm_min, tm.ngx_tm_sec,
+                       ngx_gmtoff < 0 ? '-' : '+',
+                       abs(ngx_gmtoff / 60), abs(ngx_gmtoff % 60));
 
     ngx_cached_http_log_time.data = p;
 
index a7fdd635734108d52cc07cf7b2d2f0e185c67b96..097d111c4041c946772479df48629d075f9dd020 100644 (file)
@@ -72,7 +72,7 @@ ngx_unix_upstream_parse(ngx_conf_t *cf, ngx_unix_domain_upstream_t *u)
     peers->number = 1;
 
     sun->sun_family = AF_UNIX;
-    ngx_cpystrn((u_char *) sun->sun_path, u->url.data + 5, len + 1);
+    (void) ngx_cpystrn((u_char *) sun->sun_path, u->url.data + 5, len + 1);
 
     peers->peer[0].sockaddr = (struct sockaddr *) sun;
     peers->peer[0].socklen = sizeof(struct sockaddr_un);
index a24be244472f4685042c1148963173e830d9d70f..92dd6cc9c00756cb031d0a3d99d944c766010fce 100644 (file)
@@ -311,8 +311,8 @@ static char  ngx_http_proxy_version[] = " HTTP/1.0" CRLF;
 
 
 static ngx_table_elt_t  ngx_http_proxy_headers[] = {
-    { 0, ngx_string("Host"), ngx_string("$proxy_host"), },
-    { 0, ngx_string("Connection"), ngx_string("close"), },
+    { 0, ngx_string("Host"), ngx_string("$proxy_host") },
+    { 0, ngx_string("Connection"), ngx_string("close") },
     { 0, ngx_null_string, ngx_null_string }
 };
 
@@ -1560,6 +1560,8 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
 
         *s = *h;
 
+        src = conf->headers_source->elts;
+
     next:
 
         continue;
index 47ff8c536b9c40cbb126387cd068f35dabcd655c..da4719b7b1787902cf576e208818b63c8c884054 100644 (file)
@@ -556,8 +556,7 @@ ngx_http_rewrite(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     regex_end->redirect = regex->redirect;
 
     if (last) {
-        code = ngx_http_script_add_code(lcf->codes, sizeof(uintptr_t),
-                                        &regex);
+        code = ngx_http_script_add_code(lcf->codes, sizeof(uintptr_t), &regex);
         if (code == NULL) {
             return NGX_CONF_ERROR;
         }
@@ -713,6 +712,11 @@ ngx_http_rewrite_if(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     }
 
 
+    if (lcf->captures < nlcf->captures) {
+        lcf->captures = nlcf->captures;
+    }
+
+
     if (elts != lcf->codes->elts) {
         if_code = (ngx_http_script_if_code_t *)
                    ((u_char *) if_code + ((u_char *) lcf->codes->elts - elts));
index f3defa07af15722f4652fab1b9807967d16d38cb..a45f2e570ef987ee2013d300aa056bc2a30f4b0b 100644 (file)
@@ -264,11 +264,26 @@ ngx_http_header_filter(ngx_http_request_t *r)
     {
         r->headers_out.location->hash = 0;
 
-        len += sizeof("Location: http://") - 1
-               + r->server_name.len + r->headers_out.location->value.len + 2;
+#if (NGX_HTTP_SSL)
+        if (r->connection->ssl) {
+            len += sizeof("Location: https://") - 1
+                   + r->server_name.len
+                   + r->headers_out.location->value.len + 2;
+
+            if (r->port != 443) {
+                len += r->port_text->len;
+            }
+
+        } else
+#endif
+        {
+            len += sizeof("Location: http://") - 1
+                   + r->server_name.len
+                   + r->headers_out.location->value.len + 2;
 
-        if (r->port != 80) {
-            len += r->port_text->len;
+            if (r->port != 80) {
+                len += r->port_text->len;
+            }
         }
     }
 
@@ -396,13 +411,33 @@ ngx_http_header_filter(ngx_http_request_t *r)
         && r->headers_out.location->value.data[0] == '/')
     {
         p = b->last + sizeof("Location: ") - 1;
-        b->last = ngx_cpymem(b->last, "Location: http://",
-                             sizeof("Location: http://") - 1);
+
+        b->last = ngx_cpymem(b->last, "Location: http",
+                             sizeof("Location: http") - 1);
+
+#if (NGX_HTTP_SSL)
+        if (r->connection->ssl) {
+            *b->last++ ='s';
+        }
+#endif
+
+        *b->last++ = ':'; *b->last++ = '/'; *b->last++ = '/';
         b->last = ngx_cpymem(b->last, r->server_name.data,
                              r->server_name.len);
-        if (r->port != 80) {
-            b->last = ngx_cpymem(b->last, r->port_text->data,
-                                 r->port_text->len);
+
+#if (NGX_HTTP_SSL)
+        if (r->connection->ssl) {
+            if (r->port != 443) {
+                b->last = ngx_cpymem(b->last, r->port_text->data,
+                                     r->port_text->len);
+            }
+        } else
+#endif
+        {
+            if (r->port != 80) {
+                b->last = ngx_cpymem(b->last, r->port_text->data,
+                                     r->port_text->len);
+            }
         }
 
         b->last = ngx_cpymem(b->last, r->headers_out.location->value.data,
index ea1e56b34662eb7285dd03f09070480351b7976e..89256b355e7da45844b014dc2c2f278591166be4 100644 (file)
@@ -463,6 +463,9 @@ ngx_http_script_start_args_code(ngx_http_script_engine_t *e)
 }
 
 
+
+#if (NGX_PCRE)
+
 void
 ngx_http_script_regex_start_code(ngx_http_script_engine_t *e)
 {
@@ -693,6 +696,8 @@ ngx_http_script_regex_end_code(ngx_http_script_engine_t *e)
     e->ip += sizeof(ngx_http_script_regex_end_code_t);
 }
 
+#endif
+
 
 void
 ngx_http_script_return_code(ngx_http_script_engine_t *e)
index cf80f22b49b5d039b4c2ddc52b5660b4bd5c2f03..eb6f17ea9dead77c20d51b05f42798d2bbce83b2 100644 (file)
@@ -79,6 +79,8 @@ typedef struct {
 } ngx_http_script_copy_capture_code_t;
 
 
+#if (NGX_PCRE)
+
 typedef struct {
     ngx_http_script_code_pt          code;
     ngx_regex_t                     *regex;
@@ -114,6 +116,8 @@ typedef struct {
     uintptr_t                        redirect:1;
 } ngx_http_script_regex_end_code_t;
 
+#endif
+
 
 typedef struct {
     ngx_http_script_code_pt          code;
@@ -156,10 +160,11 @@ size_t ngx_http_script_copy_var_len_code(ngx_http_script_engine_t *e);
 void ngx_http_script_copy_var_code(ngx_http_script_engine_t *e);
 size_t ngx_http_script_copy_capture_len_code(ngx_http_script_engine_t *e);
 void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e);
+void ngx_http_script_start_args_code(ngx_http_script_engine_t *e);
+#if (NGX_PCRE)
 void ngx_http_script_regex_start_code(ngx_http_script_engine_t *e);
 void ngx_http_script_regex_end_code(ngx_http_script_engine_t *e);
-void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e);
-void ngx_http_script_start_args_code(ngx_http_script_engine_t *e);
+#endif
 void ngx_http_script_return_code(ngx_http_script_engine_t *e);
 void ngx_http_script_if_code(ngx_http_script_engine_t *e);
 void ngx_http_script_complex_value_code(ngx_http_script_engine_t *e);
index 51d608bf4ff6da8ea35ed05fdfe15b66b8ba3f38..310a1dc22d6dd900bfe081a4cf3cca9785dde2e5 100644 (file)
@@ -52,7 +52,7 @@ u_char *ngx_strerror_r(int err, u_char *errstr, size_t size);
 
 #else
 
-/* Solaris has thread-safe strerror() */
+/* Solaris and Tru64 UNIX have thread-safe strerror() */
 
 #define ngx_strerror_r(err, errstr, size)  \
     ngx_cpystrn(errstr, (u_char *) strerror(err), size)
index 72137f95295d4cc5e79f3b8ddcd0a1c16d7786db..1b1a56697be682eae74ce1962a021a41b0c4398d 100644 (file)
@@ -14,7 +14,7 @@ void ngx_localtime(ngx_tm_t *tm)
     time_t     now;
 
     now = ngx_time();
-    localtime_r(&now, tm);
+    (void) localtime_r(&now, tm);
 
 #else
     time_t     now;
@@ -37,7 +37,7 @@ void ngx_libc_localtime(struct tm *tm)
     time_t      now;
 
     now = ngx_time();
-    localtime_r(&now, tm);
+    (void) localtime_r(&now, tm);
 
 #else
     time_t      now;
@@ -57,7 +57,7 @@ void ngx_libc_gmtime(struct tm *tm)
     time_t      now;
 
     now = ngx_time();
-    gmtime_r(&now, tm);
+    (void) gmtime_r(&now, tm);
 
 #else
     time_t      now;
index 6e5a38ae2d46f34bf604393dc2125773dc247601..d3d176fdab9478f369b1eab316c9816e568bc622 100644 (file)
@@ -57,9 +57,9 @@ void ngx_localtime(ngx_tm_t *tm);
 void ngx_libc_localtime(struct tm *tm);
 void ngx_libc_gmtime(struct tm *tm);
 
-#define ngx_gettimeofday(tp)  gettimeofday(tp, NULL);
-#define ngx_msleep(ms)        usleep(ms * 1000)
-#define ngx_sleep(s)          sleep(s)
+#define ngx_gettimeofday(tp)  (void) gettimeofday(tp, NULL);
+#define ngx_msleep(ms)        (void) usleep(ms * 1000)
+#define ngx_sleep(s)          (void) sleep(s)
 
 
 #endif /* _NGX_TIME_H_INCLUDED_ */