From 02be830741d5a09db1d5155102b3e3dbd1987560 Mon Sep 17 00:00:00 2001 From: sta Date: Tue, 21 Jun 2016 15:36:29 +0900 Subject: [PATCH] [Modify] Retry the read if it returns zero Experimental modification to avoid 'cannot be read from the stream'. --- websocket-sharp/Ext.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index 5d6710d3..36f521b7 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -67,6 +67,7 @@ namespace WebSocketSharp #region Private Fields private static readonly byte[] _last = new byte[] { 0x00 }; + private static readonly int _retry = 5; private const string _tspecials = "()<>@,;:\\\"/[]?={} \t"; #endregion @@ -653,17 +654,24 @@ namespace WebSocketSharp { var buff = new byte[length]; var offset = 0; + var retry = 0; AsyncCallback callback = null; callback = ar => { try { var nread = stream.EndRead (ar); - if (nread == 0 || nread == length) { + if (nread == 0 && retry < _retry) { + retry++; + } + else if (nread == 0 || nread == length) { if (completed != null) completed (buff.SubArray (0, offset + nread)); return; } + else { + retry = 0; + } offset += nread; length -= nread;