https://issues.apache.org/bugzilla/show_bug.cgi?id=57215
Bug ID: 57215
Summary: Regression in Tomcat 7.0.54 after Bug 56501 with urls
starting with //
Product: Tomcat 7
Version: 7.0.54
Hardware: All
OS: All
Status: NEW
Severity: regression
Priority: P2
Component: Catalina
Assignee: [email protected]
Reporter: [email protected]
After upgrading from 7.0.52 of Tomcat to 7.0.54 we found that our application
was now returning 404 resource not found errors when the request uri starts
with //.
eg. We have an embedded server created and started something like:
org.apache.catalina.startup.Embedded embedded = new Embedded();
org.apache.catalina.Engine engine engine = embedded.createEngine();
engine.setName("");
embedded.setContainer(engine);
embedded.addEngine(engine);
...
String startPathContextRoot = "c:\website\data\startPath";
org.apache.catalina.Context startPathContext =
embedded.createContext("/startPath",startPathContextRoot);
embedded.start()
Then a request to http://host:port//startPath returns 404.
Whereas at Tomcat 7.0.52 it returns what we would expect from a request to
http://host:port/startPath.
The same behaviour is seen with requests to extended URLs eg:
http://host:port//startPath/anotherPath.
where they end up at the servlet as expected with 7.0.53 and not with 7.0.54
Debugging this a bit I found that the problem was introduced at 7.0.53 and by
the changes under
https://issues.apache.org/bugzilla/show_bug.cgi?id=56501
which for Tomcat 7 were revision
http://svn.apache.org/viewvc?view=revision&revision=1594028
If I run our app without these changes in at 7.0.54 then it works fine.
Looking at the changes in the revision I saw some tests were added and so I
tried adding some new tests to
tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java which I think
example the problem:
@Test
public void testBug56501p() throws Exception {
doBug56501("/path", "//path", "/path");
}
@Test
public void testBug56501q() throws Exception {
doBug56501("/path", "//path/", "/path");
}
@Test
public void testBug56501r() throws Exception {
doBug56501("/path", "//path/bob", "/path");
}
@Test
public void testBug56501s() throws Exception {
doBug56501("/path", "//path/bob/", "/path");
If I run these at 7.0.53 they pass.
and running at 7.0.54 they fail with:
Testcase: testBug56501p took 0.307 sec
FAILED
expected:</[path]> but was:</[]>
Testcase: testBug56501q took 0.275 sec
FAILED
expected:</[path]> but was:</[]>
Testcase: testBug56501r took 0.246 sec
FAILED
expected:</[path]> but was:</[]>
Testcase: testBug56501s took 0.32 sec
FAILED
expected:</[path]> but was:</[]>
I can try and create this with a simple servlet/setup if required if the test
additions are not enough.
David
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]