mturk 2005/02/20 04:48:51
Modified: jk/native/common jk_uri_worker_map.c
Log:
Ensure there are no duplicates entries for uriworker map.
Revision Changes Path
1.47 +34 -12
jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.c
Index: jk_uri_worker_map.c
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- jk_uri_worker_map.c 20 Feb 2005 12:21:10 -0000 1.46
+++ jk_uri_worker_map.c 20 Feb 2005 12:48:51 -0000 1.47
@@ -95,7 +95,7 @@
unsigned i;
for (i = 0; i < uw_map->size; i++) {
- if (MATCH_TYPE_SUFFIX == uw_map->maps[i]->s->match_type) {
+ if (uw_map->maps[i]->s->match_type == MATCH_TYPE_SUFFIX) {
char *suffix_start;
for (suffix_start = strstr(uri, uw_map->maps[i]->suffix);
suffix_start;
@@ -217,19 +217,46 @@
int uri_worker_map_add(jk_uri_worker_map_t *uw_map,
const char *puri, const char *worker, jk_logger_t *l)
{
- uri_worker_record_t *uwr;
+ uri_worker_record_t *uwr = NULL;
char *uri;
unsigned int match_type = 0;
+ unsigned int i;
+ int allocated = 0;
JK_TRACE_ENTER(l);
+
+ if (*puri == '!') {
+ match_type = MATCH_TYPE_NO_MATCH;
+ puri++;
+ }
+
+ /* Find if duplicate entry */
+ for (i = 0; i < uw_map->size; i++) {
+ uwr = uw_map->maps[i];
+ if (strcmp(uwr->uri, puri) == 0) {
+ if (strcmp(uwr->worker_name, worker) == 0) {
+ jk_log(l, JK_LOG_DEBUG,
+ "map rule %s=%s already exists",
+ puri, worker);
+ JK_TRACE_EXIT(l);
+ return JK_TRUE;
+ }
+ else {
+ jk_log(l, JK_LOG_DEBUG,
+ "changing map rule %s=%s ",
+ puri, worker);
+ uwr->worker_name = worker;
+ JK_TRACE_EXIT(l);
+ return JK_TRUE;
+ }
+ }
+ }
if (uri_worker_map_realloc(uw_map) == JK_FALSE) {
JK_TRACE_EXIT(l);
return JK_FALSE;
}
- uwr =
- (uri_worker_record_t *) jk_pool_alloc(&uw_map->p,
- sizeof(uri_worker_record_t));
-
+ uwr = (uri_worker_record_t *)jk_pool_alloc(&uw_map->p,
+ sizeof(uri_worker_record_t));
if (!uwr) {
jk_log(l, JK_LOG_ERROR,
"can't alloc map entry");
@@ -238,11 +265,6 @@
}
uwr->suffix = NULL;
- if (*puri == '!') {
- match_type = MATCH_TYPE_NO_MATCH;
- puri++;
- }
-
uri = jk_pool_strdup(&uw_map->p, puri);
if (!uri || !worker) {
jk_log(l, JK_LOG_ERROR,
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]