threading race condition fixes, detected by TSAN

This commit is contained in:
Benjamin Sergeant
2018-12-06 08:27:28 -08:00
parent c64bc20bb5
commit 49bf8bd830
10 changed files with 102 additions and 59 deletions

View File

@ -55,6 +55,7 @@ namespace ix {
void WebSocket::setPerMessageDeflateOptions(const WebSocketPerMessageDeflateOptions& perMessageDeflateOptions)
{
std::lock_guard<std::mutex> lock(_configMutex);
_perMessageDeflateOptions = perMessageDeflateOptions;
}

View File

@ -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;
;
}
};

View File

@ -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;

View File

@ -36,7 +36,6 @@
#include "zlib.h"
#include <string>
#include <memory>
namespace ix
{

View File

@ -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;
;
}
};
}

View File

@ -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")