From 50309a0fe358245dfbd0d9d5fb2d66654dba8cee Mon Sep 17 00:00:00 2001 From: GameXG Date: Mon, 27 Jul 2015 13:27:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9socks5=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=BB=BA=E7=AB=8B=E6=88=90=E5=8A=9F=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D=E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原始的是socks5收到tcp代理请求立刻回复已连接到远程主机。 现在改为只有建立了到远程ss的连接后才回复链接已建立。 --- shadowsocks-csharp/Controller/Service/TCPRelay.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/shadowsocks-csharp/Controller/Service/TCPRelay.cs b/shadowsocks-csharp/Controller/Service/TCPRelay.cs index 5c9de444..478d2af3 100644 --- a/shadowsocks-csharp/Controller/Service/TCPRelay.cs +++ b/shadowsocks-csharp/Controller/Service/TCPRelay.cs @@ -74,7 +74,7 @@ namespace Shadowsocks.Controller private bool connectionShutdown = false; private bool remoteShutdown = false; private bool closed = false; - + private object encryptionLock = new object(); private object decryptionLock = new object(); @@ -222,14 +222,13 @@ namespace Shadowsocks.Controller try { int bytesRead = connection.EndReceive(ar); - + if (bytesRead >= 3) { command = connetionRecvBuffer[1]; if (command == 1) { - byte[] response = { 5, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; - connection.BeginSend(response, 0, response.Length, 0, new AsyncCallback(ResponseCallback), null); + StartConnect(); } else if (command == 3) { @@ -312,7 +311,7 @@ namespace Shadowsocks.Controller { connection.EndSend(ar); - StartConnect(); + StartPipe(); } catch (Exception e) @@ -326,7 +325,7 @@ namespace Shadowsocks.Controller { public Server Server; - public ServerTimer(int p) :base(p) + public ServerTimer(int p) : base(p) { } } @@ -432,7 +431,8 @@ namespace Shadowsocks.Controller strategy.UpdateLatency(server, latency); } - StartPipe(); + byte[] response = { 5, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; + connection.BeginSend(response, 0, response.Length, 0, new AsyncCallback(ResponseCallback), null); } catch (ArgumentException) {