]> git.kaiwu.me - nginx.git/commitdiff
fix proxy_redirect with variable
authorIgor Sysoev <igor@sysoev.ru>
Tue, 26 Sep 2006 21:15:52 +0000 (21:15 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Tue, 26 Sep 2006 21:15:52 +0000 (21:15 +0000)
src/http/modules/ngx_http_proxy_module.c

index 0d80b31439dd8ac4f848d79e7abf31aa10af3d63..f4007be8e51b2cd486009acbf553c07b4978e5b1 100644 (file)
@@ -1397,8 +1397,11 @@ ngx_http_proxy_rewrite_redirect_vars(ngx_http_request_t *r, ngx_table_elt_t *h,
     e.ip = pr->replacement.vars.lengths;
     e.request = r;
 
-    for (len = prefix; *(uintptr_t *) e.ip; len += lcode(&e)) {
+    len = prefix + h->value.len - pr->redirect.len;
+
+    while (*(uintptr_t *) e.ip) {
         lcode = *(ngx_http_script_len_code_pt *) e.ip;
+        len += lcode(&e);
     }
 
     data = ngx_palloc(r->pool, len);
@@ -1418,6 +1421,9 @@ ngx_http_proxy_rewrite_redirect_vars(ngx_http_request_t *r, ngx_table_elt_t *h,
         code(&e);
     }
 
+    ngx_memcpy(e.pos, h->value.data + prefix + pr->redirect.len,
+               h->value.len - pr->redirect.len - prefix);
+
     h->value.len = len;
     h->value.data = data;