diff --git a/websocket-sharp/Net/HttpConnection.cs b/websocket-sharp/Net/HttpConnection.cs index 2f1a80e0..82f3aaf8 100644 --- a/websocket-sharp/Net/HttpConnection.cs +++ b/websocket-sharp/Net/HttpConnection.cs @@ -278,7 +278,7 @@ namespace WebSocketSharp.Net if (conn._socket == null) return; - var len = 0; + var nread = 0; try { var current = conn._reuses; @@ -288,16 +288,7 @@ namespace WebSocketSharp.Net conn._timeoutCanceled[current] = true; } - var nread = conn._stream.EndRead (asyncResult); - - if (nread <= 0) { - conn.close (); - - return; - } - - conn._requestBuffer.Write (conn._buffer, 0, nread); - len = (int) conn._requestBuffer.Length; + nread = conn._stream.EndRead (asyncResult); } catch (Exception) { // TODO: Logging. @@ -307,6 +298,15 @@ namespace WebSocketSharp.Net return; } + if (nread <= 0) { + conn.close (); + + return; + } + + conn._requestBuffer.Write (conn._buffer, 0, nread); + var len = (int) conn._requestBuffer.Length; + if (conn.processInput (conn._requestBuffer.GetBuffer (), len)) { if (!conn._context.HasError) conn._context.Request.FinishInitialization ();