mturk 2004/12/17 03:24:38 Modified: jk/native/common jk_uri_worker_map.c Log: Fix url rewrite for jksessionid. It should fix all jksessionid bugs, cause previous implemantation didn't handle that properly. Revision Changes Path 1.39 +19 -8 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.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- jk_uri_worker_map.c 13 Dec 2004 16:59:58 -0000 1.38 +++ jk_uri_worker_map.c 17 Dec 2004 11:24:38 -0000 1.39 @@ -659,7 +659,9 @@ unsigned int i; int best_match = -1; unsigned int longest_match = 0; - char *url_rewrite; + char *url_rewrite = NULL; + char rewrite_char; + char *rv = NULL; JK_TRACE_ENTER(l); if (!uw_map || !uri) { @@ -675,6 +677,7 @@ } url_rewrite = strstr(uri, JK_PATH_SESSION_IDENTIFIER); if (url_rewrite) { + rewrite_char = *url_rewrite; *url_rewrite = '\0'; } jk_no2slash(uri); @@ -686,7 +689,7 @@ if (uw_map->no_size && is_nomap_match(uw_map, uri, l)) { /* Found a no match */ JK_TRACE_EXIT(l); - return NULL; + goto cleanup;; } for (i = 0; i < uw_map->size; i++) { uri_worker_record_t *uwr = uw_map->maps[i]; @@ -713,7 +716,8 @@ "Found a wildchar match %s -> %s\n", uwr->worker_name, uwr->context); JK_TRACE_EXIT(l); - return wname; + rv = wname; + goto cleanup; } } else if (JK_STRNCMP(uwr->context, uri, uwr->ctxt_len) == 0) { @@ -723,7 +727,8 @@ "Found an exact match %s -> %s\n", uwr->worker_name, uwr->context); JK_TRACE_EXIT(l); - return uwr->worker_name; + rv = uwr->worker_name; + goto cleanup; } } else if (uwr->match_type == MATCH_TYPE_CONTEXT) { @@ -792,7 +797,8 @@ if (best_match != -1) { JK_TRACE_EXIT(l); - return uw_map->maps[best_match]->worker_name; + rv = uw_map->maps[best_match]->worker_name; + goto cleanup; } else { /* @@ -810,9 +816,14 @@ "Found a security fraud in '%s'\n", uri); JK_TRACE_EXIT(l); - return uw_map->maps[fraud]->worker_name; + rv = uw_map->maps[fraud]->worker_name; + goto cleanup; } } JK_TRACE_EXIT(l); - return NULL; + +cleanup: + if (url_rewrite) + *url_rewrite = rewrite_char; + return rv; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]