浏览代码

AAAA记录解析

老九 3 年之前
父节点
当前提交
21bf7932de
共有 2 个文件被更改,包括 10 次插入17 次删除
  1. 9 15
      FastGithub.DomainResolve/DnsClient.cs
  2. 1 2
      FastGithub/appsettings.json

+ 9 - 15
FastGithub.DomainResolve/DnsClient.cs

@@ -91,12 +91,7 @@ namespace FastGithub.DomainResolve
 
 
             foreach (var fallbackDns in this.fastGithubConfig.FallbackDns)
             foreach (var fallbackDns in this.fastGithubConfig.FallbackDns)
             {
             {
-                if (Socket.OSSupportsIPv4 && fallbackDns.AddressFamily == AddressFamily.InterNetwork)
-                {
-                    yield return fallbackDns;
-                }
-
-                if (Socket.OSSupportsIPv6 && fallbackDns.AddressFamily == AddressFamily.InterNetworkV6)
+                if (Socket.OSSupportsIPv6 || fallbackDns.AddressFamily != AddressFamily.InterNetworkV6)
                 {
                 {
                     yield return fallbackDns;
                     yield return fallbackDns;
                 }
                 }
@@ -161,9 +156,8 @@ namespace FastGithub.DomainResolve
                 ? (IRequestResolver)new TcpRequestResolver(dns)
                 ? (IRequestResolver)new TcpRequestResolver(dns)
                 : new UdpRequestResolver(dns, new TcpRequestResolver(dns), this.resolveTimeout);
                 : new UdpRequestResolver(dns, new TcpRequestResolver(dns), this.resolveTimeout);
 
 
-            var answerRecords = await GetAnswerRecordsAsync(resolver, endPoint.Host, cancellationToken);
-            var addresses = answerRecords
-                .OfType<IPAddressResourceRecord>()
+            var addressRecords = await GetAddressRecordsAsync(resolver, endPoint.Host, cancellationToken);
+            var addresses = addressRecords
                 .Where(item => IPAddress.IsLoopback(item.IPAddress) == false)
                 .Where(item => IPAddress.IsLoopback(item.IPAddress) == false)
                 .Select(item => item.IPAddress)
                 .Select(item => item.IPAddress)
                 .ToArray();
                 .ToArray();
@@ -178,7 +172,7 @@ namespace FastGithub.DomainResolve
                 addresses = await OrderByConnectAnyAsync(addresses, endPoint.Port, cancellationToken);
                 addresses = await OrderByConnectAnyAsync(addresses, endPoint.Port, cancellationToken);
             }
             }
 
 
-            var timeToLive = answerRecords.First().TimeToLive;
+            var timeToLive = addressRecords.First().TimeToLive;
             if (timeToLive <= TimeSpan.Zero)
             if (timeToLive <= TimeSpan.Zero)
             {
             {
                 timeToLive = this.defaultEmptyTtl;
                 timeToLive = this.defaultEmptyTtl;
@@ -188,25 +182,25 @@ namespace FastGithub.DomainResolve
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 获取答案
+        /// 获取IP记录
         /// </summary>
         /// </summary>
         /// <param name="resolver"></param>
         /// <param name="resolver"></param>
         /// <param name="domain"></param> 
         /// <param name="domain"></param> 
         /// <param name="cancellationToken"></param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
         /// <returns></returns>
-        private static async Task<IList<IResourceRecord>> GetAnswerRecordsAsync(IRequestResolver resolver, string domain, CancellationToken cancellationToken)
+        private static async Task<IList<IPAddressResourceRecord>> GetAddressRecordsAsync(IRequestResolver resolver, string domain, CancellationToken cancellationToken)
         {
         {
-            var answerRecords = new List<IResourceRecord>();
+            var answerRecords = new List<IPAddressResourceRecord>();
             if (Socket.OSSupportsIPv4 == true)
             if (Socket.OSSupportsIPv4 == true)
             {
             {
                 var records = await GetAnswerAsync(RecordType.A);
                 var records = await GetAnswerAsync(RecordType.A);
-                answerRecords.AddRange(records);
+                answerRecords.AddRange(records.OfType<IPAddressResourceRecord>());
             }
             }
 
 
             if (Socket.OSSupportsIPv6 == true)
             if (Socket.OSSupportsIPv6 == true)
             {
             {
                 var records = await GetAnswerAsync(RecordType.AAAA);
                 var records = await GetAnswerAsync(RecordType.AAAA);
-                answerRecords.AddRange(records);
+                answerRecords.AddRange(records.OfType<IPAddressResourceRecord>());
             }
             }
             return answerRecords;
             return answerRecords;
 
 

+ 1 - 2
FastGithub/appsettings.json

@@ -4,8 +4,7 @@
     "HttpProxyPort": 38457, // http代理端口,linux/osx平台使用
     "HttpProxyPort": 38457, // http代理端口,linux/osx平台使用
     "FallbackDns": [ // 以下dns必须要支持tcp
     "FallbackDns": [ // 以下dns必须要支持tcp
       "114.114.114.114:53",
       "114.114.114.114:53",
-      "119.29.29.29:53",
-      "[2400:3200::1]:53"
+      "119.29.29.29:53"
     ],
     ],
     "DomainConfigs": {
     "DomainConfigs": {
       "*.fastgithub.com": { // 域名的*表示除.之外0到多个任意字符
       "*.fastgithub.com": { // 域名的*表示除.之外0到多个任意字符