billbarker 2003/06/26 19:54:18 Modified: jk/native/common jk_uri_worker_map.c jk_uri_worker_map.h Log: Fix problem with URLs that contain "//". This is essentially what Apache/httpd does in location_walk. Reported by: Palle Girgensohn <[EMAIL PROTECTED]> Revision Changes Path 1.15 +32 -7 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.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- jk_uri_worker_map.c 21 Apr 2002 22:57:11 -0000 1.14 +++ jk_uri_worker_map.c 27 Jun 2003 02:54:17 -0000 1.15 @@ -453,6 +453,32 @@ return JK_FALSE; } +void jk_no2slash(char *name) +{ + char *d, *s; + + s = d = name; + +#if defined(WIN32) + /* Check for UNC names. Leave leading two slashes. */ + if (s[0] == '/' && s[1] == '/') + *d++ = *s++; +#endif + + while (*s) { + if ((*d++ = *s) == '/') { + do { + ++s; + } while (*s == '/'); + } + else { + ++s; + } + } + *d = '\0'; +} + + char *map_uri_to_worker(jk_uri_worker_map_t *uw_map, const char *uri, jk_logger_t *l) @@ -464,17 +490,16 @@ unsigned i; unsigned best_match = -1; unsigned longest_match = 0; - char * clean_uri = NULL; - char *url_rewrite = strstr(uri, JK_PATH_SESSION_IDENTIFIER); + char * clean_uri = jk_pool_strdup(&uw_map->tp,uri); + char *url_rewrite = strstr(clean_uri, JK_PATH_SESSION_IDENTIFIER); if(url_rewrite) { - clean_uri = jk_pool_strdup(&uw_map->tp,uri); - url_rewrite = strstr(clean_uri, JK_PATH_SESSION_IDENTIFIER); *url_rewrite = '\0'; - uri = clean_uri; } + jk_no2slash(clean_uri); + uri = clean_uri; - jk_log(l, JK_LOG_DEBUG, "Attempting to map URI '%s'\n", uri); + jk_log(l, JK_LOG_DEBUG, "Attempting to map URI '%s'\n", uri); for(i = 0 ; i < uw_map->size ; i++) { uri_worker_record_t *uwr = uw_map->maps[i]; 1.6 +3 -1 jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.h Index: jk_uri_worker_map.h =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- jk_uri_worker_map.h 4 Dec 2001 19:44:23 -0000 1.5 +++ jk_uri_worker_map.h 27 Jun 2003 02:54:17 -0000 1.6 @@ -95,6 +95,8 @@ int uri_worker_map_close(jk_uri_worker_map_t *uw_map, jk_logger_t *l); +void jk_no2slash(char *name); + char *map_uri_to_worker(jk_uri_worker_map_t *uw_map, const char *uri, jk_logger_t *l);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]