Closed m-expunged closed 2 years ago
foreach (var frame in frames) { if (frame.DataLength == 0) <--- bug here? continue; var framePayload = payload[payloadStartIndex..(payloadStartIndex + frame.FrameLength)]; var masks = framePayload[frame.MaskIndex..(frame.MaskIndex + 4)]; int firstDataByteIndex = frame.MaskIndex + 4; byte[] decoded = new byte[framePayload.Length - firstDataByteIndex]; for (int i = firstDataByteIndex, j = 0; i < framePayload.Length; i++, j++) { decoded[j] = (byte)(framePayload[i] ^ masks.ElementAt(j % 4)); } payloadStartIndex += frame.FrameLength; message += Encoding.UTF8.GetString(decoded); }