From e60e8dc582b96f166bc2e81b8319674227b724cf Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Mon, 30 Sep 2013 21:19:29 -0400 Subject: [PATCH] Fix issue with getting SockJS path Issue: SPR-10923 --- .../sockjs/support/AbstractSockJsService.java | 2 +- .../sockjs/support/AbstractSockJsServiceTests.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java index a7ddc28d46c..47e3ba97d56 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java @@ -374,7 +374,7 @@ public abstract class AbstractSockJsService implements SockJsService { // Try SockJS prefix hints if (!this.validSockJsPrefixes.isEmpty()) { for (String prefix : this.validSockJsPrefixes) { - int index = path.indexOf(prefix); + int index = path.lastIndexOf(prefix); if (index != -1) { this.knownSockJsPrefixes.add(path.substring(0, index + prefix.length())); return path.substring(index + prefix.length()); diff --git a/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/support/AbstractSockJsServiceTests.java b/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/support/AbstractSockJsServiceTests.java index 6a947c56c6d..2614a6d505d 100644 --- a/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/support/AbstractSockJsServiceTests.java +++ b/spring-websocket/src/test/java/org/springframework/web/socket/sockjs/support/AbstractSockJsServiceTests.java @@ -113,6 +113,17 @@ public class AbstractSockJsServiceTests extends AbstractHttpRequestTests { assertSame(this.handler, this.service.handler); } + // SPR-10923 + + @Test + public void getSockJsPathWithPartlyMatchingServletPath() throws Exception { + + this.service.setValidSockJsPrefixes("/snake"); + handleRequest("GET", "/snakedemo/snake/info", HttpStatus.OK); + + assertTrue(this.servletResponse.getContentAsString().startsWith("{\"entropy\":")); + } + @Test public void validateRequest() throws Exception { @@ -146,7 +157,7 @@ public class AbstractSockJsServiceTests extends AbstractHttpRequestTests { String body = this.servletResponse.getContentAsString(); assertEquals("{\"entropy\"", body.substring(0, body.indexOf(':'))); - assertEquals(",\"origins\":[\"*:*\"],\"cookie_needed\":false,\"websocket\":true}", + assertEquals(",\"origins\":[\"*:*\"],\"cookie_needed\":true,\"websocket\":true}", body.substring(body.indexOf(','))); this.service.setSessionCookieNeeded(false);