Skip to content

Commit d166222

Browse files
committed
Merge pull request #64 from heikkipora/master
Fix duplicating jvmRoute prefixes on sessionIds.
2 parents f76bff3 + 01ff25b commit d166222

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@ example-app/build/*
44
example-app/.gradle/*
55
.DS_Store
66
.rspec
7+
*.iml
8+
.idea/*

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)