diff src/http/modules/ngx_http_proxy_module.c @ 202:ca5f86d94316 NGINX_0_3_48

nginx 0.3.48 *) Change: now the ngx_http_charset_module works for subrequests, if the response has no "Content-Type" header line. *) Bugfix: if the "proxy_pass" directive has no URI part, then the "proxy_redirect default" directive add the unnecessary slash in start of the rewritten redirect. *) Bugfix: the internal redirect always transform client's HTTP method to GET, now the transformation is made for the "X-Accel-Redirect" redirects only and if the method is not HEAD; bug appeared in 0.3.42. *) Bugfix: the ngx_http_perl_module could not be built, if the perl was built with the threads support; bug appeared in 0.3.46.
author Igor Sysoev <http://sysoev.ru>
date Mon, 29 May 2006 00:00:00 +0400
parents d2ae1c9f1fd3
children 3866d57d9cfd
line wrap: on
line diff
--- a/src/http/modules/ngx_http_proxy_module.c
+++ b/src/http/modules/ngx_http_proxy_module.c
@@ -1349,7 +1349,9 @@ ngx_http_proxy_rewrite_redirect_text(ngx
 
     p = ngx_copy(p, h->value.data, prefix);
 
-    p = ngx_copy(p, pr->replacement.text.data, pr->replacement.text.len);
+    if (pr->replacement.text.len) {
+        p = ngx_copy(p, pr->replacement.text.data, pr->replacement.text.len);
+    }
 
     ngx_memcpy(p, h->value.data + prefix + pr->redirect.len,
                h->value.len - pr->redirect.len - prefix);
@@ -1694,7 +1696,14 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t
 
             pr->handler = ngx_http_proxy_rewrite_redirect_text;
             pr->redirect = conf->upstream.url;
-            pr->replacement.text = conf->upstream.location;
+
+            if (conf->upstream.uri.len) {
+                pr->replacement.text = conf->upstream.location;
+
+            } else {
+                pr->replacement.text.len = 0;
+                pr->replacement.text.data = NULL;
+            }
         }
     }
 
@@ -2263,7 +2272,14 @@ ngx_http_proxy_redirect(ngx_conf_t *cf, 
 
         pr->handler = ngx_http_proxy_rewrite_redirect_text;
         pr->redirect = plcf->upstream.url;
-        pr->replacement.text = plcf->upstream.location;
+
+        if (plcf->upstream.uri.len) {
+            pr->replacement.text = plcf->upstream.location;
+
+        } else {
+            pr->replacement.text.len = 0;
+            pr->replacement.text.data = NULL;
+        }
 
         return NGX_CONF_OK;
     }