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",