From fe73f03371d3906c5723e4ecbf3d5cc48dd0a58d Mon Sep 17 00:00:00 2001 From: Kazuhiro Fujieda Date: Mon, 12 Feb 2018 16:29:23 +0900 Subject: [PATCH] =?utf8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92=E5=8F=96?= =?utf8?q?=E3=82=8A=E3=81=93=E3=81=BC=E3=81=99=E3=81=93=E3=81=A8=E3=81=8C?= =?utf8?q?=E3=81=82=E3=82=8B=E3=81=AE=E3=82=92=E7=9B=B4=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KancolleSniffer/HttpProxy.cs | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/KancolleSniffer/HttpProxy.cs b/KancolleSniffer/HttpProxy.cs index a8f12ac..e738670 100644 --- a/KancolleSniffer/HttpProxy.cs +++ b/KancolleSniffer/HttpProxy.cs @@ -121,9 +121,8 @@ namespace KancolleSniffer ReceiveResponse(); if (_session.Response.StatusCode == null) return; - SendResponse(); - Close(); AfterSessionComplete?.Invoke(_session); + SendResponse(); } #if DEBUG catch (Exception e) @@ -159,8 +158,8 @@ namespace KancolleSniffer private void SendRequest() { _server = ConnectServer(); - _serverStream = new HttpStream(_server). - WriteLines(_session.Request.RequestLine + _session.Request.ModifiedHeaders); + _serverStream = + new HttpStream(_server).WriteLines(_session.Request.RequestLine + _session.Request.ModifiedHeaders); } private void SendRequestBody() @@ -279,10 +278,31 @@ namespace KancolleSniffer private void Close() { - _serverStream?.Close(); - _clientStream?.Close(); - _server?.Close(); - _client.Close(); + SocketClose(_server); + SocketClose(_client); + } + + private void SocketClose(Socket socket) + { + if (socket == null) + return; + try + { + socket.Shutdown(SocketShutdown.Both); + } + // ReSharper disable EmptyGeneralCatchClause + catch + + { + } + try + { + socket.Close(); + } + catch + // ReSharper restore EmptyGeneralCatchClause + { + } } } @@ -615,12 +635,6 @@ namespace KancolleSniffer offset += n; } while (count > 0); } - - public HttpStream Close() - { - _socket.Close(); - return this; - } } } } \ No newline at end of file -- 2.11.0