per-message deflate compression fixes
This commit is contained in:
@ -14,7 +14,7 @@ namespace ix
|
||||
{
|
||||
public:
|
||||
WebSocketPerMessageDeflateOptions(
|
||||
bool enabled = true,
|
||||
bool enabled = false,
|
||||
bool clientNoContextTakeover = false,
|
||||
bool serverNoContextTakeover = false,
|
||||
uint8_t clientMaxWindowBits = kDefaultClientMaxWindowBits,
|
||||
@ -33,14 +33,14 @@ namespace ix
|
||||
static bool startsWith(const std::string& str, const std::string& start);
|
||||
static std::string removeSpaces(const std::string& str);
|
||||
|
||||
static uint8_t const kDefaultClientMaxWindowBits;
|
||||
static uint8_t const kDefaultServerMaxWindowBits;
|
||||
|
||||
private:
|
||||
bool _enabled;
|
||||
bool _clientNoContextTakeover;
|
||||
bool _serverNoContextTakeover;
|
||||
int _clientMaxWindowBits;
|
||||
int _serverMaxWindowBits;
|
||||
|
||||
static uint8_t const kDefaultClientMaxWindowBits;
|
||||
static uint8_t const kDefaultServerMaxWindowBits;
|
||||
};
|
||||
}
|
||||
|
@ -578,7 +578,8 @@ namespace ix
|
||||
_rxbuf.begin()+ws.header_size + (size_t) ws.N);
|
||||
|
||||
// Reply back right away
|
||||
sendData(wsheader_type::PONG, pingData, _enablePerMessageDeflate);
|
||||
bool compress = false;
|
||||
sendData(wsheader_type::PONG, pingData, compress);
|
||||
|
||||
emitMessage(PING, pingData, ws, onMessageCallback);
|
||||
}
|
||||
@ -627,15 +628,15 @@ namespace ix
|
||||
const wsheader_type& ws,
|
||||
const OnMessageCallback& onMessageCallback)
|
||||
{
|
||||
// ws.rsv1 means the message is compressed
|
||||
std::string decompressedMessage;
|
||||
size_t wireSize = message.size();
|
||||
|
||||
// When the RSV1 bit is 1 it means the message is compressed
|
||||
if (_enablePerMessageDeflate && ws.rsv1)
|
||||
{
|
||||
std::string decompressedMessage;
|
||||
if (_perMessageDeflate.decompress(message, decompressedMessage))
|
||||
{
|
||||
onMessageCallback(decompressedMessage, decompressedMessage.size(),
|
||||
messageKind);
|
||||
onMessageCallback(decompressedMessage, wireSize, messageKind);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -644,7 +645,7 @@ namespace ix
|
||||
}
|
||||
else
|
||||
{
|
||||
onMessageCallback(message, message.size(), messageKind);
|
||||
onMessageCallback(message, wireSize, messageKind);
|
||||
}
|
||||
}
|
||||
|
||||
@ -753,7 +754,8 @@ namespace ix
|
||||
|
||||
WebSocketSendInfo WebSocketTransport::sendPing(const std::string& message)
|
||||
{
|
||||
return sendData(wsheader_type::PING, message, _enablePerMessageDeflate);
|
||||
bool compress = false;
|
||||
return sendData(wsheader_type::PING, message, compress);
|
||||
}
|
||||
|
||||
WebSocketSendInfo WebSocketTransport::sendBinary(const std::string& message)
|
||||
|
Reference in New Issue
Block a user