[jboss-cvs] JBossAS SVN: r86567 - in branches/Branch_5_x: 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
Tue Mar 31 22:40:41 EDT 2009
Author: bstansberry at jboss.com
Date: 2009-03-31 22:40:41 -0400 (Tue, 31 Mar 2009)
New Revision: 86567
Modified:
branches/Branch_5_x/testsuite/src/main/org/jboss/test/cluster/defaultcfg/simpleweb/test/JvmRouteValveUnitTestCase.java
branches/Branch_5_x/tomcat/src/main/org/jboss/web/tomcat/service/session/JvmRouteValve.java
Log:
[JBAS-6682] Avoid StringIndexOutOfBoundsException
Modified: branches/Branch_5_x/testsuite/src/main/org/jboss/test/cluster/defaultcfg/simpleweb/test/JvmRouteValveUnitTestCase.java
===================================================================
--- branches/Branch_5_x/testsuite/src/main/org/jboss/test/cluster/defaultcfg/simpleweb/test/JvmRouteValveUnitTestCase.java 2009-04-01 02:36:46 UTC (rev 86566)
+++ branches/Branch_5_x/testsuite/src/main/org/jboss/test/cluster/defaultcfg/simpleweb/test/JvmRouteValveUnitTestCase.java 2009-04-01 02:40:41 UTC (rev 86567)
@@ -532,6 +532,63 @@
assertEquals(NON_FAILOVER_ID, session.getId());
assertEquals(null, mgr.getNewCookieIdSession());
}
+
+ public void testNoJvmRouteRequest() throws Exception
+ {
+ log.info("Enter testNoJvmRouteRequest");
+
+ MockJBossManager mgr = new MockJBossManager();
+ mgr.setJvmRoute(JVM_ROUTE);
+
+ JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr);
+
+ MockValve mockValve = new MockValve();
+
+ jvmRouteValve.setNext(mockValve);
+
+ Session session = mgr.createSession(NON_FAILOVER_ID);
+ MockRequest req = new MockRequest();
+ req.setSession(session.getSession());
+ req.setRequestedSessionId(NO_JVMROUTE_ID);
+
+ 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 testNoJvmRouteRequestFromURL() throws Exception
+ {
+ log.info("Enter testNoJvmRouteRequest");
+
+ MockJBossManager mgr = new MockJBossManager();
+ mgr.setJvmRoute(JVM_ROUTE);
+
+ JvmRouteValve jvmRouteValve = new JvmRouteValve(mgr);
+
+ MockValve mockValve = new MockValve();
+
+ jvmRouteValve.setNext(mockValve);
+
+ Session session = mgr.createSession(NON_FAILOVER_ID);
+ MockRequest req = new MockRequest();
+ req.setSession(session.getSession());
+ req.setRequestedSessionId(NO_JVMROUTE_ID);
+ 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());
+ }
public void testJvmRouteIncludesDomain() throws Exception
{
Modified: branches/Branch_5_x/tomcat/src/main/org/jboss/web/tomcat/service/session/JvmRouteValve.java
===================================================================
--- branches/Branch_5_x/tomcat/src/main/org/jboss/web/tomcat/service/session/JvmRouteValve.java 2009-04-01 02:36:46 UTC (rev 86566)
+++ branches/Branch_5_x/tomcat/src/main/org/jboss/web/tomcat/service/session/JvmRouteValve.java 2009-04-01 02:40:41 UTC (rev 86567)
@@ -132,19 +132,19 @@
// TODO. The current format is assumed to be id.jvmRoute. Can be generalized later.
String sessionJvmRoute = null;
- int index = sessionId.indexOf(".");
- if (index > 0)
+ int index = sessionId.indexOf('.', 0);
+ if (index > -1 && index < sessionId.length() -1)
{
sessionJvmRoute = sessionId.substring(index + 1, sessionId.length());
}
if (!jvmRoute.equals(sessionJvmRoute))
{
- if (sessionJvmRoute == null)
+ if (index < 0)
{
// If this valve is turned on, we assume we have an appendix of jvmRoute.
// So this request is new.
- newId = sessionId + "." + jvmRoute;
+ newId = new StringBuilder(sessionId).append('.').append(jvmRoute).toString();
}
else
{
@@ -175,10 +175,10 @@
String requestedJvmRoute = null;
if (requestedId != null)
{
- index = requestedId.indexOf(".");
- if (index > 0)
+ int reqIndex = requestedId.indexOf('.', 0);
+ if (reqIndex > -1 && reqIndex < requestedId.length() - 1)
{
- requestedJvmRoute = requestedId.substring(index + 1, requestedId.length());
+ requestedJvmRoute = requestedId.substring(reqIndex + 1, requestedId.length());
}
}
@@ -189,8 +189,8 @@
log_.trace("handleJvmRoute(): We have detected a failover with different jvmRoute." +
" received one: " + requestedJvmRoute + " new one: " + jvmRoute + ". Will resent the session id.");
}
- String base = sessionId.substring(0, index);
- newId = base + "." + jvmRoute;
+ String base = index > -1 ? sessionId.substring(0, index) : sessionId;
+ newId = new StringBuilder(base).append('.').append(jvmRoute).toString();
}
}
More information about the jboss-cvs-commits
mailing list