Author: markt
Date: Thu May 20 09:49:24 2010
New Revision: 946584

URL: http://svn.apache.org/viewvc?rev=946584&view=rev
Log:
Fix lost session path parameter on redirect

Modified:
    tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java

Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=946584&r1=946583&r2=946584&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Thu May 
20 09:49:24 2010
@@ -588,6 +588,22 @@ public class CoyoteAdapter implements Ad
             return false;
         }
 
+        // Now we have the context, we can parse the session ID from the URL
+        // (if any). Need to do this before we redirect in case we need to
+        // include the session id in the redirect
+        if (request.getServletContext().getEffectiveSessionTrackingModes()
+                .contains(SessionTrackingMode.URL)) {
+            
+            // Get the session ID if there was one
+            String sessionID = request.getPathParameter(
+                    ApplicationSessionCookieConfig.getSessionUriParamName(
+                            request.getContext()));
+            if (sessionID != null) {
+                request.setRequestedSessionId(sessionID);
+                request.setRequestedSessionURL(true);
+            }
+        }
+
         // Possible redirect
         MessageBytes redirectPathMB = request.getMappingData().redirectPath;
         if (!redirectPathMB.isNull()) {
@@ -610,19 +626,7 @@ public class CoyoteAdapter implements Ad
             return false;
         }
 
-        // Parse session Id
-        if (request.getServletContext().getEffectiveSessionTrackingModes()
-                .contains(SessionTrackingMode.URL)) {
-            
-            // Get the session ID if there was one
-            String sessionID = request.getPathParameter(
-                    ApplicationSessionCookieConfig.getSessionUriParamName(
-                            request.getContext()));
-            if (sessionID != null) {
-                request.setRequestedSessionId(sessionID);
-                request.setRequestedSessionURL(true);
-            }
-        }
+        // Finally look for session ID in cookies and SSL session
         parseSessionCookiesId(req, request);
         parseSessionSslId(request);
         return true;



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to