# HG changeset patch # User Igor Sysoev # Date 1230066000 -10800 # Node ID dc98ed169c03366ef89869d49da3b21b4b6663fe # Parent afc35e97690d9ac31286f1009a73e175af3eea31 nginx 0.7.30 *) Bugfix: a segmentation fault occurred in worker process, if variables were used in the "fastcgi_pass" and "proxy_pass" directives and host name must be resolved; the bug had appeared in 0.7.29. diff --git a/CHANGES b/CHANGES --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,12 @@ +Changes with nginx 0.7.30 24 Dec 2008 + + *) Bugfix: a segmentation fault occurred in worker process, if + variables were used in the "fastcgi_pass" and "proxy_pass" + directives and host name must be resolved; the bug had appeared in + 0.7.29. + + Changes with nginx 0.7.29 24 Dec 2008 *) Bugfix: the "fastcgi_pass" and "proxy_pass" directives did not diff --git a/CHANGES.ru b/CHANGES.ru --- a/CHANGES.ru +++ b/CHANGES.ru @@ -1,10 +1,17 @@ +Изменения в nginx 0.7.30 24.12.2008 + + *) Исправление: в рабочем процессе происходил segmentation fault, если + в директивах fastcgi_pass и proxy_pass использовались переменные и + имя хоста должно было резолвиться; ошибка появилась в 0.7.29. + + Изменения в nginx 0.7.29 24.12.2008 *) Исправление: директивы fastcgi_pass и proxy_pass не поддерживали переменные при использовании unix domain сокетов. - *) Исправления в обработке подзапросов; ошибки появилась в 0.7.25. + *) Исправления в обработке подзапросов; ошибки появились в 0.7.25. *) Исправление: ответ "100 Continue" выдавался для запросов версии HTTP/1.0; Спасибо Максиму Дунину. 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_VERSION "0.7.29" +#define NGINX_VERSION "0.7.30" #define NGINX_VER "nginx/" NGINX_VERSION #define NGINX_VAR "NGINX" diff --git a/src/http/modules/ngx_http_fastcgi_module.c b/src/http/modules/ngx_http_fastcgi_module.c --- a/src/http/modules/ngx_http_fastcgi_module.c +++ b/src/http/modules/ngx_http_fastcgi_module.c @@ -512,7 +512,7 @@ ngx_http_fastcgi_eval(ngx_http_request_t return NGX_ERROR; } - if (u.addrs[0].sockaddr) { + if (u.addrs && u.addrs[0].sockaddr) { r->upstream->resolved->sockaddr = u.addrs[0].sockaddr; r->upstream->resolved->socklen = u.addrs[0].socklen; r->upstream->resolved->naddrs = 1; diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c --- a/src/http/modules/ngx_http_proxy_module.c +++ b/src/http/modules/ngx_http_proxy_module.c @@ -614,7 +614,7 @@ ngx_http_proxy_eval(ngx_http_request_t * return NGX_ERROR; } - if (u.addrs[0].sockaddr) { + if (u.addrs && u.addrs[0].sockaddr) { r->upstream->resolved->sockaddr = u.addrs[0].sockaddr; r->upstream->resolved->socklen = u.addrs[0].socklen; r->upstream->resolved->naddrs = 1; diff --git a/src/http/modules/perl/nginx.pm b/src/http/modules/perl/nginx.pm --- a/src/http/modules/perl/nginx.pm +++ b/src/http/modules/perl/nginx.pm @@ -47,7 +47,7 @@ our @EXPORT = qw( HTTP_INSUFFICIENT_STORAGE ); -our $VERSION = '0.7.29'; +our $VERSION = '0.7.30'; require XSLoader; XSLoader::load('nginx', $VERSION);