Mercurial > hg > nginx
diff src/http/modules/ngx_http_fastcgi_handler.c @ 481:fd661d14a7fa release-0.1.15
nginx-0.1.15-RELEASE import
*) Bugfix: the error while the connecting to the FastCGI server caused
segmentation fault.
*) Bugfix: the correct handling of the regular expression, that has
different number of the captures and substitutions.
*) Feature: the location, that is passed to the FastCGI server, can be
regular expression.
*) Bugfix: the FastCGI's parameter REQUEST_URI is now passed with the
arguments and in the original state.
*) Bugfix: the ngx_http_rewrite_module module was required to be built
to use the regular expressions in locations.
*) Bugfix: the directive "proxy_preserve_host on" adds port 80 to the
"Host" headers, if upstream listen on port 80; the bug had appeared
in 0.1.14.
*) Bugfix: the same paths in autoconfiguration parameters
--http-client-body-temp-path=PATH and --http-proxy-temp-path=PATH,
or --http-client-body-temp-path=PATH and
--http-fastcgi-temp-path=PATH caused segmentation fault.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 19 Jan 2005 13:10:56 +0000 |
parents | c52408583801 |
children | 621229427cba |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_fastcgi_handler.c +++ b/src/http/modules/ngx_http_fastcgi_handler.c @@ -144,6 +144,9 @@ static ngx_str_t ngx_http_fastcgi_method }; +static ngx_str_t ngx_http_fastcgi_uri = ngx_string("/"); + + static ngx_http_header_t ngx_http_fastcgi_headers_in[] = { { ngx_string("Status"), offsetof(ngx_http_fastcgi_headers_in_t, status) }, @@ -474,8 +477,8 @@ static ngx_int_t ngx_http_fastcgi_create } if (flcf->params & NGX_HTTP_FASTCGI_REQUEST_URI) { - len += 1 + ((r->uri.len > 127) ? 4 : 1) - + sizeof("REQUEST_URI") - 1 + r->uri.len; + len += 1 + ((r->unparsed_uri.len > 127) ? 4 : 1) + + sizeof("REQUEST_URI") - 1 + r->unparsed_uri.len; } if (flcf->params & NGX_HTTP_FASTCGI_SCRIPT_NAME) { @@ -734,7 +737,7 @@ static ngx_int_t ngx_http_fastcgi_create if (flcf->params & NGX_HTTP_FASTCGI_REQUEST_URI) { *b->last++ = sizeof("REQUEST_URI") - 1; - len = r->uri.len; + len = r->unparsed_uri.len; if (len > 127) { *b->last++ = (u_char) (((len >> 24) & 0x7f) | 0x80); *b->last++ = (u_char) ((len >> 16) & 0xff); @@ -746,7 +749,7 @@ static ngx_int_t ngx_http_fastcgi_create } b->last = ngx_cpymem(b->last, "REQUEST_URI", sizeof("REQUEST_URI") - 1); - b->last = ngx_cpymem(b->last, r->uri.data, len); + b->last = ngx_cpymem(b->last, r->unparsed_uri.data, len); } @@ -1718,7 +1721,6 @@ static char *ngx_http_fastcgi_pass(ngx_c unix_upstream.name = value[1]; unix_upstream.url = value[1]; - if (!(lcf->peers = ngx_unix_upstream_parse(cf, &unix_upstream))) { return NGX_CONF_ERROR; } @@ -1744,9 +1746,10 @@ static char *ngx_http_fastcgi_pass(ngx_c clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module); - lcf->location = &clcf->name; clcf->handler = ngx_http_fastcgi_handler; + lcf->location = clcf->regex ? &ngx_http_fastcgi_uri: &clcf->name; + if (clcf->name.data[clcf->name.len - 1] == '/') { clcf->auto_redirect = 1; }