Browse Source

Fix issue with getting SockJS path

Issue: SPR-10923
pull/370/head
Rossen Stoyanchev 13 years ago
parent
commit
e60e8dc582
  1. 2
      spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java
  2. 13
      spring-websocket/src/test/java/org/springframework/web/socket/sockjs/support/AbstractSockJsServiceTests.java

2
spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java

@ -374,7 +374,7 @@ public abstract class AbstractSockJsService implements SockJsService { @@ -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());

13
spring-websocket/src/test/java/org/springframework/web/socket/sockjs/support/AbstractSockJsServiceTests.java

@ -113,6 +113,17 @@ public class AbstractSockJsServiceTests extends AbstractHttpRequestTests { @@ -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 { @@ -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);

Loading…
Cancel
Save