Skip to content

Commit 2559698

Browse files
committed
Callback to synchronous DNS resolver if async one fails
1 parent b169c2c commit 2559698

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

Utility/PluginHttpClientBuilder.cs

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -499,24 +499,32 @@ private static async ValueTask<Stream> ExternalDnsConnectCallback(SocketsHttpCon
499499
throw;
500500
}
501501

502-
Task<IPAddress[]> GetCallbackResult()
502+
async Task<IPAddress[]> GetCallbackResult()
503503
{
504-
if (SharedStatic.InstanceDnsResolverCallbackAsync != null)
504+
try
505505
{
506-
return GetDnsResolverArrayFromCallbackAsync(context.DnsEndPoint.Host, token);
506+
if (SharedStatic.InstanceDnsResolverCallbackAsync != null)
507+
{
508+
return await GetDnsResolverArrayFromCallbackAsync(context.DnsEndPoint.Host, token);
509+
}
510+
}
511+
catch
512+
{
513+
// Ignored
507514
}
508515

509-
return Task.Factory.StartNew(() =>
510-
{
511-
GetDnsResolverArrayFromCallback(context.DnsEndPoint.Host, out string[] ipAddresses);
512-
IPAddress[] addressReturn = new IPAddress[ipAddresses.Length];
513-
for (int i = 0; i < ipAddresses.Length; i++)
514-
{
515-
addressReturn[i] = IPAddress.Parse(ipAddresses[i]);
516-
}
517-
518-
return addressReturn;
519-
}, token);
516+
return await Task.Factory
517+
.StartNew(() =>
518+
{
519+
GetDnsResolverArrayFromCallback(context.DnsEndPoint.Host, out string[] ipAddresses);
520+
IPAddress[] addressReturn = new IPAddress[ipAddresses.Length];
521+
for (int i = 0; i < ipAddresses.Length; i++)
522+
{
523+
addressReturn[i] = IPAddress.Parse(ipAddresses[i]);
524+
}
525+
526+
return addressReturn;
527+
}, token);
520528
}
521529
}
522530
}

0 commit comments

Comments
 (0)