Browse Source

Merge pull request #1266 from paullouisageneau/fix-ws-race-disconnect

Fix race condition on WebSocket disconnect
Paul-Louis Ageneau 10 months ago
parent
commit
9bbc79bb9f
1 changed files with 6 additions and 3 deletions
  1. 6 3
      src/impl/websocket.cpp

+ 6 - 3
src/impl/websocket.cpp

@@ -252,7 +252,8 @@ shared_ptr<TcpTransport> WebSocket::setTcpTransport(shared_ptr<TcpTransport> tra
 				remoteClose();
 				remoteClose();
 				break;
 				break;
 			case State::Disconnected:
 			case State::Disconnected:
-				remoteClose();
+				if(state == WebSocket::State::Connecting)
+					remoteClose();
 				break;
 				break;
 			default:
 			default:
 				// Ignore
 				// Ignore
@@ -303,7 +304,8 @@ shared_ptr<HttpProxyTransport> WebSocket::initProxyTransport() {
 				remoteClose();
 				remoteClose();
 				break;
 				break;
 			case State::Disconnected:
 			case State::Disconnected:
-				remoteClose();
+				if(state == WebSocket::State::Connecting)
+					remoteClose();
 				break;
 				break;
 			default:
 			default:
 				// Ignore
 				// Ignore
@@ -358,7 +360,8 @@ shared_ptr<TlsTransport> WebSocket::initTlsTransport() {
 				remoteClose();
 				remoteClose();
 				break;
 				break;
 			case State::Disconnected:
 			case State::Disconnected:
-				remoteClose();
+				if(state == WebSocket::State::Connecting)
+					remoteClose();
 				break;
 				break;
 			default:
 			default:
 				// Ignore
 				// Ignore