Pārlūkot izejas kodu

Fix race condition on WebSocket disconnect

Paul-Louis Ageneau 10 mēneši atpakaļ
vecāks
revīzija
1e6afd9a9b
1 mainītis faili ar 6 papildinājumiem un 3 dzēšanām
  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();
 				break;
 			case State::Disconnected:
-				remoteClose();
+				if(state == WebSocket::State::Connecting)
+					remoteClose();
 				break;
 			default:
 				// Ignore
@@ -303,7 +304,8 @@ shared_ptr<HttpProxyTransport> WebSocket::initProxyTransport() {
 				remoteClose();
 				break;
 			case State::Disconnected:
-				remoteClose();
+				if(state == WebSocket::State::Connecting)
+					remoteClose();
 				break;
 			default:
 				// Ignore
@@ -358,7 +360,8 @@ shared_ptr<TlsTransport> WebSocket::initTlsTransport() {
 				remoteClose();
 				break;
 			case State::Disconnected:
-				remoteClose();
+				if(state == WebSocket::State::Connecting)
+					remoteClose();
 				break;
 			default:
 				// Ignore