Author: markt
Date: Mon Dec 11 19:45:59 2006
New Revision: 486005

URL: http://svn.apache.org/viewvc?view=rev&rev=486005
Log:
Fix bug 40551. When restoring a session from a PersistentManager to w new node 
update the session Id with the new jvmRoute. Based on a patch by Chris Chandler.

Modified:
    
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Request.java
    
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/PersistentManagerBase.java
    tomcat/container/tc5.5.x/webapps/docs/changelog.xml

Modified: 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Request.java
URL: 
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Request.java?view=diff&rev=486005&r1=486004&r2=486005
==============================================================================
--- 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Request.java
 (original)
+++ 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Request.java
 Mon Dec 11 19:45:59 2006
@@ -2207,6 +2207,12 @@
             if ((session != null) && !session.isValid())
                 session = null;
             if (session != null) {
+                if(!requestedSessionId.equals(session.getId())) {
+                    Cookie cookie = new Cookie(Globals.SESSION_COOKIE_NAME,
+                            session.getIdInternal());
+                    configureSessionCookie(cookie);
+                    response.addCookie(cookie);
+                }
                 session.access();
                 return (session);
             }

Modified: 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/PersistentManagerBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/PersistentManagerBase.java?view=diff&rev=486005&r1=486004&r2=486005
==============================================================================
--- 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/PersistentManagerBase.java
 (original)
+++ 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/session/PersistentManagerBase.java
 Mon Dec 11 19:45:59 2006
@@ -772,6 +772,20 @@
                 }
             } else {
                  session = store.load(id);
+                 
+                 String jvmRoute = getJvmRoute();
+                 if (jvmRoute != null && session != null) {
+                     String requestJvmRoute = null;
+                     int index = id.indexOf(".");
+                     if (index > 0) {
+                         requestJvmRoute = id.substring(index + 1, 
id.length());
+                     }
+                     if (requestJvmRoute != null &&
+                             !requestJvmRoute.equals(jvmRoute)) {
+                         id = id.substring(0, index) + "." + jvmRoute;
+                         session.setId(id);
+                     }
+                 }
             }   
         } catch (ClassNotFoundException e) {
             log.error(sm.getString("persistentManager.deserializeError", id, 
e));

Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=486005&r1=486004&r2=486005
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Mon Dec 11 19:45:59 2006
@@ -86,6 +86,11 @@
         Ben Clifford. (markt)
       </fix>
       <fix>
+        <bug>40551</bug>: When restoring sessions from a PersistentManager to
+        a new node ensure that the session ID is updated to reflect the new
+        jvmRoute. Based on a patch by Chris Chandler. (markt)
+      </fix>
+      <fix>
         <bug>40585</bug>: Fix parameterised constructor for 
o.a.juli.FileHandler
         so parameters have an effect. (markt)
       </fix>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to