فهرست منبع

ipv6 only的支持

老九 3 سال پیش
والد
کامیت
602a41a94e
2فایلهای تغییر یافته به همراه19 افزوده شده و 9 حذف شده
  1. 16 7
      FastGithub.DomainResolve/DnsClient.cs
  2. 3 2
      FastGithub/appsettings.json

+ 16 - 7
FastGithub.DomainResolve/DnsClient.cs

@@ -91,7 +91,12 @@ namespace FastGithub.DomainResolve
 
             foreach (var fallbackDns in this.fastGithubConfig.FallbackDns)
             {
-                if (Socket.OSSupportsIPv6 || fallbackDns.AddressFamily != AddressFamily.InterNetworkV6)
+                if (Socket.OSSupportsIPv4 && fallbackDns.AddressFamily == AddressFamily.InterNetwork)
+                {
+                    yield return fallbackDns;
+                }
+
+                if (Socket.OSSupportsIPv6 && fallbackDns.AddressFamily == AddressFamily.InterNetworkV6)
                 {
                     yield return fallbackDns;
                 }
@@ -191,17 +196,21 @@ namespace FastGithub.DomainResolve
         /// <returns></returns>
         private static async Task<IList<IResourceRecord>> GetAnswerRecordsAsync(IRequestResolver resolver, string domain, CancellationToken cancellationToken)
         {
-            var answerRecords = await GetAnswerAsync(RecordType.A);
+            var answerRecords = new List<IResourceRecord>();
+            if (Socket.OSSupportsIPv4 == true)
+            {
+                var records = await GetAnswerAsync(RecordType.A);
+                answerRecords.AddRange(records);
+            }
+
             if (Socket.OSSupportsIPv6 == true)
             {
-                var ipv6Records = await GetAnswerAsync(RecordType.AAAA);
-                foreach (var record in ipv6Records)
-                {
-                    answerRecords.Add(record);
-                }
+                var records = await GetAnswerAsync(RecordType.AAAA);
+                answerRecords.AddRange(records);
             }
             return answerRecords;
 
+
             async Task<IList<IResourceRecord>> GetAnswerAsync(RecordType recordType)
             {
                 var request = new Request

+ 3 - 2
FastGithub/appsettings.json

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