-
Notifications
You must be signed in to change notification settings - Fork 38.8k
Description
Karsten Sperling opened SPR-14138 and commented
AbstractWebSocketSession.sendMessage() checks if the connection is still open via isOpen() and throws an IllegalArgumentException if not. However this does not guarantee that the connection will still be open by the time the underlying WS implementation actually tries to write. This means the caller still has to catch / handle the relevant IOException anyway.
It is also impossible for the caller to avoid this exception as the remote side can close the connection at any time, so calling isOpen() before sendMessage() would suffer from exactly the same problem. The correct approach for this kind of situation is to simply attempt the IO operation and to let it fail naturally with an IOException in the underlying implementation if the connection has in fact been closed.
So I suggest to completely remove the Assert.isTrue(isOpen(), ...); check.
Affects: 4.2.5, 4.3 RC1