Fix for issue #131
This commit is contained in:
parent
36dee90278
commit
323161988e
@ -256,11 +256,13 @@ namespace WebSocketSharp.Net
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var nread = -1;
|
var nread = -1;
|
||||||
|
var len = 0L;
|
||||||
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);
|
||||||
if (conn._requestBuffer.Length > 32768) {
|
len = conn._requestBuffer.Length;
|
||||||
|
if (len > 32768) {
|
||||||
conn.SendError ("Bad request", 400);
|
conn.SendError ("Bad request", 400);
|
||||||
conn.Close (true);
|
conn.Close (true);
|
||||||
|
|
||||||
@ -280,7 +282,7 @@ namespace WebSocketSharp.Net
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (conn.processInput (conn._requestBuffer.GetBuffer ())) {
|
if (conn.processInput (conn._requestBuffer.GetBuffer (), (int) len)) {
|
||||||
if (!conn._context.HasError)
|
if (!conn._context.HasError)
|
||||||
conn._context.Request.FinishInitialization ();
|
conn._context.Request.FinishInitialization ();
|
||||||
|
|
||||||
@ -323,13 +325,12 @@ namespace WebSocketSharp.Net
|
|||||||
|
|
||||||
// true -> Done processing.
|
// true -> Done processing.
|
||||||
// false -> Need more input.
|
// false -> Need more input.
|
||||||
private bool processInput (byte[] data)
|
private bool processInput (byte[] data, int length)
|
||||||
{
|
{
|
||||||
var len = data.Length;
|
|
||||||
var nread = 0;
|
var nread = 0;
|
||||||
try {
|
try {
|
||||||
string line;
|
string line;
|
||||||
while ((line = readLineFrom (data, _position, len - _position, ref nread)) != null) {
|
while ((line = readLineFrom (data, _position, length - _position, ref nread)) != null) {
|
||||||
_position += nread;
|
_position += nread;
|
||||||
if (line.Length == 0) {
|
if (line.Length == 0) {
|
||||||
if (_inputState == InputState.RequestLine)
|
if (_inputState == InputState.RequestLine)
|
||||||
@ -357,11 +358,6 @@ namespace WebSocketSharp.Net
|
|||||||
}
|
}
|
||||||
|
|
||||||
_position += nread;
|
_position += nread;
|
||||||
if (nread == len) {
|
|
||||||
_requestBuffer.SetLength (0);
|
|
||||||
_position = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -483,7 +479,7 @@ namespace WebSocketSharp.Net
|
|||||||
return _inputStream;
|
return _inputStream;
|
||||||
|
|
||||||
var buff = _requestBuffer.GetBuffer ();
|
var buff = _requestBuffer.GetBuffer ();
|
||||||
var len = buff.Length;
|
var len = (int) _requestBuffer.Length;
|
||||||
disposeRequestBuffer ();
|
disposeRequestBuffer ();
|
||||||
if (chunked) {
|
if (chunked) {
|
||||||
_chunked = true;
|
_chunked = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user