diff src/http/modules/ngx_http_fastcgi_handler.c @ 30:e1ada20fc595 NGINX_0_1_15

nginx 0.1.15 *) 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; bug 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 <http://sysoev.ru>
date Wed, 19 Jan 2005 00:00:00 +0300
parents 7ca9bdc82b3f
children da8c190bdaba
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;
     }