Message type (TEXT or BINARY) is invalid for received fragmented messages (fix autobahn test: 5.3 through 5.8 Fragmentation)
This commit is contained in:
@ -565,17 +565,20 @@ namespace ix
|
||||
) {
|
||||
unmaskReceiveBuffer(ws);
|
||||
|
||||
MessageKind messageKind =
|
||||
(ws.opcode == wsheader_type::TEXT_FRAME)
|
||||
? MessageKind::MSG_TEXT
|
||||
: MessageKind::MSG_BINARY;
|
||||
if (ws.opcode != wsheader_type::CONTINUATION)
|
||||
{
|
||||
_fragmentedMessageKind =
|
||||
(ws.opcode == wsheader_type::TEXT_FRAME)
|
||||
? MessageKind::MSG_TEXT
|
||||
: MessageKind::MSG_BINARY;
|
||||
}
|
||||
|
||||
//
|
||||
// Usual case. Small unfragmented messages
|
||||
//
|
||||
if (ws.fin && _chunks.empty())
|
||||
{
|
||||
emitMessage(messageKind,
|
||||
emitMessage(_fragmentedMessageKind,
|
||||
std::string(_rxbuf.begin()+ws.header_size,
|
||||
_rxbuf.begin()+ws.header_size+(size_t) ws.N),
|
||||
ws,
|
||||
@ -595,7 +598,8 @@ namespace ix
|
||||
_rxbuf.begin()+ws.header_size+(size_t)ws.N));
|
||||
if (ws.fin)
|
||||
{
|
||||
emitMessage(messageKind, getMergedChunks(), ws, onMessageCallback);
|
||||
emitMessage(_fragmentedMessageKind, getMergedChunks(),
|
||||
ws, onMessageCallback);
|
||||
_chunks.clear();
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user