diff src/http/modules/proxy/ngx_http_proxy_upstream.c @ 36:a39d1b793287 NGINX_0_1_18

nginx 0.1.18 *) Workaround: the default values of the devpoll_events and the devpoll_changes directives changed from 512 to 32 to be compatible with Solaris 10. *) Bugfix: the proxy_set_x_var and fastcgi_set_var directives were not inherited. *) Bugfix: in the redirect rewrite directive the arguments were concatenated with URI by the "&" rather than the "?". *) Bugfix: the lines without trailing ";" in the file being included by the ngx_http_geo_module were silently ignored. *) Feature: the ngx_http_stub_status_module. *) Bugfix: the unknown log format in the access_log directive caused the segmentation fault. *) Feature: the new "document_root" parameter of the fastcgi_params directive. *) Feature: the fastcgi_redirect_errors directive. *) Feature: the new "break" modifier of the "rewrite" directive allows to stop the rewrite/location cycle and sets the current configuration to the request.
author Igor Sysoev <http://sysoev.ru>
date Wed, 09 Feb 2005 00:00:00 +0300
parents aab2ea7c0458
children 9f3205d496a0
line wrap: on
line diff
--- a/src/http/modules/proxy/ngx_http_proxy_upstream.c
+++ b/src/http/modules/proxy/ngx_http_proxy_upstream.c
@@ -100,6 +100,11 @@ static ngx_chain_t *ngx_http_proxy_creat
     r = p->request;
     uc = p->lcf->upstream;
 
+#if (NGX_SUPPRESS_WARN)
+    var = NULL;
+    index = NULL;
+#endif
+
     if (p->upstream->method) {
         len = http_methods[p->upstream->method - 1].len;
 
@@ -169,20 +174,22 @@ static ngx_chain_t *ngx_http_proxy_creat
     }
 
 
-    cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);
+    if (p->lcf->x_vars) {
+        cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);
 
-    var = cmcf->variables.elts;
-    index = p->lcf->x_vars.elts;
+        var = cmcf->variables.elts;
+        index = p->lcf->x_vars->elts;
 
-    for (i = 0; i < p->lcf->x_vars.nelts; i++) {
+        for (i = 0; i < p->lcf->x_vars->nelts; i++) {
 
-        if (!(value = ngx_http_get_variable(r, index[i]))) {
-            continue;
-        }
+            if (!(value = ngx_http_get_variable(r, index[i]))) {
+                continue;
+            }
 
-        if (value->text.len) {
-            len += sizeof("X-") - 1 + var[index[i]].name.len + sizeof(": ") - 1
-                + value->text.len + sizeof(CRLF) - 1;
+            if (value->text.len) {
+                len += sizeof("X-") - 1 + var[index[i]].name.len
+                    + sizeof(": ") - 1 + value->text.len + sizeof(CRLF) - 1;
+            }
         }
     }
 
@@ -356,26 +363,28 @@ static ngx_chain_t *ngx_http_proxy_creat
     }
 
 
-    for (i = 0; i < p->lcf->x_vars.nelts; i++) {
+    if (p->lcf->x_vars) {
+        for (i = 0; i < p->lcf->x_vars->nelts; i++) {
 
-        if (!(value = ngx_http_get_variable(r, index[i]))) {
-            continue;
-        }
+            if (!(value = ngx_http_get_variable(r, index[i]))) {
+                continue;
+            }
 
-        if (value->text.len == 0) {
-            continue;
-        }
+            if (value->text.len == 0) {
+                continue;
+            }
 
-        *b->last++ = 'X'; *b->last++ = '-';
+            *b->last++ = 'X'; *b->last++ = '-';
 
-        b->last = ngx_cpymem(b->last, var[index[i]].name.data,
-                             var[index[i]].name.len);
+            b->last = ngx_cpymem(b->last, var[index[i]].name.data,
+                                 var[index[i]].name.len);
 
-        *b->last++ = ':'; *b->last++ = ' ';
+            *b->last++ = ':'; *b->last++ = ' ';
 
-        b->last = ngx_cpymem(b->last, value->text.data, value->text.len);
+            b->last = ngx_cpymem(b->last, value->text.data, value->text.len);
 
-        *b->last++ = CR; *b->last++ = LF;
+            *b->last++ = CR; *b->last++ = LF;
+        }
     }