diff src/http/modules/proxy/ngx_http_proxy_handler.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 72eb30262aac
line wrap: on
line diff
--- a/src/http/modules/proxy/ngx_http_proxy_handler.c
+++ b/src/http/modules/proxy/ngx_http_proxy_handler.c
@@ -1284,6 +1284,10 @@ static char *ngx_http_proxy_merge_loc_co
     ngx_conf_merge_value(conf->lm_factor, prev->lm_factor, 0);
     ngx_conf_merge_sec_value(conf->default_expires, prev->default_expires, 0);
 
+    if (conf->x_vars == NULL) {
+        conf->x_vars = prev->x_vars;
+    }
+
     return NULL;
 }
 
@@ -1389,10 +1393,10 @@ static char *ngx_http_proxy_set_x_var(ng
     ngx_http_variable_t        *var;
     ngx_http_core_main_conf_t  *cmcf;
 
-    if (lcf->x_vars.elts == NULL) {
-        if (ngx_array_init(&lcf->x_vars, cf->pool, 4,
-                           sizeof(ngx_http_variable_t *)) == NGX_ERROR)
-        {
+    if (lcf->x_vars == NULL) {
+        lcf->x_vars = ngx_array_create(cf->pool, 4,
+                                       sizeof(ngx_http_variable_t *));
+        if (lcf->x_vars == NULL) {
             return NGX_CONF_ERROR;
         }
     }
@@ -1405,7 +1409,7 @@ static char *ngx_http_proxy_set_x_var(ng
     for (i = 0; i < cmcf->variables.nelts; i++) {
         if (ngx_strcasecmp(var[i].name.data, value[1].data) == 0) {
 
-            if (!(index = ngx_array_push(&lcf->x_vars))) {
+            if (!(index = ngx_array_push(lcf->x_vars))) {
                 return NGX_CONF_ERROR;
             }