From 6f54d9390248533c85a564fbca1c72528504a410 Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Fri, 5 Oct 2018 10:20:30 -0400 Subject: [PATCH 1/2] #496 Dns resolve fix for external proxy --- .../Network/Tcp/TcpConnectionFactory.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs b/src/Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs index ef0911cb5..f3db4d30a 100644 --- a/src/Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs +++ b/src/Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs @@ -287,7 +287,16 @@ private async Task createServerConnection(string remoteHost var hostname = useUpstreamProxy ? externalProxy.HostName : remoteHostName; var port = useUpstreamProxy ? externalProxy.Port : remotePort; - var ipHostEntry = await Dns.GetHostEntryAsync(hostname); + IPHostEntry ipHostEntry; + if (IPAddress.TryParse(hostname, out var ipAddress)) + { + ipHostEntry = await Dns.GetHostEntryAsync(ipAddress); + } + else + { + ipHostEntry = await Dns.GetHostEntryAsync(hostname); + } + if (ipHostEntry == null || ipHostEntry.AddressList.Length == 0) { throw new Exception($"Could not resolve the hostname {hostname}"); From 49b5fb7793ad1f9930fcc90629c516cbe2b8a39d Mon Sep 17 00:00:00 2001 From: justcoding121 Date: Fri, 5 Oct 2018 10:24:27 -0400 Subject: [PATCH 2/2] use GetHostAddressesAsync --- .../Network/Tcp/TcpConnectionFactory.cs | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs b/src/Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs index f3db4d30a..58daaf078 100644 --- a/src/Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs +++ b/src/Titanium.Web.Proxy/Network/Tcp/TcpConnectionFactory.cs @@ -287,17 +287,8 @@ private async Task createServerConnection(string remoteHost var hostname = useUpstreamProxy ? externalProxy.HostName : remoteHostName; var port = useUpstreamProxy ? externalProxy.Port : remotePort; - IPHostEntry ipHostEntry; - if (IPAddress.TryParse(hostname, out var ipAddress)) - { - ipHostEntry = await Dns.GetHostEntryAsync(ipAddress); - } - else - { - ipHostEntry = await Dns.GetHostEntryAsync(hostname); - } - - if (ipHostEntry == null || ipHostEntry.AddressList.Length == 0) + var ipAddresses = await Dns.GetHostAddressesAsync(hostname); + if (ipAddresses == null || ipAddresses.Length == 0) { throw new Exception($"Could not resolve the hostname {hostname}"); } @@ -307,8 +298,6 @@ private async Task createServerConnection(string remoteHost session.TimeLine["Dns Resolved"] = DateTime.Now; } - var ipAddresses = ipHostEntry.AddressList; - for (int i = 0; i < ipAddresses.Length; i++) { try