Author: mturk Date: Sun Jul 9 01:44:12 2006 New Revision: 420258 URL: http://svn.apache.org/viewvc?rev=420258&view=rev Log: Allow multiple mappings with JKMount directive as we have for uriworkermap.properties. The /servlets-examples|/* worker will be treated as two mount directives: /servlets-examples worker /servlets-examples/* worker
Modified: tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.c Modified: tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.c?rev=420258&r1=420257&r2=420258&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.c Sun Jul 9 01:44:12 2006 @@ -365,24 +365,45 @@ if (sz > 0) { int i; for (i = 0; i < sz; i++) { - if (uri_worker_map_add - (uw_map, jk_map_name_at(init_data, i), - jk_map_value_at(init_data, i), l) == JK_FALSE) { + const char *u = jk_map_name_at(init_data, i); + const char *w = jk_map_value_at(init_data, i); + /* Multiple mappings like : + * /servlets-examples|/ * + * will create two mappings: + * /servlets-examples + * and: + * /servlets-examples/ * + */ + if (strchr(u, '|')) { + char *s, *r = strdup(u); + s = strchr(r, '|'); + *(s++) = '\0'; + /* Add first mapping */ + if (!uri_worker_map_add(uw_map, r, w, l)) { + jk_log(l, JK_LOG_ERROR, + "invalid mapping rule %s->%s", r, w); + rc = JK_FALSE; + } + for (; *s; s++) + *(s - 1) = *s; + *(s - 1) = '\0'; + /* add second mapping */ + if (!uri_worker_map_add(uw_map, r, w, l)) { + jk_log(l, JK_LOG_ERROR, + "invalid mapping rule %s->%s", r, w); + rc = JK_FALSE; + } + free(r); + } + else if (!uri_worker_map_add(uw_map, u, w, l)) { + jk_log(l, JK_LOG_ERROR, + "invalid mapping rule %s->%s", + u, w); rc = JK_FALSE; break; } - } - - if (i == sz) { - if (JK_IS_DEBUG_LEVEL(l)) - jk_log(l, JK_LOG_DEBUG, - "there are %d rules", - uw_map->size); - } - else { - jk_log(l, JK_LOG_ERROR, - "Parsing error"); - rc = JK_FALSE; + if (rc == JK_FALSE) + break; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]