Refactored a few for HttpConnection.cs

This commit is contained in:
sta 2015-05-26 17:37:48 +09:00
parent fbcf8377d3
commit 086956c910

View File

@ -256,22 +256,16 @@ namespace WebSocketSharp.Net
return; return;
var nread = -1; var nread = -1;
var len = 0L; var len = 0;
try { try {
conn._timer.Change (Timeout.Infinite, Timeout.Infinite); conn._timer.Change (Timeout.Infinite, Timeout.Infinite);
nread = conn._stream.EndRead (asyncResult); nread = conn._stream.EndRead (asyncResult);
conn._requestBuffer.Write (conn._buffer, 0, nread); conn._requestBuffer.Write (conn._buffer, 0, nread);
len = conn._requestBuffer.Length; len = (int) conn._requestBuffer.Length;
if (len > 32768) {
conn.SendError ("Bad request", 400);
conn.Close (true);
return;
} }
} catch (Exception ex) {
catch {
if (conn._requestBuffer != null && conn._requestBuffer.Length > 0) if (conn._requestBuffer != null && conn._requestBuffer.Length > 0)
conn.SendError (); conn.SendError (ex.Message, 400);
conn.close (); conn.close ();
return; return;
@ -282,7 +276,7 @@ namespace WebSocketSharp.Net
return; return;
} }
if (conn.processInput (conn._requestBuffer.GetBuffer (), (int) len)) { if (conn.processInput (conn._requestBuffer.GetBuffer (), len)) {
if (!conn._context.HasError) if (!conn._context.HasError)
conn._context.Request.FinishInitialization (); conn._context.Request.FinishInitialization ();
@ -339,6 +333,9 @@ namespace WebSocketSharp.Net
if (_inputState == InputState.RequestLine) if (_inputState == InputState.RequestLine)
continue; continue;
if (_position > 32768)
_context.ErrorMessage = "Bad request";
_currentLine = null; _currentLine = null;
return true; return true;
} }
@ -361,6 +358,11 @@ namespace WebSocketSharp.Net
} }
_position += nread; _position += nread;
if (_position >= 32768) {
_context.ErrorMessage = "Bad request";
return true;
}
return false; return false;
} }