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