diff --git a/websocket-sharp/Net/HttpConnection.cs b/websocket-sharp/Net/HttpConnection.cs index 2b0ea51e..6d72902b 100644 --- a/websocket-sharp/Net/HttpConnection.cs +++ b/websocket-sharp/Net/HttpConnection.cs @@ -372,10 +372,13 @@ namespace WebSocketSharp.Net _currentLine = new StringBuilder (64); var nread = 0; + try { string line; + while ((line = readLineFrom (data, _position, length, out nread)) != null) { _position += nread; + if (line.Length == 0) { if (_inputState == InputState.RequestLine) continue; @@ -384,6 +387,7 @@ namespace WebSocketSharp.Net _context.ErrorMessage = "Headers too long"; _currentLine = null; + return true; } @@ -401,12 +405,15 @@ namespace WebSocketSharp.Net } catch (Exception ex) { _context.ErrorMessage = ex.Message; + return true; } _position += nread; + if (_position >= 32768) { _context.ErrorMessage = "Headers too long"; + return true; }