diff --git a/FastGithub.Scanner/LookupProviders/PublicDnsProvider.cs b/FastGithub.Scanner/LookupProviders/PublicDnsProvider.cs
index 2298f06..f7b701a 100644
--- a/FastGithub.Scanner/LookupProviders/PublicDnsProvider.cs
+++ b/FastGithub.Scanner/LookupProviders/PublicDnsProvider.cs
@@ -80,7 +80,10 @@ namespace FastGithub.Scanner.LookupProviders
{
try
{
- var addresses = await client.Lookup(domain, cancellationToken: cancellationToken);
+ using var timeoutTokenSource = new CancellationTokenSource(this.options.CurrentValue.Timeout);
+ using var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(timeoutTokenSource.Token, cancellationToken);
+
+ var addresses = await client.Lookup(domain, cancellationToken: linkedTokenSource.Token);
foreach (var address in addresses)
{
if (address.AddressFamily == AddressFamily.InterNetwork)
diff --git a/FastGithub.Scanner/LookupProviders/PublicDnsProviderOptions.cs b/FastGithub.Scanner/LookupProviders/PublicDnsProviderOptions.cs
index b6d0972..e707c1c 100644
--- a/FastGithub.Scanner/LookupProviders/PublicDnsProviderOptions.cs
+++ b/FastGithub.Scanner/LookupProviders/PublicDnsProviderOptions.cs
@@ -13,6 +13,11 @@ namespace FastGithub.Scanner.LookupProviders
///
public bool Enable { get; set; } = true;
+ ///
+ /// dns查询超时时长
+ ///
+ public TimeSpan Timeout { get; set; } = TimeSpan.FromMilliseconds(100d);
+
///
/// dns列表
///
diff --git a/FastGithub/appsettings.json b/FastGithub/appsettings.json
index 049c4c7..e18d86f 100644
--- a/FastGithub/appsettings.json
+++ b/FastGithub/appsettings.json
@@ -24,6 +24,7 @@
},
"PublicDnsProvider": {
"Enable": true, // ÊÇ·ñÐèÒª´Ódns·þÎñÆ÷²éÕÒip
+ "Timeout": "00:00:00.100", // dns²éѯ³¬Ê±Ê±³¤
"Dnss": [ // dns·þÎñÆ÷Áбí
"1.2.4.8",
"8.8.8.8",