You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2011/10/23 18:44:43 UTC
svn commit: r1187926 - /tomcat/jk/trunk/native/common/jk_uri_worker_map.c
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org