diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index 73e33ebb..a0975b49 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -142,24 +142,22 @@ namespace WebSocketSharp private static byte[] readBytes (this Stream stream, byte[] buffer, int offset, int count) { - var cnt = 0; + var nread = 0; try { - cnt = stream.Read (buffer, offset, count); - if (cnt < 1) - return buffer.SubArray (0, offset); - - while (cnt < count) { - var nread = stream.Read (buffer, offset + cnt, count - cnt); - if (nread < 1) + while (true) { + nread = stream.Read (buffer, offset, count); + if (nread == 0 || nread == count) break; - cnt += nread; + offset += nread; + count -= nread; } } catch { + nread = 0; } - return cnt < count ? buffer.SubArray (0, offset + cnt) : buffer; + return buffer.SubArray (0, offset + nread); } private static void readBytesAsync (