Fix for force close in HttpConnection.cs

This commit is contained in:
sta 2014-05-25 03:00:14 +09:00
parent 72565cc8fe
commit f85f227a79
2 changed files with 24 additions and 21 deletions

View File

@ -204,6 +204,7 @@ namespace WebSocketSharp.Net
return;
_inputStream = null;
_outputStream = null;
_websocketStream = null;
_stream.Dispose ();
@ -415,19 +416,13 @@ namespace WebSocketSharp.Net
if (_socket == null)
return;
if (_outputStream != null) {
_outputStream.Close ();
_outputStream = null;
}
if (!force) {
GetResponseStream ().Close ();
var req = _context.Request;
var res = _context.Response;
force |= !req.KeepAlive;
if (!force)
force = res.Headers ["Connection"] == "close";
if (!force &&
if (req.KeepAlive &&
!res.CloseConnection &&
req.FlushInput () &&
(!_chunked || (_chunked && !res.ForceCloseChunked))) {
// Don't close. Keep working.
@ -439,6 +434,7 @@ namespace WebSocketSharp.Net
return;
}
}
close ();
}

View File

@ -91,6 +91,12 @@ namespace WebSocketSharp.Net
#region Internal Properties
internal bool CloseConnection {
get {
return _headers ["Connection"] == "close";
}
}
internal bool ForceCloseChunked {
get {
return _forceCloseChunked;
@ -242,6 +248,7 @@ namespace WebSocketSharp.Net
/// </exception>
public WebHeaderCollection Headers {
get {
checkDisposed ();
return _headers;
}