close method change and fix code (#28)
* close method change and fix code * missing mutex
This commit is contained in:
committed by
Benjamin Sergeant
parent
401fc39879
commit
b2aca491b6
@ -474,14 +474,8 @@ namespace ix
|
||||
std::string reason(_rxbuf.begin()+ws.header_size + 2,
|
||||
_rxbuf.begin()+ws.header_size + 2 + (size_t) ws.N);
|
||||
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_closeDataMutex);
|
||||
_closeCode = code;
|
||||
_closeReason = reason;
|
||||
_closeWireSize = _rxbuf.size();
|
||||
}
|
||||
|
||||
close();
|
||||
close(code, reason, _rxbuf.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -781,7 +775,12 @@ namespace ix
|
||||
_lastSendTimePoint = std::chrono::steady_clock::now();
|
||||
}
|
||||
|
||||
void WebSocketTransport::close()
|
||||
void WebSocketTransport::close(uint16_t code, const std::string& reason)
|
||||
{
|
||||
close(code, reason, 0);
|
||||
}
|
||||
|
||||
void WebSocketTransport::close(uint16_t code, const std::string& reason, size_t closeWireSize)
|
||||
{
|
||||
_requestInitCancellation = true;
|
||||
|
||||
@ -789,21 +788,22 @@ namespace ix
|
||||
|
||||
// See list of close events here:
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent
|
||||
// We use 1000: normal closure.
|
||||
//
|
||||
// >>> struct.pack('!H', 1000)
|
||||
// b'\x03\xe8'
|
||||
//
|
||||
const std::string normalClosure = std::string("\x03\xe8");
|
||||
const std::string closure{(char)(code >> 8), (char)(code & 0xff)};
|
||||
|
||||
bool compress = false;
|
||||
sendData(wsheader_type::CLOSE, normalClosure, compress);
|
||||
sendData(wsheader_type::CLOSE, closure, compress);
|
||||
setReadyState(CLOSING);
|
||||
|
||||
_socket->wakeUpFromPoll(Socket::kCloseRequest);
|
||||
_socket->close();
|
||||
|
||||
_closeCode = 1000;
|
||||
_closeReason = "Normal Closure";
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_closeDataMutex);
|
||||
_closeCode = code;
|
||||
_closeReason = reason;
|
||||
_closeWireSize = closeWireSize;
|
||||
}
|
||||
|
||||
setReadyState(CLOSED);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user