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 2008/01/18 22:14:25 UTC
svn commit: r613274 - in /tomcat/connectors/trunk/jk/native: apache-1.3/
apache-2.0/ common/ iis/
Author: rjung
Date: Fri Jan 18 13:14:24 2008
New Revision: 613274
URL: http://svn.apache.org/viewvc?rev=613274&view=rev
Log:
Add extension attribute parsing to uri worker map.
First uses are reply_timeout and activation status per mount.
Usage currently only implemented for httpd, IIS to follow.
Modified:
tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h
tomcat/connectors/trunk/jk/native/common/jk_service.h
tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.c
tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.h
tomcat/connectors/trunk/jk/native/common/jk_util.c
tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c?rev=613274&r1=613273&r2=613274&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Fri Jan 18 13:14:24 2008
@@ -612,6 +612,7 @@
request_rec *r = private_data->r;
char *ssl_temp = NULL;
const char *reply_timeout = NULL;
+ rule_extension_t *e;
/* Copy in function pointers (which are really methods) */
s->start_response = ws_start_response;
@@ -642,9 +643,20 @@
if (conf->options & JK_OPT_FLUSHEADER)
s->flush_header = 1;
+ e = (rule_extension_t *)ap_get_module_config(r->request_config, &jk_module);
+ if (e) {
+ s->extension.reply_timeout = e->reply_timeout;
+ if (e->activation) {
+ s->extension.activation = ap_palloc(r->pool, e->size * sizeof(int));
+ memcpy(s->extension.activation, e->activation, e->size * sizeof(int));
+ }
+ }
reply_timeout = ap_table_get(r->subprocess_env, "JK_REPLY_TIMEOUT");
- if (reply_timeout)
- s->reply_timeout = atoi(reply_timeout);
+ if (reply_timeout) {
+ int r = atoi(reply_timeout);
+ if (r >= 0)
+ s->extension.reply_timeout = r;
+ }
if (conf->options & JK_OPT_DISABLEREUSE)
s->disable_reuse = 1;
@@ -2712,6 +2724,13 @@
"Error in creating the workers."
" Please consult your mod_jk log file '%s'.", conf->log_file);
}
+ uri_worker_map_ext(conf->uw_map, conf->log);
+ for (srv = s; srv; srv = srv->next) {
+ jk_server_conf_t *sconf = (jk_server_conf_t *)ap_get_module_config(srv->module_config,
+ &jk_module);
+ if (conf->uw_map != sconf->uw_map)
+ uri_worker_map_ext(sconf->uw_map, sconf->log);
+ }
}
@@ -2722,6 +2741,10 @@
*/
static int jk_translate(request_rec * r)
{
+ rule_extension_t **ext = ap_palloc(r->pool, sizeof(rule_extension_t *));
+ *ext = NULL;
+ ap_set_module_config(r->request_config, &jk_module, ext);
+
if (!r->proxyreq) {
jk_server_conf_t *conf =
(jk_server_conf_t *) ap_get_module_config(r->server->
@@ -2749,9 +2772,12 @@
r->uri);
return DECLINED;
}
- else
- worker = map_uri_to_worker(conf->uw_map, clean_uri,
- NULL, conf->log);
+ else {
+ rule_extension_t *e;
+ worker = map_uri_to_worker_ext(conf->uw_map, clean_uri,
+ NULL, &e, conf->log);
+ ap_set_module_config(r->request_config, &jk_module, e);
+ }
/* Don't know the worker, ForwardDirectories is set, there is a
* previous request for which the handler is JK_HANDLER (as set by
Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c?rev=613274&r1=613273&r2=613274&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Fri Jan 18 13:14:24 2008
@@ -626,6 +626,7 @@
request_rec *r = private_data->r;
char *ssl_temp = NULL;
const char *reply_timeout = NULL;
+ rule_extension_t *e;
/* Copy in function pointers (which are really methods) */
s->start_response = ws_start_response;
@@ -654,9 +655,20 @@
if (conf->options & JK_OPT_FLUSHEADER)
s->flush_header = 1;
+ e = (rule_extension_t *)ap_get_module_config(r->request_config, &jk_module);
+ if (e) {
+ s->extension.reply_timeout = e->reply_timeout;
+ if (e->activation) {
+ s->extension.activation = apr_palloc(r->pool, e->size * sizeof(int));
+ memcpy(s->extension.activation, e->activation, e->size * sizeof(int));
+ }
+ }
reply_timeout = apr_table_get(r->subprocess_env, "JK_REPLY_TIMEOUT");
- if (reply_timeout)
- s->reply_timeout = atoi(reply_timeout);
+ if (reply_timeout) {
+ int r = atoi(reply_timeout);
+ if (r >= 0)
+ s->extension.reply_timeout = r;
+ }
if (conf->options & JK_OPT_DISABLEREUSE)
s->disable_reuse = 1;
@@ -2196,9 +2208,12 @@
xconf->s->server_hostname ? xconf->s->server_hostname : "_default_",
r->uri);
}
- else
- worker_name = map_uri_to_worker(xconf->uw_map, r->uri,
- NULL, xconf->log);
+ else {
+ rule_extension_t *e;
+ worker_name = map_uri_to_worker_ext(xconf->uw_map, r->uri,
+ NULL, &e, xconf->log);
+ ap_set_module_config(r->request_config, &jk_module, e);
+ }
if (worker_name == NULL && worker_env.num_of_workers) {
worker_name = worker_env.worker_list[0];
@@ -2951,6 +2966,14 @@
conf->was_initialized = JK_TRUE;
if (init_jk(pconf, conf, s) == JK_FALSE)
return HTTP_INTERNAL_SERVER_ERROR;
+ uri_worker_map_ext(conf->uw_map, conf->log);
+ for (srv = s; srv; srv = srv->next) {
+ jk_server_conf_t *sconf = (jk_server_conf_t *)ap_get_module_config(srv->module_config,
+ &jk_module);
+ if (conf->uw_map != sconf->uw_map)
+ uri_worker_map_ext(sconf->uw_map, sconf->log);
+ }
+
}
}
@@ -2962,6 +2985,10 @@
*/
static int jk_translate(request_rec * r)
{
+ rule_extension_t **ext = apr_palloc(r->pool, sizeof(rule_extension_t *));
+ *ext = NULL;
+ ap_set_module_config(r->request_config, &jk_module, ext);
+
if (!r->proxyreq) {
jk_server_conf_t *conf =
(jk_server_conf_t *) ap_get_module_config(r->server->
@@ -3032,9 +3059,12 @@
r->uri);
return DECLINED;
}
- else
- worker = map_uri_to_worker(conf->uw_map, r->uri,
- NULL, conf->log);
+ else {
+ rule_extension_t *e;
+ worker = map_uri_to_worker_ext(conf->uw_map, r->uri,
+ NULL, &e, conf->log);
+ ap_set_module_config(r->request_config, &jk_module, e);
+ }
if (worker) {
r->handler = apr_pstrdup(r->pool, JK_HANDLER);
@@ -3189,9 +3219,12 @@
r->uri);
return DECLINED;
}
- else
- worker = map_uri_to_worker(conf->uw_map, r->uri,
- NULL, conf->log);
+ else {
+ rule_extension_t *e;
+ worker = map_uri_to_worker_ext(conf->uw_map, r->uri,
+ NULL, &e, conf->log);
+ ap_set_module_config(r->request_config, &jk_module, e);
+ }
if (worker) {
r->handler = apr_pstrdup(r->pool, JK_HANDLER);
Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?rev=613274&r1=613273&r2=613274&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Fri Jan 18 13:14:24 2008
@@ -1816,8 +1816,7 @@
while (1) {
int rc = 0;
/* Allow to overwrite reply_timeout on a per URL basis via service struct */
- int reply_timeout = s->reply_timeout;
-
+ int reply_timeout = s->extension.reply_timeout;
if (reply_timeout < 0)
reply_timeout = p->worker->reply_timeout;
/* If we set a reply timeout, check if something is available */
Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h?rev=613274&r1=613273&r2=613274&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h Fri Jan 18 13:14:24 2008
@@ -82,6 +82,11 @@
#define JK_LB_STATE_TEXT_PROBE ("ERR/PRB")
#define JK_LB_STATE_TEXT_MAX (JK_LB_STATE_PROBE)
#define JK_LB_STATE_TEXT_DEF (JK_LB_STATE_TEXT_IDLE)
+/* JK_LB_ACTIVATION_UNSET is not allowed as an actual worker state. */
+/* It will not work e.g. when the status worker tries to show the state. */
+/* It is only used in rule extension data to indicate, that the */
+/* activation state should not be overwritten. */
+#define JK_LB_ACTIVATION_UNSET (-1)
#define JK_LB_ACTIVATION_ACTIVE (0)
#define JK_LB_ACTIVATION_DISABLED (1)
#define JK_LB_ACTIVATION_STOPPED (2)
Modified: tomcat/connectors/trunk/jk/native/common/jk_service.h
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_service.h?rev=613274&r1=613273&r2=613274&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_service.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_service.h Fri Jan 18 13:14:24 2008
@@ -75,6 +75,16 @@
typedef struct jk_endpoint jk_endpoint_t;
typedef struct jk_worker jk_worker_t;
+struct svc_extension
+{
+ /* reply_timeout overwrite */
+ int reply_timeout;
+ /* activation state overwrites for load balancers */
+ /* Dynamically allocated array with one entry per lb member. */
+ int *activation;
+};
+typedef struct svc_extension svc_extension_t;
+
/*
* The web server service 'class'. An instance of this class is created
* for each request which is forwarded from the web server to the servlet
@@ -222,9 +232,9 @@
int flush_header;
/*
- * If >= 0, overwrite the worker reply_timeout
+ * service extensions
*/
- int reply_timeout;
+ svc_extension_t extension;
/*
* JK_TRUE if response headers have been sent back
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=613274&r1=613273&r2=613274&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 Fri Jan 18 13:14:24 2008
@@ -28,6 +28,8 @@
#include "jk_map.h"
#include "jk_mt.h"
#include "jk_uri_worker_map.h"
+#include "jk_worker.h"
+#include "jk_lb_worker.h"
#ifdef WIN32
#define JK_STRCMP strcasecmp
@@ -37,6 +39,11 @@
#define JK_STRNCMP strncmp
#endif
+#define JK_UWMAP_EXTENSION_REPLY_TIMEOUT "reply_timeout="
+#define JK_UWMAP_EXTENSION_ACTIVE "active="
+#define JK_UWMAP_EXTENSION_DISABLE "disable="
+#define JK_UWMAP_EXTENSION_STOP "stop="
+
#define IND_THIS(x) ((x)[uw_map->index])
#define IND_NEXT(x) ((x)[(uw_map->index+1) % 2])
@@ -341,6 +348,112 @@
return JK_TRUE;
}
+static void extract_activation(lb_worker_t *lb,
+ int *activations,
+ char *workers,
+ int activation,
+ jk_logger_t *l)
+{
+ int i;
+ char *worker;
+#ifdef _MT_CODE_PTHREAD
+ char *lasts;
+#endif
+
+ JK_TRACE_ENTER(l);
+
+#ifdef _MT_CODE_PTHREAD
+ for (worker = strtok_r(workers, ",", &lasts);
+ worker; worker = strtok_r(NULL, "&", &lasts)) {
+#else
+ for (worker = strtok(workers, ","); worker; worker = strtok(NULL, ",")) {
+#endif
+ for (i=0; i<lb->num_of_workers; i++) {
+ if (!strcmp(worker, lb->lb_workers[i].name))
+ activations[i] = activation;
+ }
+ }
+
+ JK_TRACE_EXIT(l);
+
+}
+
+void uri_worker_map_ext(jk_uri_worker_map_t *uw_map, jk_logger_t *l)
+{
+ unsigned int i;
+
+ JK_TRACE_ENTER(l);
+
+ for (i = 0; i < IND_NEXT(uw_map->size); i++) {
+ uri_worker_record_t *uwr = IND_NEXT(uw_map->maps)[i];
+ jk_worker_t *jw = wc_get_worker_for_name(uwr->worker_name, l);
+ if (JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "Checking extension for worker %d: %s of type %s (%d)",
+ i, uwr->worker_name, wc_get_name_for_type(jw->type,l), jw->type);
+
+ if (jw->type == JK_LB_WORKER_TYPE &&
+ (uwr->extensions.active || uwr->extensions.disable || uwr->extensions.stop)) {
+ int j;
+ lb_worker_t *lb = (lb_worker_t *)jw->worker_private;
+ jk_pool_t *p;
+ if (!uwr->extensions.activation) {
+ uwr->extensions.size = lb->num_of_workers;
+ if (uwr->source_type == SOURCE_TYPE_URIMAP)
+ p = &IND_NEXT(uw_map->p_dyn);
+ else
+ p = &uw_map->p;
+ uwr->extensions.activation = (int *)jk_pool_alloc(p,
+ uwr->extensions.size * sizeof(int));
+ if (!uwr->extensions.activation) {
+ jk_log(l, JK_LOG_ERROR,
+ "can't alloc extensions activation list");
+ continue;
+ } else if (JK_IS_DEBUG_LEVEL(l))
+ jk_log(l, JK_LOG_DEBUG,
+ "Allocated activations array of size %d for lb worker %s",
+ uwr->extensions.size, uwr->worker_name);
+ for (j=0; j<uwr->extensions.size; j++) {
+ uwr->extensions.activation[j] = JK_LB_ACTIVATION_UNSET;
+ }
+ }
+ if (uwr->extensions.active)
+ extract_activation(lb, uwr->extensions.activation,
+ uwr->extensions.active, JK_LB_ACTIVATION_ACTIVE, l);
+ if (uwr->extensions.disable)
+ extract_activation(lb, uwr->extensions.activation,
+ uwr->extensions.disable, JK_LB_ACTIVATION_DISABLED, l);
+ if (uwr->extensions.stop)
+ extract_activation(lb, uwr->extensions.activation,
+ uwr->extensions.stop, JK_LB_ACTIVATION_STOPPED, l);
+ }
+ else if (uwr->extensions.active) {
+ jk_log(l, JK_LOG_WARNING,
+ "Worker %s is not of type lb, activation extension "
+ JK_UWMAP_EXTENSION_ACTIVE " for %s ignored",
+ uwr->worker_name, uwr->extensions.active);
+ }
+ else if (uwr->extensions.disable) {
+ jk_log(l, JK_LOG_WARNING,
+ "Worker %s is not of type lb, activation extension "
+ JK_UWMAP_EXTENSION_DISABLE " for %s ignored",
+ uwr->worker_name, uwr->extensions.disable);
+ }
+ else if (uwr->extensions.stop) {
+ jk_log(l, JK_LOG_WARNING,
+ "Worker %s is not of type lb, activation extension "
+ JK_UWMAP_EXTENSION_STOP " for %s ignored",
+ uwr->worker_name, uwr->extensions.stop);
+ }
+ }
+ uw_map->index = (uw_map->index + 1) % 2;
+ jk_reset_pool(&(IND_NEXT(uw_map->p_dyn)));
+
+ JK_TRACE_EXIT(l);
+ return;
+
+}
+
int uri_worker_map_add(jk_uri_worker_map_t *uw_map,
const char *puri, const char *worker,
unsigned int source_type, jk_logger_t *l)
@@ -391,11 +504,63 @@
}
if (*uri == '/') {
+ char *w;
+ char *param;
+#ifdef _MT_CODE_PTHREAD
+ char *lasts;
+#endif
+
+ w = jk_pool_strdup(p, worker);
+ uwr->extensions.reply_timeout = -1;
+ uwr->extensions.active = NULL;
+ uwr->extensions.disable = NULL;
+ uwr->extensions.stop = NULL;
+ uwr->extensions.size = 0;
+ uwr->extensions.activation = NULL;
+
+#ifdef _MT_CODE_PTHREAD
+ param = strtok_r(w, ";", &lasts);
+#else
+ param = strtok(w, ";");
+#endif
+ if (param) {
+#ifdef _MT_CODE_PTHREAD
+ for (; param; param = strtok_r(NULL, ";", &lasts)) {
+#else
+ for (; 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_ACTIVE, strlen(JK_UWMAP_EXTENSION_ACTIVE))) {
+ if (uwr->extensions.active)
+ jk_log(l, JK_LOG_WARNING,
+ "active extension in uriworker map only allowed once");
+ else
+ uwr->extensions.active = param + strlen(JK_UWMAP_EXTENSION_ACTIVE);
+ }
+ else if (!strncmp(param, JK_UWMAP_EXTENSION_DISABLE, strlen(JK_UWMAP_EXTENSION_DISABLE))) {
+ if (uwr->extensions.disable)
+ jk_log(l, JK_LOG_WARNING,
+ "disable extension in uriworker map only allowed once");
+ else
+ uwr->extensions.disable = param + strlen(JK_UWMAP_EXTENSION_DISABLE);
+ }
+ else if (!strncmp(param, JK_UWMAP_EXTENSION_STOP, strlen(JK_UWMAP_EXTENSION_STOP))) {
+ if (uwr->extensions.stop)
+ jk_log(l, JK_LOG_WARNING,
+ "stop extension in uriworker map only allowed once");
+ else
+ uwr->extensions.stop = param + strlen(JK_UWMAP_EXTENSION_STOP);
+ }
+ }
+ }
+
+ uwr->source_type = source_type;
+ uwr->worker_name = w;
uwr->uri = uri;
uwr->context = uri;
- uwr->worker_name = jk_pool_strdup(p, worker);
uwr->context_len = strlen(uwr->context);
- uwr->source_type = source_type;
if (strchr(uri, '*') ||
strchr(uri, '?')) {
/* Something like
@@ -620,9 +785,10 @@
return JK_FALSE;
}
-const char *map_uri_to_worker(jk_uri_worker_map_t *uw_map,
- const char *uri, const char *vhost,
- jk_logger_t *l)
+const char *map_uri_to_worker_ext(jk_uri_worker_map_t *uw_map,
+ const char *uri, const char *vhost,
+ rule_extension_t **extensions,
+ jk_logger_t *l)
{
unsigned int i;
unsigned int vhost_len;
@@ -632,11 +798,12 @@
JK_TRACE_ENTER(l);
- if (!uw_map || !uri) {
+ if (!uw_map || !uri || !extensions) {
JK_LOG_NULL_PARAMS(l);
JK_TRACE_EXIT(l);
return NULL;
}
+ *extensions = NULL;
if (*uri != '/') {
jk_log(l, JK_LOG_WARNING,
"Uri %s is invalid. Uri must start with /", uri);
@@ -738,6 +905,7 @@
}
if (rv >= 0) {
+ *extensions = &(IND_THIS(uw_map->maps)[rv]->extensions);
JK_TRACE_EXIT(l);
return IND_THIS(uw_map->maps)[rv]->worker_name;
}
@@ -745,6 +913,14 @@
return NULL;
}
+const char *map_uri_to_worker(jk_uri_worker_map_t *uw_map,
+ const char *uri, const char *vhost,
+ jk_logger_t *l)
+{
+ rule_extension_t *ext;
+ return map_uri_to_worker_ext(uw_map, uri, vhost, &ext, l);
+}
+
int uri_worker_map_load(jk_uri_worker_map_t *uw_map,
jk_logger_t *l)
{
@@ -799,8 +975,6 @@
rc = JK_TRUE;
}
jk_map_free(&map);
- uw_map->index = (uw_map->index + 1) % 2;
- jk_reset_pool(&(IND_NEXT(uw_map->p_dyn)));
return rc;
}
@@ -838,6 +1012,7 @@
return JK_TRUE;
}
rc = uri_worker_map_load(uw_map, l);
+ uri_worker_map_ext(uw_map, l);
JK_LEAVE_CS(&(uw_map->cs), rc);
jk_log(l, JK_LOG_INFO,
"Reloaded urimaps from %s", uw_map->fname);
Modified: tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.h
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.h?rev=613274&r1=613273&r2=613274&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_uri_worker_map.h Fri Jan 18 13:14:24 2008
@@ -68,6 +68,23 @@
#define SOURCE_TYPE_TEXT_DISCOVER ("ajp14")
#define JK_MAX_URI_LEN 4095
+
+struct rule_extension
+{
+ /* reply_timeout overwrite */
+ int reply_timeout;
+ /* activation state overwrites for load balancers */
+ /* Number of elements in the array activations. */
+ int size;
+ /* Dynamically allocated array with one entry per lb member. */
+ int *activation;
+ /* Temporary storage for the original extension strings. */
+ char *active;
+ char *disable;
+ char *stop;
+};
+typedef struct rule_extension rule_extension_t;
+
struct uri_worker_record
{
/* Original uri for logging */
@@ -87,6 +104,9 @@
/* char length of the context */
size_t context_len;
+
+ /* extended mapping properties */
+ rule_extension_t extensions;
};
typedef struct uri_worker_record uri_worker_record_t;
@@ -146,6 +166,8 @@
int uri_worker_map_open(jk_uri_worker_map_t *uw_map,
jk_map_t *init_data, jk_logger_t *l);
+void uri_worker_map_ext(jk_uri_worker_map_t *uw_map, jk_logger_t *l);
+
int uri_worker_map_add(jk_uri_worker_map_t *uw_map,
const char *puri, const char *worker,
unsigned int source_type, jk_logger_t *l);
@@ -153,6 +175,11 @@
const char *map_uri_to_worker(jk_uri_worker_map_t *uw_map,
const char *uri, const char *vhost,
jk_logger_t *l);
+
+const char *map_uri_to_worker_ext(jk_uri_worker_map_t *uw_map,
+ const char *uri, const char *vhost,
+ rule_extension_t **extensions,
+ jk_logger_t *l);
int uri_worker_map_load(jk_uri_worker_map_t *uw_map,
jk_logger_t *l);
Modified: tomcat/connectors/trunk/jk/native/common/jk_util.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.c?rev=613274&r1=613273&r2=613274&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_util.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_util.c Fri Jan 18 13:14:24 2008
@@ -1867,7 +1867,8 @@
s->reco_status = RECO_NONE;
s->flush_packets = JK_FALSE;
s->flush_header = JK_FALSE;
- s->reply_timeout = -1;
+ s->extension.reply_timeout = -1;
+ s->extension.activation = NULL;
s->response_started = JK_FALSE;
s->http_response_status = JK_HTTP_OK;
s->uw_map = NULL;
Modified: tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c?rev=613274&r1=613273&r2=613274&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c (original)
+++ tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c Fri Jan 18 13:14:24 2008
@@ -1779,6 +1779,7 @@
if (wc_open(workers_map, &worker_env, logger)) {
rc = JK_TRUE;
}
+ uri_worker_map_ext(uw_map, logger);
}
else
jk_log(logger, JK_LOG_EMERG,
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org