ReceiveResponse();\r
if (_session.Response.StatusCode == null)\r
return;\r
- SendResponse();\r
- Close();\r
AfterSessionComplete?.Invoke(_session);\r
+ SendResponse();\r
}\r
#if DEBUG\r
catch (Exception e)\r
private void SendRequest()\r
{\r
_server = ConnectServer();\r
- _serverStream = new HttpStream(_server).\r
- WriteLines(_session.Request.RequestLine + _session.Request.ModifiedHeaders);\r
+ _serverStream =\r
+ new HttpStream(_server).WriteLines(_session.Request.RequestLine + _session.Request.ModifiedHeaders);\r
}\r
\r
private void SendRequestBody()\r
\r
private void Close()\r
{\r
- _serverStream?.Close();\r
- _clientStream?.Close();\r
- _server?.Close();\r
- _client.Close();\r
+ SocketClose(_server);\r
+ SocketClose(_client);\r
+ }\r
+\r
+ private void SocketClose(Socket socket)\r
+ {\r
+ if (socket == null)\r
+ return;\r
+ try\r
+ {\r
+ socket.Shutdown(SocketShutdown.Both);\r
+ }\r
+ // ReSharper disable EmptyGeneralCatchClause\r
+ catch\r
+\r
+ {\r
+ }\r
+ try\r
+ {\r
+ socket.Close();\r
+ }\r
+ catch\r
+ // ReSharper restore EmptyGeneralCatchClause\r
+ {\r
+ }\r
}\r
}\r
\r
offset += n;\r
} while (count > 0);\r
}\r
-\r
- public HttpStream Close()\r
- {\r
- _socket.Close();\r
- return this;\r
- }\r
}\r
}\r
}
\ No newline at end of file