@@ -237,12 +240,12 @@ function GetFromWebSocketClientDraft0() {
}
functionGetFromWebSocketClientVersion7(){
varResult=[];
varResult='';
varInByte=0;
varInByte2=0;
varInByte3=0;
while (client.socket.data_waiting){
while (client.socket.data_waiting&&(Result.length<=4096)){
// Check what the client packet state is
switch (FWebSocketState){
caseWEBSOCKET_NEED_PACKET_START:
...
...
@@ -313,23 +316,42 @@ function GetFromWebSocketClientVersion7() {
FWebSocketState=(FFramePayloadLength>0?WEBSOCKET_DATA:WEBSOCKET_NEED_PACKET_START);// NB: Might not be any data to read, so check for payload length before setting state
break;
caseWEBSOCKET_DATA:
InByte=client.socket.recvBin(1);
if (FFrameMasked)InByte^=FFrameMask[FFramePayloadReceived++%4];
// Check if the byte needs to be UTF-8 decoded
if ((InByte&0x80)===0){
Result.push(InByte);
}elseif ((InByte&0xE0)===0xC0){
// Handle UTF-8 decode
InByte2=client.socket.recvBin(1);
if (FFrameMasked)InByte2^=FFrameMask[FFramePayloadReceived++%4];
Result.push(((InByte&31)<<6)|(InByte2&63));
}else{
log(LOG_DEBUG,"GetFromWebSocketClientVersion7 Byte out of range: "+InByte);