[jboss-cvs] JBossAS SVN: r77139 - in branches/JBPAPP_4_2_0_GA_CP: tomcat/src/main/org/jboss/web/tomcat/service/session and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Aug 17 22:50:50 EDT 2008


Author: tkimura at redhat.com
Date: 2008-08-17 22:50:50 -0400 (Sun, 17 Aug 2008)
New Revision: 77139

Modified:
   branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/test/JvmRouteValveUnitTestCase.java
   branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/session/JvmRouteValve.java
Log:
[JBPAPP-1021] StringIndexOutOfBoundsException in JvmRouteValve when JSESSIONID is passed without jvmRoute

Modified: branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/test/JvmRouteValveUnitTestCase.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/test/JvmRouteValveUnitTestCase.java	2008-08-18 02:45:35 UTC (rev 77138)
+++ branches/JBPAPP_4_2_0_GA_CP/testsuite/src/main/org/jboss/test/cluster/test/JvmRouteValveUnitTestCase.java	2008-08-18 02:50:50 UTC (rev 77139)
@@ -44,6 +44,7 @@
    private static final String JVM_ROUTE = "node1";
    private static final String NON_FAILOVER_ID = "123." + JVM_ROUTE;
    private static final String FAILOVER_ID = "123.node2";
+   private static final String NO_JVMROUTE_ID = "123";
    
    /**
     * Create a new JvmRouteValueUnitTestCase.
@@ -471,4 +472,61 @@
       assertEquals(null, mgr.getNewCookieIdSession());
    }
 
+   public void testNoJvmRouteSession() throws Exception
+   {
+      log.info("Enter testNoJvmRouteSession");
+      
+      MockJBossManager mgr = new MockJBossManager();
+      mgr.setJvmRoute(JVM_ROUTE);
+       
+      JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr);
+      
+      MockValve mockValve = new MockValve();
+      
+      jvmRouteValve.setNext(mockValve);
+      
+      Session session = mgr.createSession(NO_JVMROUTE_ID);
+      MockRequest req = new MockRequest();
+      req.setSession(session.getSession());
+      req.setRequestedSessionId(session.getId());
+      
+      Response res = new Response();
+      
+      jvmRouteValve.invoke(req, res);
+      
+      assertSame(req, mockValve.getInvokedRequest());
+      assertSame(res, mockValve.getInvokedResponse());
+      assertEquals(NON_FAILOVER_ID, session.getId());
+      assertEquals(NON_FAILOVER_ID, mgr.getNewCookieIdSession());
+   }
+   
+   public void testNoJvmRouteSessionFromURL() throws Exception
+   {
+      log.info("Enter testNoJvmRouteSessionFromURL");
+      
+      MockJBossManager mgr = new MockJBossManager();
+      mgr.setJvmRoute(JVM_ROUTE);
+       
+      JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr);
+      
+      MockValve mockValve = new MockValve();
+      
+      jvmRouteValve.setNext(mockValve);
+      
+      Session session = mgr.createSession(NO_JVMROUTE_ID);
+      MockRequest req = new MockRequest();
+      req.setSession(session.getSession());
+      req.setRequestedSessionId(session.getId());
+      req.setRequestedSessionIdFromURL(true);
+      
+      Response res = new Response();
+      
+      jvmRouteValve.invoke(req, res);
+      
+      assertSame(req, mockValve.getInvokedRequest());
+      assertSame(res, mockValve.getInvokedResponse());
+      assertEquals(NON_FAILOVER_ID, session.getId());
+      assertEquals(null, mgr.getNewCookieIdSession());
+   }
+
 }

Modified: branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/session/JvmRouteValve.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/session/JvmRouteValve.java	2008-08-18 02:45:35 UTC (rev 77138)
+++ branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/session/JvmRouteValve.java	2008-08-18 02:50:50 UTC (rev 77139)
@@ -168,6 +168,8 @@
       /* Also check the jvmRoute received (via req.getRequestedSessionId()) */
       if (!jvmRoute.equals(receivedJvmRoute))
       {
+         if (newId == null)
+         {
             if (log_.isDebugEnabled())
             {
                log_.debug("handleJvmRoute(): We have detected a failover with different jvmRoute." +
@@ -175,6 +177,7 @@
             }
             String base = sessionId.substring(0, index);
             newId = base + "." + jvmRoute;
+         }
       }
 
       /* Change the sessionid cookie if needed */




More information about the jboss-cvs-commits mailing list