changeset 166:fef68f68bcfd NGINX_0_3_30

nginx 0.3.30 *) Change: the ECONNABORTED error log level was changed to "error" from "crit". *) Bugfix: the ngx_http_perl_module could not be build without the ngx_http_ssi_filter_module. *) Bugfix: nginx could not be built on i386 platform, if the PIC was used; bug appeared in 0.3.27.
author Igor Sysoev <http://sysoev.ru>
date Wed, 22 Feb 2006 00:00:00 +0300
parents c461f0beadb0
children 544cb5cba207
files CHANGES CHANGES.ru src/core/nginx.h src/core/ngx_cpuinfo.c src/event/ngx_event_accept.c src/http/modules/perl/nginx.xs src/http/modules/perl/ngx_http_perl_module.c src/http/modules/perl/ngx_http_perl_module.h
diffstat 8 files changed, 81 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,15 @@
+
+Changes with nginx 0.3.30                                        22 Feb 2006
+
+    *) Change: the ECONNABORTED error log level was changed to "error" from 
+       "crit".
+
+    *) Bugfix: the ngx_http_perl_module could not be build without the 
+       ngx_http_ssi_filter_module.
+
+    *) Bugfix: nginx could not be built on i386 platform, if the PIC was 
+       used.
+
 
 Changes with nginx 0.3.29                                        20 Feb 2006
 
--- a/CHANGES.ru
+++ b/CHANGES.ru
@@ -1,3 +1,15 @@
+
+Изменения в nginx 0.3.30                                          22.02.2006
+
+    *) Изменение: уровень записи в лог ошибки ECONNABORTED изменён на error 
+       с уровня crit.
+
+    *) Исправление: модуль ngx_http_perl_module не собирался без модуля 
+       ngx_http_ssi_filter_module.
+
+    *) Исправление: nginx не собирался на i386 платформе, если 
+       использовался PIC.
+
 
 Изменения в nginx 0.3.29                                          20.02.2006
 
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -8,7 +8,7 @@
 #define _NGINX_H_INCLUDED_
 
 
-#define NGINX_VER          "nginx/0.3.29"
+#define NGINX_VER          "nginx/0.3.30"
 
 #define NGINX_VAR          "NGINX"
 #define NGX_OLDPID_EXT     ".oldbin"
--- a/src/core/ngx_cpuinfo.c
+++ b/src/core/ngx_cpuinfo.c
@@ -14,6 +14,39 @@
 static ngx_inline void ngx_cpuid(uint32_t i, uint32_t *buf);
 
 
+#if ( __i386__ )
+
+static ngx_inline void
+ngx_cpuid(uint32_t i, uint32_t *buf)
+{
+
+    /*
+     * we could not use %ebx as output parameter if gcc builds PIC,
+     * and we could not save %ebx on stack, because %esp is used,
+     * when the -fomit-frame-pointer optimization is specified.
+     */
+
+    __asm__ (
+
+    "    mov    %%ebx, %%esi;  "
+
+    "    cpuid;                "
+    "    mov    %%eax, %0;     "
+    "    mov    %%ebx, %1;     "
+    "    mov    %%edx, %2;     "
+    "    mov    %%ecx, %3;     "
+
+    "    mov    %%esi, %%ebx;  "
+
+    : "=m" (buf[0]), "=m" (buf[1]), "=m" (buf[2]), "=m" (buf[3])
+    : "a" (i)
+    : "ecx", "edx", "esi" );
+}
+
+
+#else /* __amd64__ */
+
+
 static ngx_inline void
 ngx_cpuid(uint32_t i, uint32_t *buf)
 {
@@ -32,6 +65,9 @@ ngx_cpuid(uint32_t i, uint32_t *buf)
 }
 
 
+#endif
+
+
 /* auto detect the L2 cache line size of modern and widespread CPUs */
 
 void
--- a/src/event/ngx_event_accept.c
+++ b/src/event/ngx_event_accept.c
@@ -59,7 +59,7 @@ ngx_event_accept(ngx_event_t *ev)
                 return;
             }
 
