threading race condition fixes, detected by TSAN
This commit is contained in:
@ -55,6 +55,7 @@ namespace ix {
|
||||
|
||||
void WebSocket::setPerMessageDeflateOptions(const WebSocketPerMessageDeflateOptions& perMessageDeflateOptions)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_configMutex);
|
||||
_perMessageDeflateOptions = perMessageDeflateOptions;
|
||||
}
|
||||
|
||||
|
@ -48,9 +48,10 @@ namespace ix
|
||||
|
||||
WebSocketCloseInfo(uint64_t c = 0,
|
||||
const std::string& r = std::string())
|
||||
: code(c)
|
||||
, reason(r)
|
||||
{
|
||||
code = c;
|
||||
reason = r;
|
||||
;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -69,6 +69,8 @@ namespace ix
|
||||
WebSocketPerMessageDeflateCompressor::WebSocketPerMessageDeflateCompressor()
|
||||
: _compressBufferSize(kBufferSize)
|
||||
{
|
||||
memset(&_deflateState, 0, sizeof(_deflateState));
|
||||
|
||||
_deflateState.zalloc = Z_NULL;
|
||||
_deflateState.zfree = Z_NULL;
|
||||
_deflateState.opaque = Z_NULL;
|
||||
@ -167,6 +169,8 @@ namespace ix
|
||||
WebSocketPerMessageDeflateDecompressor::WebSocketPerMessageDeflateDecompressor()
|
||||
: _compressBufferSize(kBufferSize)
|
||||
{
|
||||
memset(&_inflateState, 0, sizeof(_inflateState));
|
||||
|
||||
_inflateState.zalloc = Z_NULL;
|
||||
_inflateState.zfree = Z_NULL;
|
||||
_inflateState.opaque = Z_NULL;
|
||||
|
@ -36,7 +36,6 @@
|
||||
|
||||
#include "zlib.h"
|
||||
#include <string>
|
||||
#include <memory>
|
||||
|
||||
namespace ix
|
||||
{
|
||||
|
@ -20,11 +20,12 @@ namespace ix
|
||||
|
||||
WebSocketSendInfo(bool s = false, bool c = false,
|
||||
size_t p = 0, size_t w = 0)
|
||||
: success(s)
|
||||
, compressionError(c)
|
||||
, payloadSize(p)
|
||||
, wireSize(w)
|
||||
{
|
||||
success = s;
|
||||
compressionError = c;
|
||||
payloadSize = p;
|
||||
wireSize = w;
|
||||
;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -167,7 +167,8 @@ namespace ix
|
||||
if (!WebSocketTransport::parseUrl(_url, protocol, host,
|
||||
path, query, port))
|
||||
{
|
||||
return WebSocketInitResult(false, 0, "Could not parse URL");
|
||||
return WebSocketInitResult(false, 0,
|
||||
std::string("Could not parse URL ") + _url);
|
||||
}
|
||||
|
||||
if (protocol == "wss")
|
||||
|
Reference in New Issue
Block a user