Skip to content

Commit 95b7c51

Browse files
committed
Prevent duplicate ‘.jvmRoute’ prefix for sessionIds
1 parent a22bb01 commit 95b7c51

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/main/java/com/orangefunction/tomcat/redissessions/RedisSessionManager.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -344,19 +344,13 @@ public Session createSession(String requestedSessionId) {
344344

345345
// Ensure generation of a unique session identifier.
346346
if (null != requestedSessionId) {
347-
sessionId = requestedSessionId;
348-
if (jvmRoute != null) {
349-
sessionId += '.' + jvmRoute;
350-
}
347+
sessionId = sessionIdWithJvmRoute(requestedSessionId, jvmRoute);
351348
if (jedis.setnx(sessionId.getBytes(), NULL_SESSION) == 0L) {
352349
sessionId = null;
353350
}
354351
} else {
355352
do {
356-
sessionId = generateSessionId();
357-
if (jvmRoute != null) {
358-
sessionId += '.' + jvmRoute;
359-
}
353+
sessionId = sessionIdWithJvmRoute(generateSessionId(), jvmRoute);
360354
} while (jedis.setnx(sessionId.getBytes(), NULL_SESSION) == 0L); // 1 = key set; 0 = key already existed
361355
}
362356

@@ -402,6 +396,14 @@ This ensures that the save(session) at the end of the request
402396
return session;
403397
}
404398

399+
private String sessionIdWithJvmRoute(String sessionId, String jvmRoute) {
400+
if (jvmRoute != null) {
401+
String jvmRoutePrefix = '.' + jvmRoute;
402+
return sessionId.endsWith(jvmRoutePrefix) ? sessionId : sessionId + jvmRoutePrefix;
403+
}
404+
return sessionId;
405+
}
406+
405407
@Override
406408
public Session createEmptySession() {
407409
return new RedisSession(this);

0 commit comments

Comments
 (0)