(Just barely) pass Autobahn tests chapter 1 - 10

This commit is contained in:
Alex Hultman
2018-11-21 22:46:17 +01:00
parent 8bf87c9147
commit 91620c6c42
6 changed files with 202 additions and 35 deletions
+4 -4
View File
@@ -141,18 +141,18 @@ protected:
static inline bool consumeMessage(T payLength, char *&src, unsigned int &length, WebSocketState<isServer> *wState, void *user) {
if (getOpCode(src)) {
if (wState->state.opStack == 1 || (!wState->state.lastFin && getOpCode(src) < 2)) {
Impl::forceClose(wState);
Impl::forceClose(wState, user);
return true;
}
wState->state.opCode[++wState->state.opStack] = (OpCode) getOpCode(src);
} else if (wState->state.opStack == -1) {
Impl::forceClose(wState);
Impl::forceClose(wState, user);
return true;
}
wState->state.lastFin = isFin(src);
if (Impl::refusePayloadLength(payLength, wState)) {
Impl::forceClose(wState);
Impl::forceClose(wState, user);
return true;
}
@@ -370,7 +370,7 @@ public:
// invalid reserved bits / invalid opcodes / invalid control frames / set compressed frame
if ((rsv1(src) && !Impl::setCompressed(wState)) || rsv23(src) || (getOpCode(src) > 2 && getOpCode(src) < 8) ||
getOpCode(src) > 10 || (getOpCode(src) > 2 && (!isFin(src) || payloadLength(src) > 125))) {
Impl::forceClose(wState);
Impl::forceClose(wState, user);
return;
}