-            ngx_log_error((err == NGX_ECONNABORTED) ? NGX_LOG_CRIT:
+            ngx_log_error((err == NGX_ECONNABORTED) ? NGX_LOG_ERR:
                                                       NGX_LOG_ALERT,
                           ev->log, err, "accept() failed");
 
--- a/src/http/modules/perl/nginx.xs
+++ b/src/http/modules/perl/nginx.xs
@@ -47,7 +47,9 @@ ngx_http_perl_sv2str(pTHX_ ngx_http_requ
 static ngx_int_t
 ngx_http_perl_output(ngx_http_request_t *r, ngx_buf_t *b)
 {
-    ngx_chain_t          *cl, out;
+    ngx_chain_t           out;
+#if (NGX_HTTP_SSI)
+    ngx_chain_t          *cl;
     ngx_http_perl_ctx_t  *ctx;
 
     ctx = ngx_http_get_module_ctx(r, ngx_http_perl_module);
@@ -65,6 +67,7 @@ ngx_http_perl_output(ngx_http_request_t 
 
         return NGX_OK;
     }
+#endif
 
     out.buf = b;
     out.next = NULL;
--- a/src/http/modules/perl/ngx_http_perl_module.c
+++ b/src/http/modules/perl/ngx_http_perl_module.c
@@ -34,8 +34,11 @@ typedef struct {
 } ngx_http_perl_variable_t;
 
 
+#if (NGX_HTTP_SSI)
 static ngx_int_t ngx_http_perl_ssi(ngx_http_request_t *r,
     ngx_http_ssi_ctx_t *ssi_ctx, ngx_str_t **params);
+#endif
+
 static ngx_int_t
     ngx_http_perl_get_interpreter(ngx_http_perl_main_conf_t *pmcf,
     PerlInterpreter **perl, ngx_log_t *log);
@@ -142,6 +145,8 @@ ngx_module_t  ngx_http_perl_module = {
 };
 
 
+#if (NGX_HTTP_SSI)
+
 #define NGX_HTTP_PERL_SSI_SUB  0
 #define NGX_HTTP_PERL_SSI_ARG  1
 
@@ -152,11 +157,12 @@ static ngx_http_ssi_param_t  ngx_http_pe
     { ngx_null_string, 0, 0, 0 }
 };
 
-
 static ngx_http_ssi_command_t  ngx_http_perl_ssi_command = {
     ngx_string("perl"), ngx_http_perl_ssi, ngx_http_perl_ssi_params, 0, 1
 };
 
+#endif
+
 
 static void
 ngx_http_perl_xs_init(pTHX)
@@ -310,6 +316,8 @@ ngx_http_perl_variable(ngx_http_request_
 }
 
 
+#if (NGX_HTTP_SSI)
+
 static ngx_int_t
 ngx_http_perl_ssi(ngx_http_request_t *r, ngx_http_ssi_ctx_t *ssi_ctx,
     ngx_str_t **params)
@@ -385,6 +393,8 @@ ngx_http_perl_ssi(ngx_http_request_t *r,
     return rc;
 }
 
+#endif
+
 
 static ngx_int_t
 ngx_http_perl_get_interpreter(ngx_http_perl_main_conf_t *pmcf,
@@ -763,6 +773,7 @@ ngx_http_perl_cleanup_perl(void *data)
 static ngx_int_t
 ngx_http_perl_preconfiguration(ngx_conf_t *cf)
 {
+#if (NGX_HTTP_SSI)
     ngx_int_t                  rc;
     ngx_http_ssi_main_conf_t  *smcf;
 
@@ -780,6 +791,7 @@ ngx_http_perl_preconfiguration(ngx_conf_
 
         return NGX_ERROR;
     }
+#endif
 
     return NGX_OK;
 }
--- a/src/http/modules/perl/ngx_http_perl_module.h
+++ b/src/http/modules/perl/ngx_http_perl_module.h
@@ -26,7 +26,9 @@ typedef struct {
     ngx_str_t                 redirect_uri;
     ngx_str_t                 redirect_args;
 
+#if (NGX_HTTP_SSI)
     ngx_http_ssi_ctx_t       *ssi;
+#endif
 } ngx_http_perl_ctx_t;