You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2014/06/23 00:24:04 UTC
svn commit: r1604662 - in /tomcat/tc7.0.x/trunk: ./
java/org/apache/catalina/connector/CoyoteAdapter.java
webapps/docs/changelog.xml
Author: kkolinko
Date: Sun Jun 22 22:24:03 2014
New Revision: 1604662
URL: http://svn.apache.org/r1604662
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56657#c2
Ensure that re-mapping selects the context version that we expect.
Merged r1604661 from tomcat/trunk.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1604661
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1604662&r1=1604661&r2=1604662&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Sun Jun 22 22:24:03 2014
@@ -703,14 +703,13 @@ public class CoyoteAdapter implements Ad
request.getMappingData().recycle();
}
- boolean mapRequired = true;
+ // Version for the second mapping loop and
+ // Context that we expect to get for that version
String version = null;
+ Context versionContext = null;
+ boolean mapRequired = true;
while (mapRequired) {
- if (version != null) {
- // Once we have a version - that is it
- mapRequired = false;
- }
// This will map the the latest version by default
connector.getMapper().map(serverName, decodedURI, version,
request.getMappingData());
@@ -754,8 +753,13 @@ public class CoyoteAdapter implements Ad
sessionID = request.getRequestedSessionId();
- if (mapRequired) {
- mapRequired = false;
+ mapRequired = false;
+ if (version != null && request.getContext() == versionContext) {
+ // We got the version that we asked for. That is it.
+ } else {
+ version = null;
+ versionContext = null;
+
Object[] contexts = request.getMappingData().contexts;
// Single contextVersion means no need to remap
// No session ID means no possibility of remap
@@ -764,11 +768,13 @@ public class CoyoteAdapter implements Ad
for (int i = (contexts.length); i > 0; i--) {
Context ctxt = (Context) contexts[i - 1];
if (ctxt.getManager().findSession(sessionID) != null) {
- // We found a context. Is it the one that has already been mapped?
+ // We found a context. Is it the one that has
+ // already been mapped?
if (!ctxt.equals(request.getMappingData().context)) {
- // Set version so second time through mapping the
- // correct context is found
+ // Set version so second time through mapping
+ // the correct context is found
version = ctxt.getWebappVersion();
+ versionContext = ctxt;
// Reset mapping
request.getMappingData().recycle();
mapRequired = true;
@@ -778,6 +784,7 @@ public class CoyoteAdapter implements Ad
}
}
}
+
if (!mapRequired && request.getContext().getPaused()) {
// Found a matching context but it is paused. Mapping data will
// be wrong since some Wrappers may not be registered at this
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1604662&r1=1604661&r2=1604662&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Sun Jun 22 22:24:03 2014
@@ -109,7 +109,8 @@
<fix>
<bug>56657</bug>: When using parallel deployment, if the same session id
matches different versions of a web application, prefer the latest
- version. (kkolinko)
+ version. Ensure that remapping selects the version that we expect.
+ (kkolinko)
</fix>
</changelog>
</subsection>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org