diff --git a/shadowsocks-csharp/Controller/Service/PortForwarder.cs b/shadowsocks-csharp/Controller/Service/PortForwarder.cs index 5429b053..46ec9733 100644 --- a/shadowsocks-csharp/Controller/Service/PortForwarder.cs +++ b/shadowsocks-csharp/Controller/Service/PortForwarder.cs @@ -7,11 +7,11 @@ namespace Shadowsocks.Controller { class PortForwarder : Listener.Service { - int _targetPort; + private readonly int _targetPort; public PortForwarder(int targetPort) { - this._targetPort = targetPort; + _targetPort = targetPort; } public override bool Handle(byte[] firstPacket, int length, Socket socket, object state) @@ -20,11 +20,11 @@ namespace Shadowsocks.Controller { return false; } - new Handler().Start(firstPacket, length, socket, this._targetPort); + new Handler().Start(firstPacket, length, socket, _targetPort); return true; } - class Handler + private class Handler { private byte[] _firstPacket; private int _firstPacketLength; @@ -33,7 +33,7 @@ namespace Shadowsocks.Controller private bool _closed = false; private bool _localShutdown = false; private bool _remoteShutdown = false; - public const int RecvSize = 16384; + private const int RecvSize = 2048; // remote receive buffer private byte[] remoteRecvBuffer = new byte[RecvSize]; // connection receive buffer @@ -44,9 +44,9 @@ namespace Shadowsocks.Controller public void Start(byte[] firstPacket, int length, Socket socket, int targetPort) { - this._firstPacket = firstPacket; - this._firstPacketLength = length; - this._local = socket; + _firstPacket = firstPacket; + _firstPacketLength = length; + _local = socket; try { EndPoint remoteEP = SocketUtil.GetEndPoint("127.0.0.1", targetPort); @@ -58,7 +58,7 @@ namespace Shadowsocks.Controller catch (Exception e) { Logging.LogUsefulException(e); - this.Close(); + Close(); } } @@ -77,7 +77,7 @@ namespace Shadowsocks.Controller catch (Exception e) { Logging.LogUsefulException(e); - this.Close(); + Close(); } } @@ -89,12 +89,12 @@ namespace Shadowsocks.Controller } try { - _remote.BeginSend(_firstPacket, 0, _firstPacketLength, 0, new AsyncCallback(StartPipe), null); + _remote.BeginSend(_firstPacket, 0, _firstPacketLength, 0, StartPipe, null); } catch (Exception e) { Logging.LogUsefulException(e); - this.Close(); + Close(); } } @@ -108,14 +108,14 @@ namespace Shadowsocks.Controller { _remote.EndSend(ar); _remote.BeginReceive(remoteRecvBuffer, 0, RecvSize, 0, - new AsyncCallback(PipeRemoteReceiveCallback), null); + PipeRemoteReceiveCallback, null); _local.BeginReceive(connetionRecvBuffer, 0, RecvSize, 0, - new AsyncCallback(PipeConnectionReceiveCallback), null); + PipeConnectionReceiveCallback, null); } catch (Exception e) { Logging.LogUsefulException(e); - this.Close(); + Close(); } } @@ -128,10 +128,9 @@ namespace Shadowsocks.Controller try { int bytesRead = _remote.EndReceive(ar); - if (bytesRead > 0) { - _local.BeginSend(remoteRecvBuffer, 0, bytesRead, 0, new AsyncCallback(PipeConnectionSendCallback), null); + _local.BeginSend(remoteRecvBuffer, 0, bytesRead, 0, PipeConnectionSendCallback, null); } else { @@ -143,7 +142,7 @@ namespace Shadowsocks.Controller catch (Exception e) { Logging.LogUsefulException(e); - this.Close(); + Close(); } } @@ -156,10 +155,9 @@ namespace Shadowsocks.Controller try { int bytesRead = _local.EndReceive(ar); - if (bytesRead > 0) { - _remote.BeginSend(connetionRecvBuffer, 0, bytesRead, 0, new AsyncCallback(PipeRemoteSendCallback), null); + _remote.BeginSend(connetionRecvBuffer, 0, bytesRead, 0, PipeRemoteSendCallback, null); } else { @@ -171,7 +169,7 @@ namespace Shadowsocks.Controller catch (Exception e) { Logging.LogUsefulException(e); - this.Close(); + Close(); } } @@ -184,13 +182,13 @@ namespace Shadowsocks.Controller try { _remote.EndSend(ar); - _local.BeginReceive(this.connetionRecvBuffer, 0, RecvSize, 0, - new AsyncCallback(PipeConnectionReceiveCallback), null); + _local.BeginReceive(connetionRecvBuffer, 0, RecvSize, 0, + PipeConnectionReceiveCallback, null); } catch (Exception e) { Logging.LogUsefulException(e); - this.Close(); + Close(); } } @@ -203,13 +201,13 @@ namespace Shadowsocks.Controller try { _local.EndSend(ar); - _remote.BeginReceive(this.remoteRecvBuffer, 0, RecvSize, 0, - new AsyncCallback(PipeRemoteReceiveCallback), null); + _remote.BeginReceive(remoteRecvBuffer, 0, RecvSize, 0, + PipeRemoteReceiveCallback, null); } catch (Exception e) { Logging.LogUsefulException(e); - this.Close(); + Close(); } } @@ -217,7 +215,7 @@ namespace Shadowsocks.Controller { if (_localShutdown && _remoteShutdown) { - this.Close(); + Close(); } }