ソースを参照

DNS: Ensure order for DNS server match (#4510)

Fixes https://github.com/XTLS/Xray-core/issues/4508
风扇滑翔翼 10 ヶ月 前
コミット
335845a9b2
1 ファイル変更6 行追加1 行削除
  1. 6 1
      app/dns/dns.go

+ 6 - 1
app/dns/dns.go

@@ -4,6 +4,7 @@ package dns
 import (
 	"context"
 	"fmt"
+	"sort"
 	"strings"
 	"sync"
 
@@ -250,7 +251,11 @@ func (s *DNS) sortClients(domain string) []*Client {
 
 	// Priority domain matching
 	hasMatch := false
-	for _, match := range s.domainMatcher.Match(domain) {
+	MatchSlice := s.domainMatcher.Match(domain)
+	sort.Slice(MatchSlice, func(i, j int) bool {
+		return MatchSlice[i] < MatchSlice[j]
+	})
+	for _, match := range MatchSlice {
 		info := s.matcherInfos[match]
 		client := s.clients[info.clientIdx]
 		domainRule := client.domains[info.domainRuleIdx]