diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java index cfdfbd7606..0c1be83101 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java @@ -329,12 +329,10 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE sendErrorMessage(session, ex); return; } - Message message = getErrorHandler().handleClientMessageProcessingError(clientMessage, ex); if (message == null) { return; } - StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); Assert.state(accessor != null, "No StompHeaderAccessor"); sendToClient(session, accessor, message.getPayload()); @@ -357,6 +355,14 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE // Could be part of normal workflow (e.g. browser tab closed) logger.debug("Failed to send STOMP ERROR to client", ex); } + finally { + try { + session.close(CloseStatus.PROTOCOL_ERROR); + } + catch (IOException ex) { + // Ignore + } + } } private boolean detectImmutableMessageInterceptor(MessageChannel channel) {