# HG changeset patch # User Igor Sysoev # Date 1140555600 -10800 # Node ID fef68f68bcfd4c8af76402a7c166028feee5afec # Parent c461f0beadb0dd3c1fbc78bb29dd89a539155010 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. diff --git a/CHANGES b/CHANGES --- 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 diff --git a/CHANGES.ru b/CHANGES.ru --- 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 diff --git a/src/core/nginx.h b/src/core/nginx.h --- 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" diff --git a/src/core/ngx_cpuinfo.c b/src/core/ngx_cpuinfo.c --- 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 diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c --- 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"); diff --git a/src/http/modules/perl/nginx.xs b/src/http/modules/perl/nginx.xs --- 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; diff --git a/src/http/modules/perl/ngx_http_perl_module.c b/src/http/modules/perl/ngx_http_perl_module.c --- 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; } diff --git a/src/http/modules/perl/ngx_http_perl_module.h b/src/http/modules/perl/ngx_http_perl_module.h --- 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;