You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by David Tucker <dt...@eai.com> on 2000/09/22 03:27:20 UTC
Bug - Infinite Loop in PrefixManager.java
While running some tests with TomCat, I uncovered an infinite loop in
PrefixManager.java.
The routine getLongestPrefixMatch has the following chunk of code:
while (s.length() >= 0) {
//if(debug>8) context.log( "Prefix: " + s );
container = myMap.prefixMappedServlets.get(s);
if (container == null) {
s=URLUtil.removeLast( s );
} else {
if( myMap.mapCacheEnabled ) {
// XXX implement LRU or another replacement alghoritm
myMap.mapCache.put( path, container );
}
return container;
}
}
return container;
}
The problem is that if myMap.prefixMappedServlet.get(s) never finds a
container, the code goes into an infinite loop:
I changed the while statement to:
while (s.length() > 0) {
and at least it exited and threw an execption.
This situation occurred when I had a servlet mapped to a URL /myurl but then
used a custom application going through a proxy server that changed the url:
https://www.xxx.com/myurl to http://www.xxx.com:443/myurl
Anyway, that was the situation. Could someone apply this fix to TomCat 3.2
beta 4?
Thanks,
Dave Tucker
----------------------------------------------------------
David Tucker | Engineering Animation, Inc
Principal Software Engineer | 2321 North Loop Drive
dtucker@eai.com | Ames, IA 50010
(515) 296-7138 | www.eai.com
----------------------------------------------------------