diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 832e3992..8a9f5668 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog All changes to this project will be documented in this file. +## [9.10.2] - 2020-07-24 + +(websocket client) reset WebSocketTransport onClose callback in the WebSocket destructor + ## [9.10.1] - 2020-07-24 (websocket server) reset client websocket callback when the connection is closed diff --git a/ixwebsocket/IXWebSocket.cpp b/ixwebsocket/IXWebSocket.cpp index 864482ea..94c3ecb1 100644 --- a/ixwebsocket/IXWebSocket.cpp +++ b/ixwebsocket/IXWebSocket.cpp @@ -46,6 +46,7 @@ namespace ix WebSocket::~WebSocket() { stop(); + _ws.setOnCloseCallback(nullptr); } void WebSocket::setUrl(const std::string& url) diff --git a/ixwebsocket/IXWebSocketTransport.cpp b/ixwebsocket/IXWebSocketTransport.cpp index d95f56be..dbe7dd65 100644 --- a/ixwebsocket/IXWebSocketTransport.cpp +++ b/ixwebsocket/IXWebSocketTransport.cpp @@ -180,7 +180,10 @@ namespace ix if (readyState == ReadyState::CLOSED) { std::lock_guard lock(_closeDataMutex); - _onCloseCallback(_closeCode, _closeReason, _closeWireSize, _closeRemote); + if (_onCloseCallback) + { + _onCloseCallback(_closeCode, _closeReason, _closeWireSize, _closeRemote); + } _closeCode = WebSocketCloseConstants::kInternalErrorCode; _closeReason = WebSocketCloseConstants::kInternalErrorMessage; _closeWireSize = 0; diff --git a/ixwebsocket/IXWebSocketVersion.h b/ixwebsocket/IXWebSocketVersion.h index 3a801255..2402ec52 100644 --- a/ixwebsocket/IXWebSocketVersion.h +++ b/ixwebsocket/IXWebSocketVersion.h @@ -6,4 +6,4 @@ #pragma once -#define IX_WEBSOCKET_VERSION "9.10.1" +#define IX_WEBSOCKET_VERSION "9.10.2"