From 3af488a701834f61b89cd84040605a6252962e9c Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Sat, 28 Jun 2014 14:33:00 -0400 Subject: [PATCH] Avoid multiple invocations of afterConnectionClosed This change ensures the state of a SockJS session is set to CLOSED immediately after close is invoked. This avoids duplicate invocations of afterConnectionClosed in WebSocket transport. Issue: SPR-11884 --- .../socket/sockjs/transport/session/AbstractSockJsSession.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java index d95abf3f36..cbc610040d 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java @@ -271,6 +271,7 @@ public abstract class AbstractSockJsSession implements SockJsSession { if (logger.isInfoEnabled()) { logger.info("Closing SockJS session " + getId() + " with " + status); } + this.state = State.CLOSED; try { if (isActive() && !CloseStatus.SESSION_NOT_RELIABLE.equals(status)) { try { @@ -285,7 +286,6 @@ public abstract class AbstractSockJsSession implements SockJsSession { disconnect(status); } finally { - this.state = State.CLOSED; try { this.handler.afterConnectionClosed(this, status); }