From b335e6c8f58a7fc33d04eea0d03e2ef7be7f25f7 Mon Sep 17 00:00:00 2001 From: noisyfox Date: Sat, 20 Aug 2016 11:33:59 +1000 Subject: [PATCH] Revert changes in UDPRelay.cs UDP SendTo doesn't support DnsEndPoint. Signed-off-by: noisyfox --- shadowsocks-csharp/Controller/Service/Listener.cs | 3 ++- shadowsocks-csharp/Controller/Service/UDPRelay.cs | 15 +++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/shadowsocks-csharp/Controller/Service/Listener.cs b/shadowsocks-csharp/Controller/Service/Listener.cs index 1d755eca..ace05e7a 100644 --- a/shadowsocks-csharp/Controller/Service/Listener.cs +++ b/shadowsocks-csharp/Controller/Service/Listener.cs @@ -116,8 +116,9 @@ namespace Shadowsocks.Controller catch (ObjectDisposedException) { } - catch (Exception) + catch (Exception ex) { + Logging.LogUsefulException(ex); } finally { diff --git a/shadowsocks-csharp/Controller/Service/UDPRelay.cs b/shadowsocks-csharp/Controller/Service/UDPRelay.cs index 0a5a18ac..5f0d2363 100644 --- a/shadowsocks-csharp/Controller/Service/UDPRelay.cs +++ b/shadowsocks-csharp/Controller/Service/UDPRelay.cs @@ -7,7 +7,6 @@ using System.Runtime.CompilerServices; using Shadowsocks.Controller.Strategy; using Shadowsocks.Encryption; using Shadowsocks.Model; -using Shadowsocks.Util; namespace Shadowsocks.Controller { @@ -57,7 +56,7 @@ namespace Shadowsocks.Controller private byte[] _buffer = new byte[1500]; private IPEndPoint _localEndPoint; - private EndPoint _remoteEndPoint; + private IPEndPoint _remoteEndPoint; public UDPHandler(Socket local, Server server, IPEndPoint localEndPoint) { @@ -65,8 +64,16 @@ namespace Shadowsocks.Controller _server = server; _localEndPoint = localEndPoint; - _remoteEndPoint = SocketUtil.GetEndPoint(server.server, server.server_port); - _remote = SocketUtil.CreateSocket(_remoteEndPoint, ProtocolType.Udp); + // TODO async resolving + IPAddress ipAddress; + bool parsed = IPAddress.TryParse(server.server, out ipAddress); + if (!parsed) + { + IPHostEntry ipHostInfo = Dns.GetHostEntry(server.server); + ipAddress = ipHostInfo.AddressList[0]; + } + _remoteEndPoint = new IPEndPoint(ipAddress, server.server_port); + _remote = new Socket(_remoteEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp); } public void Send(byte[] data, int length)