Browse Source

DNS查询改进

懒得勤快 4 years ago
parent
commit
2fd5f7f18f

+ 4 - 2
Masuit.Tools.Abstractions/Extensions/BaseType/StringExtensions.cs

@@ -11,6 +11,7 @@ using System.Net.Sockets;
 using System.Numerics;
 using System.Text;
 using System.Text.RegularExpressions;
+using System.Threading;
 using System.Threading.Tasks;
 
 namespace Masuit.Tools
@@ -187,7 +188,7 @@ namespace Masuit.Tools
             if (isMatch && valid)
             {
                 var nslookup = new LookupClient();
-                var task = nslookup.Query(s.Split('@')[1], QueryType.MX).Answers.MxRecords().SelectAsync(r => Dns.GetHostAddressesAsync(r.Exchange.Value).ContinueWith(t =>
+                var task = nslookup.QueryCache(s.Split('@')[1], QueryType.MX).Answers.MxRecords().SelectAsync(r => Dns.GetHostAddressesAsync(r.Exchange.Value).ContinueWith(t =>
                 {
                     if (t.IsCanceled || t.IsFaulted)
                     {
@@ -220,7 +221,8 @@ namespace Masuit.Tools
             if (isMatch && valid)
             {
                 var nslookup = new LookupClient();
-                var query = await nslookup.QueryAsync(s.Split('@')[1], QueryType.MX);
+                using var cts = new CancellationTokenSource(100);
+                var query = await nslookup.QueryAsync(s.Split('@')[1], QueryType.MX, cancellationToken: cts.Token);
                 var result = await query.Answers.MxRecords().SelectAsync(r => Dns.GetHostAddressesAsync(r.Exchange.Value).ContinueWith(t =>
                 {
                     if (t.IsCanceled || t.IsFaulted)

+ 1 - 1
Masuit.Tools.Abstractions/Models/EmailAddress.cs

@@ -15,7 +15,7 @@ namespace Masuit.Tools.Models
             get
             {
                 var nslookup = new LookupClient();
-                var query = nslookup.Query(Domain, QueryType.MX).Answers.MxRecords().SelectMany(r => Dns.GetHostAddresses(r.Exchange.Value)).ToList();
+                var query = nslookup.QueryCache(Domain, QueryType.MX).Answers.MxRecords().SelectMany(r => Dns.GetHostAddresses(r.Exchange.Value)).ToList();
                 return query.FindAll(ip => !ip.IsPrivateIP());
             }
         }

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -31,7 +31,7 @@ github:https://github.com/ldqk/Masuit.Tools
 
     <ItemGroup>
         <PackageReference Include="DnsClient" Version="1.5.0" />
-        <PackageReference Include="HtmlSanitizer" Version="6.0.437" />
+        <PackageReference Include="HtmlSanitizer" Version="6.0.441" />
         <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
         <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0" />
         <PackageReference Include="Microsoft.Extensions.Http" Version="5.0" />