Thanks
This commit is contained in:
Kumamon38 2019-05-21 21:14:58 +02:00 committed by Benjamin Sergeant
parent 3365facf9f
commit 26de9b9714

View File

@ -1041,42 +1041,23 @@ namespace ix
_requestInitCancellation = true; _requestInitCancellation = true;
if (_readyState == ReadyState::CLOSING || _readyState == ReadyState::CLOSED) return; if (_readyState == ReadyState::CLOSING || _readyState == ReadyState::CLOSED) return;
// connection is opened, so close without sending close frame
if (_readyState == ReadyState::OPEN)
{ {
{ std::lock_guard<std::mutex> lock(_closeDataMutex);
std::lock_guard<std::mutex> lock(_closeDataMutex); _closeCode = code;
_closeCode = code; _closeReason = reason;
_closeReason = reason; _closeWireSize = closeWireSize;
_closeWireSize = closeWireSize; _closeRemote = remote;
_closeRemote = remote;
}
{
std::lock_guard<std::mutex> lock(_closingTimePointMutex);
_closingTimePoint = std::chrono::steady_clock::now();
}
setReadyState(ReadyState::CLOSING);
sendCloseFrame(code, reason);
// wake up the poll, but do not close yet
_socket->wakeUpFromPoll(Socket::kSendRequest);
} }
else
{ {
{ std::lock_guard<std::mutex> lock(_closingTimePointMutex);
std::lock_guard<std::mutex> lock(_closeDataMutex); _closingTimePoint = std::chrono::steady_clock::now();
_closeCode = code;
_closeReason = reason;
_closeWireSize = closeWireSize;
_closeRemote = remote;
}
setReadyState(ReadyState::CLOSED);
// wake up the poll, and close
_socket->wakeUpFromPoll(Socket::kCloseRequest);
} }
setReadyState(ReadyState::CLOSING);
sendCloseFrame(code, reason);
// wake up the poll, but do not close yet
_socket->wakeUpFromPoll(Socket::kSendRequest);
} }
size_t WebSocketTransport::bufferedAmount() const size_t WebSocketTransport::bufferedAmount() const