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

Fixes https://github.com/XTLS/Xray-core/issues/4508
This commit is contained in:
风扇滑翔翼 2025-03-20 19:21:21 +08:00 committed by GitHub
parent b70d0abebe
commit 335845a9b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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]