Author: rjung
Date: Sun Oct 23 16:44:43 2011
New Revision: 1187926

URL: http://svn.apache.org/viewvc?rev=1187926&view=rev
Log:
Move rule extension parsing into a separate
reusable funtion.

Modified:
    tomcat/jk/trunk/native/common/jk_uri_worker_map.c

Modified: tomcat/jk/trunk/native/common/jk_uri_worker_map.c
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_uri_worker_map.c?rev=1187926&r1=1187925&r2=1187926&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_uri_worker_map.c (original)
+++ tomcat/jk/trunk/native/common/jk_uri_worker_map.c Sun Oct 23 16:44:43 2011
@@ -580,6 +580,105 @@ void uri_worker_map_ext(jk_uri_worker_ma
 
 }
 
+/* Parse rule extensions */
+void parse_rule_extensions(char *rule, rule_extension_t *extensions,
+                           jk_logger_t *l)
+{
+    char *param;
+#ifdef _MT_CODE_PTHREAD
+    char *lasts = NULL;
+#endif
+
+    extensions->reply_timeout = -1;
+    extensions->sticky_ignore = JK_FALSE;
+    extensions->stateless = JK_FALSE;
+    extensions->active = NULL;
+    extensions->disabled = NULL;
+    extensions->stopped = NULL;
+    extensions->activation_size = 0;
+    extensions->activation = NULL;
+    extensions->fail_on_status_size = 0;
+    extensions->fail_on_status = NULL;
+    extensions->fail_on_status_str = NULL;
+    extensions->use_server_error_pages = 0;
+
+#ifdef _MT_CODE_PTHREAD
+    param = strtok_r(rule, ";", &lasts);
+#else
+    param = strtok(rule, ";");
+#endif
+    if (param) {
+#ifdef _MT_CODE_PTHREAD
+        for (param = strtok_r(NULL, ";", &lasts); param; param = 
strtok_r(NULL, ";", &lasts)) {
+#else
+        for (param = strtok(NULL, ";"); param; param = strtok(NULL, ";")) {
+#endif
+            if (!strncmp(param, JK_UWMAP_EXTENSION_REPLY_TIMEOUT, 
strlen(JK_UWMAP_EXTENSION_REPLY_TIMEOUT))) {
+                extensions->reply_timeout = atoi(param + 
strlen(JK_UWMAP_EXTENSION_REPLY_TIMEOUT));
+            }
+            else if (!strncmp(param, JK_UWMAP_EXTENSION_STICKY_IGNORE, 
strlen(JK_UWMAP_EXTENSION_STICKY_IGNORE))) {
+                int val = atoi(param + 
strlen(JK_UWMAP_EXTENSION_STICKY_IGNORE));
+                if (val) {
+                    extensions->sticky_ignore = JK_TRUE;
+                }
+                else {
+                    extensions->sticky_ignore = JK_FALSE;
+                }
+            }
+            else if (!strncmp(param, JK_UWMAP_EXTENSION_STATELESS, 
strlen(JK_UWMAP_EXTENSION_STATELESS))) {
+                int val = atoi(param + strlen(JK_UWMAP_EXTENSION_STATELESS));
+                if (val) {
+                    extensions->stateless = JK_TRUE;
+                }
+                else {
+                    extensions->stateless = JK_FALSE;
+                }
+            }
+            else if (!strncmp(param, JK_UWMAP_EXTENSION_USE_SRV_ERRORS, 
strlen(JK_UWMAP_EXTENSION_USE_SRV_ERRORS))) {
+                extensions->use_server_error_pages = atoi(param + 
strlen(JK_UWMAP_EXTENSION_USE_SRV_ERRORS));
+            }
+            else if (!strncmp(param, JK_UWMAP_EXTENSION_ACTIVE, 
strlen(JK_UWMAP_EXTENSION_ACTIVE))) {
+                if (extensions->active)
+                    jk_log(l, JK_LOG_WARNING,
+                           "rule extension '%s' only allowed once",
+                           JK_UWMAP_EXTENSION_ACTIVE);
+                else
+                    extensions->active = param + 
strlen(JK_UWMAP_EXTENSION_ACTIVE);
+            }
+            else if (!strncmp(param, JK_UWMAP_EXTENSION_DISABLED, 
strlen(JK_UWMAP_EXTENSION_DISABLED))) {
+                if (extensions->disabled)
+                    jk_log(l, JK_LOG_WARNING,
+                           "rule extension '%s' only allowed once",
+                           JK_UWMAP_EXTENSION_DISABLED);
+                else
+                    extensions->disabled = param + 
strlen(JK_UWMAP_EXTENSION_DISABLED);
+            }
+            else if (!strncmp(param, JK_UWMAP_EXTENSION_STOPPED, 
strlen(JK_UWMAP_EXTENSION_STOPPED))) {
+                if (extensions->stopped)
+                    jk_log(l, JK_LOG_WARNING,
+                           "rule extension '%s' only allowed once",
+                           JK_UWMAP_EXTENSION_STOPPED);
+                else
+                    extensions->stopped = param + 
strlen(JK_UWMAP_EXTENSION_STOPPED);
+            }
+            else if (!strncmp(param, JK_UWMAP_EXTENSION_FAIL_ON_STATUS, 
strlen(JK_UWMAP_EXTENSION_FAIL_ON_STATUS))) {
+                if (extensions->fail_on_status_str)
+                    jk_log(l, JK_LOG_WARNING,
+                           "rule extension '%s' only allowed once",
+                           JK_UWMAP_EXTENSION_FAIL_ON_STATUS);
+                else
+                    extensions->fail_on_status_str = param + 
strlen(JK_UWMAP_EXTENSION_FAIL_ON_STATUS);
+            }
+            else {
+                jk_log(l, JK_LOG_WARNING,
+                       "unknown rule extension '%s'",
+                       param);
+            }
+        }
+    }
+}
+
+
 /* Add new entry to NEXT generation */
 int uri_worker_map_add(jk_uri_worker_map_t *uw_map,
                        const char *puri, const char *worker,
@@ -631,101 +730,8 @@ int uri_worker_map_add(jk_uri_worker_map
     }
 
     if (*uri == '/') {
-        char *w;
-        char *param;
-#ifdef _MT_CODE_PTHREAD
-        char *lasts = NULL;
-#endif
-
-        w = jk_pool_strdup(p, worker);
-        uwr->extensions.reply_timeout = -1;
-        uwr->extensions.sticky_ignore = JK_FALSE;
-        uwr->extensions.stateless = JK_FALSE;
-        uwr->extensions.active = NULL;
-        uwr->extensions.disabled = NULL;
-        uwr->extensions.stopped = NULL;
-        uwr->extensions.activation_size = 0;
-        uwr->extensions.activation = NULL;
-        uwr->extensions.fail_on_status_size = 0;
-        uwr->extensions.fail_on_status = NULL;
-        uwr->extensions.fail_on_status_str = NULL;
-        uwr->extensions.use_server_error_pages = 0;
-
-#ifdef _MT_CODE_PTHREAD
-        param = strtok_r(w, ";", &lasts);
-#else
-        param = strtok(w, ";");
-#endif
-        if (param) {
-#ifdef _MT_CODE_PTHREAD
-            for (param = strtok_r(NULL, ";", &lasts); param; param = 
strtok_r(NULL, ";", &lasts)) {
-#else
-            for (param = strtok(NULL, ";"); param; param = strtok(NULL, ";")) {
-#endif
-                if (!strncmp(param, JK_UWMAP_EXTENSION_REPLY_TIMEOUT, 
strlen(JK_UWMAP_EXTENSION_REPLY_TIMEOUT))) {
-                    uwr->extensions.reply_timeout = atoi(param + 
strlen(JK_UWMAP_EXTENSION_REPLY_TIMEOUT));
-                }
-                else if (!strncmp(param, JK_UWMAP_EXTENSION_STICKY_IGNORE, 
strlen(JK_UWMAP_EXTENSION_STICKY_IGNORE))) {
-                    int val = atoi(param + 
strlen(JK_UWMAP_EXTENSION_STICKY_IGNORE));
-                    if (val) {
-                        uwr->extensions.sticky_ignore = JK_TRUE;
-                    }
-                    else {
-                        uwr->extensions.sticky_ignore = JK_FALSE;
-                    }
-                }
-                else if (!strncmp(param, JK_UWMAP_EXTENSION_STATELESS, 
strlen(JK_UWMAP_EXTENSION_STATELESS))) {
-                    int val = atoi(param + 
strlen(JK_UWMAP_EXTENSION_STATELESS));
-                    if (val) {
-                        uwr->extensions.stateless = JK_TRUE;
-                    }
-                    else {
-                        uwr->extensions.stateless = JK_FALSE;
-                    }
-                }
-                else if (!strncmp(param, JK_UWMAP_EXTENSION_USE_SRV_ERRORS, 
strlen(JK_UWMAP_EXTENSION_USE_SRV_ERRORS))) {
-                    uwr->extensions.use_server_error_pages = atoi(param + 
strlen(JK_UWMAP_EXTENSION_USE_SRV_ERRORS));
-                }
-                else if (!strncmp(param, JK_UWMAP_EXTENSION_ACTIVE, 
strlen(JK_UWMAP_EXTENSION_ACTIVE))) {
-                    if (uwr->extensions.active)
-                        jk_log(l, JK_LOG_WARNING,
-                               "extension '%s' in uri worker map only allowed 
once",
-                               JK_UWMAP_EXTENSION_ACTIVE);
-                    else
-                        uwr->extensions.active = param + 
strlen(JK_UWMAP_EXTENSION_ACTIVE);
-                }
-                else if (!strncmp(param, JK_UWMAP_EXTENSION_DISABLED, 
strlen(JK_UWMAP_EXTENSION_DISABLED))) {
-                    if (uwr->extensions.disabled)
-                        jk_log(l, JK_LOG_WARNING,
-                               "extension '%s' in uri worker map only allowed 
once",
-                               JK_UWMAP_EXTENSION_DISABLED);
-                    else
-                        uwr->extensions.disabled = param + 
strlen(JK_UWMAP_EXTENSION_DISABLED);
-                }
-                else if (!strncmp(param, JK_UWMAP_EXTENSION_STOPPED, 
strlen(JK_UWMAP_EXTENSION_STOPPED))) {
-                    if (uwr->extensions.stopped)
-                        jk_log(l, JK_LOG_WARNING,
-                               "extension '%s' in uri worker map only allowed 
once",
-                               JK_UWMAP_EXTENSION_STOPPED);
-                    else
-                        uwr->extensions.stopped = param + 
strlen(JK_UWMAP_EXTENSION_STOPPED);
-                }
-                else if (!strncmp(param, JK_UWMAP_EXTENSION_FAIL_ON_STATUS, 
strlen(JK_UWMAP_EXTENSION_FAIL_ON_STATUS))) {
-                    if (uwr->extensions.fail_on_status_str)
-                        jk_log(l, JK_LOG_WARNING,
-                               "extension '%s' in uri worker map only allowed 
once",
-                               JK_UWMAP_EXTENSION_FAIL_ON_STATUS);
-                    else
-                        uwr->extensions.fail_on_status_str = param + 
strlen(JK_UWMAP_EXTENSION_FAIL_ON_STATUS);
-                }
-                else {
-                    jk_log(l, JK_LOG_WARNING,
-                           "unknown extension '%s' in uri worker map",
-                           param);
-                }
-            }
-        }
-
+        char *w = jk_pool_strdup(p, worker);
+        parse_rule_extensions(w, &uwr->extensions, l);
         uwr->source_type = source_type;
         uwr->worker_name = w;
         uwr->uri = uri;



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to