]> granicus.if.org Git - apache/commitdiff
Add pool to functions for setting worker and balancer parameters.
authorWilliam A. Rowe Jr <wrowe@apache.org>
Wed, 11 Aug 2004 23:00:07 +0000 (23:00 +0000)
committerWilliam A. Rowe Jr <wrowe@apache.org>
Wed, 11 Aug 2004 23:00:07 +0000 (23:00 +0000)
Still have no idea why that doesn't work without duping as JeanFrederic reported.

Submitted by: mturk

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@104615 13f79535-47bb-0310-9956-ffa450edef68

modules/proxy/mod_proxy.c

index a5cade2a7949527fab77726c1847248c6627eaaa..b6fe0306a7b0c56f3bc3f226a1ea2ec85a292890 100644 (file)
@@ -82,7 +82,8 @@ static unsigned char hex2c(const char* p) {
         (w)->io_buffer_size_set   = (c)->io_buffer_size_set;    \
     } while (0)
 
-static const char *set_worker_param(proxy_worker *worker,
+static const char *set_worker_param(apr_pool_t *p,
+                                    proxy_worker *worker,
                                     const char *key,
                                     const char *val)
 {
@@ -160,20 +161,27 @@ static const char *set_worker_param(proxy_worker *worker,
             return "KeepAlive must be On|Off";
         worker->keepalive_set = 1;
     }    
+    else if (!strcasecmp(key, "route")) {
+        worker->route = apr_pstrdup(p, val);
+    }
+    else if (!strcasecmp(key, "redirect")) {
+        worker->redirect = apr_pstrdup(p, val);
+    }
     else {
         return "unknown parameter";
     }
     return NULL;
 }
 
-static const char *set_balancer_param(proxy_balancer *balancer,
+static const char *set_balancer_param(apr_pool_t *p,
+                                      proxy_balancer *balancer,
                                       const char *key,
                                       const char *val)
 {
 
     int ival;
     if (!strcasecmp(key, "stickysession")) {
-        balancer->sticky = val;
+        balancer->sticky = apr_pstrdup(p, val);
     }
     else if (!strcasecmp(key, "nofailover")) {
         if (!strcasecmp(val, "on"))
@@ -186,7 +194,7 @@ static const char *set_balancer_param(proxy_balancer *balancer,
     else if (!strcasecmp(key, "timeout")) {
         ival = atoi(val);
         if (ival < 1)
-            return "timeout must be al least one second";
+            return "timeout must be at least one second";
         balancer->timeout = apr_time_from_sec(ival);
     }
     else {
@@ -886,7 +894,8 @@ static const char *
                 return apr_pstrcat(cmd->temp_pool, "ProxyPass ", err, NULL);
         }        
         for (i = 0; i < arr->nelts; i++) {
-            const char *err = set_balancer_param(balancer, elts[i].key, elts[i].val);
+            const char *err = set_balancer_param(cmd->pool, balancer, elts[i].key,
+                                                 elts[i].val);
             if (err)
                 return apr_pstrcat(cmd->temp_pool, "ProxyPass ", err, NULL);
         }
@@ -901,7 +910,8 @@ static const char *
         PROXY_COPY_CONF_PARAMS(worker, conf);
 
         for (i = 0; i < arr->nelts; i++) {
-            const char *err = set_worker_param(worker, elts[i].key, elts[i].val);
+            const char *err = set_worker_param(cmd->pool, worker, elts[i].key,
+                                               elts[i].val);
             if (err)
                 return apr_pstrcat(cmd->temp_pool, "ProxyPass ", err, NULL);
         }
@@ -1275,7 +1285,8 @@ static const char *add_member(cmd_parms *cmd, void *dummy, const char *arg)
     arr = apr_table_elts(params);
     elts = (const apr_table_entry_t *)arr->elts;
     for (i = 0; i < arr->nelts; i++) {
-        const char *err = set_worker_param(worker, elts[i].key, elts[i].val);
+        const char *err = set_worker_param(cmd->pool, worker, elts[i].key,
+                                           elts[i].val);
         if (err)
             return apr_pstrcat(cmd->temp_pool, "BalancerMember ", err, NULL);
     }