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]