diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index df23a5a4..b5c5f302 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -703,53 +703,58 @@ namespace WebSocketSharp long length, int bufferLength, Action completed, - Action error) + Action error + ) { var dest = new MemoryStream (); var buff = new byte[bufferLength]; var retry = 0; Action read = null; - read = len => { - if (len < bufferLength) - bufferLength = (int) len; - - stream.BeginRead ( - buff, - 0, - bufferLength, - ar => { - try { - var nread = stream.EndRead (ar); - if (nread > 0) - dest.Write (buff, 0, nread); - - if (nread == 0 && retry < _retry) { - retry++; - } - else if (nread == 0 || nread == len) { - if (completed != null) { - dest.Close (); - completed (dest.ToArray ()); + read = + len => { + if (len < bufferLength) + bufferLength = (int) len; + + stream.BeginRead ( + buff, + 0, + bufferLength, + ar => { + try { + var nread = stream.EndRead (ar); + if (nread > 0) + dest.Write (buff, 0, nread); + + if (nread == 0 && retry < _retry) { + retry++; + read (len); + + return; + } + + if (nread == 0 || nread == len) { + if (completed != null) { + dest.Close (); + completed (dest.ToArray ()); + } + + dest.Dispose (); + return; } - dest.Dispose (); - return; - } - else { retry = 0; + read (len - nread); } - - read (len - nread); - } - catch (Exception ex) { - dest.Dispose (); - if (error != null) - error (ex); - } - }, - null); - }; + catch (Exception ex) { + dest.Dispose (); + if (error != null) + error (ex); + } + }, + null + ); + }; try { read (length);