-diff -Nru jakarta-tomcat-connectors-jk-1.2.5-src.orig/jk/native/apache-1.3/mod_jk.c jakarta-tomcat-connectors-jk-1.2.5-src/jk/native/apache-1.3/mod_jk.c
---- jakarta-tomcat-connectors-jk-1.2.5-src.orig/jk/native/apache-1.3/mod_jk.c 2004-05-14 15:02:21.110892712 +0000
-+++ jakarta-tomcat-connectors-jk-1.2.5-src/jk/native/apache-1.3/mod_jk.c 2004-05-14 19:43:05.275190512 +0000
-@@ -135,8 +135,14 @@
- table *envvars;
-
- server_rec *s;
-+
-+ array_header *pass_prefixes;
-+
- } jk_server_conf_t;
-
-+typedef struct {
-+ char* prefix;
-+} pass_prefix;
-
- /*
- * The "private", or subclass portion of the web server service class for
-@@ -1414,6 +1420,18 @@
- return NULL;
- }
-
-+static const char * jk_set_pass_prefix(cmd_parms * cmd, void * dummy, char * pass) {
-+ server_rec * server;
-+ jk_server_conf_t * config;
-+ pass_prefix *_prefix;
-+ server = cmd->server;
-+ config = (jk_server_conf_t *) ap_get_module_config(server->module_config, &jk_module);
-+ _prefix = ap_push_array (config->pass_prefixes);
-+ _prefix->prefix = (char *) ap_palloc(cmd->pool, strlen(pass) + 1);
-+ strcpy(_prefix->prefix, pass);
-+ return NULL;
-+}
-+
- /*
- * JkEnvVar Directive Handling
- *
-@@ -1564,6 +1582,9 @@
- {"JkWorkerProperty", jk_set_worker_property, NULL, RSRC_CONF, RAW_ARGS,
- "Set workers.properties formated directive"},
-
-+ {"JkPass", jk_set_pass_prefix, NULL, RSRC_CONF, TAKE1,
-+ "Set the prefix for URIs that shouldn't be procceded to a servlet-engine worker (multiple)" },
-+
- {NULL}
- };
-
-@@ -1579,11 +1600,30 @@
- /* Retrieve the worker name stored by jk_translate() */
- const char *worker_name = ap_table_get(r->notes, JK_WORKER_ID);
- int rc;
-+ server_rec * s;
-+ jk_server_conf_t * c;
-+ pass_prefix *list;
-+ pass_prefix *item;
-+ int i;
-
- if (r->proxyreq) {
- return HTTP_INTERNAL_SERVER_ERROR;
- }
-
-+ s = r->server;
-+ c = (jk_server_conf_t *) ap_get_module_config(s->module_config, &jk_module);
-+ list = (pass_prefix *) c->pass_prefixes->elts;
-+ for (i = 0; i < c->pass_prefixes->nelts; ++i) {
-+ item = &list[i];
-+ if (item->prefix) {
-+ char *pass = strstr(r->uri, item->prefix);
-+ if (pass && pass == r->uri) {
-+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_DEBUG, s, "Skipping URI: %s", r->uri);
-+ return DECLINED;
-+ }
-+ }
-+ }
-+
- /* Set up r->read_chunked flags for chunked encoding, if present */
- if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_DECHUNK))) {
- return rc;
-@@ -1771,6 +1811,9 @@
-
- c->s = s;
-
-+ c->pass_prefixes = ap_make_array(p, 4, sizeof(pass_prefix));
-+ ap_log_error( APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, s, "JkPass hack configured");
-+
- return c;
- }
-