From a783cd5f0899f20ec15dbe650be6a08aa739d062 Mon Sep 17 00:00:00 2001 From: Loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Date: Tue, 10 Aug 2021 11:08:05 +0800 Subject: [PATCH] DNS: refine code (#1193) --- app/dns/dns.go | 8 ++++---- app/dns/nameserver.go | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/dns/dns.go b/app/dns/dns.go index 8493972f6..5429a1e17 100644 --- a/app/dns/dns.go +++ b/app/dns/dns.go @@ -32,7 +32,7 @@ type DNS struct { clients []*Client ctx context.Context domainMatcher strmatcher.IndexMatcher - matcherInfos []DomainMatcherInfo + matcherInfos []*DomainMatcherInfo } // DomainMatcherInfo contains information attached to index returned by Server.domainMatcher @@ -92,7 +92,7 @@ func New(ctx context.Context, config *Config) (*DNS, error) { } // MatcherInfos is ensured to cover the maximum index domainMatcher could return, where matcher's index starts from 1 - matcherInfos := make([]DomainMatcherInfo, domainRuleCount+1) + matcherInfos := make([]*DomainMatcherInfo, domainRuleCount+1) domainMatcher := &strmatcher.MatcherGroup{} geoipContainer := router.GeoIPMatcherContainer{} @@ -107,9 +107,9 @@ func New(ctx context.Context, config *Config) (*DNS, error) { for _, ns := range config.NameServer { clientIdx := len(clients) - updateDomain := func(domainRule strmatcher.Matcher, originalRuleIdx int, matcherInfos []DomainMatcherInfo) error { + updateDomain := func(domainRule strmatcher.Matcher, originalRuleIdx int, matcherInfos []*DomainMatcherInfo) error { midx := domainMatcher.Add(domainRule) - matcherInfos[midx] = DomainMatcherInfo{ + matcherInfos[midx] = &DomainMatcherInfo{ clientIdx: uint16(clientIdx), domainRuleIdx: uint16(originalRuleIdx), } diff --git a/app/dns/nameserver.go b/app/dns/nameserver.go index 0924cc142..ed9dd2b11 100644 --- a/app/dns/nameserver.go +++ b/app/dns/nameserver.go @@ -70,7 +70,7 @@ func NewServer(dest net.Destination, dispatcher routing.Dispatcher) (Server, err } // NewClient creates a DNS client managing a name server with client IP, domain rules and expected IPs. -func NewClient(ctx context.Context, ns *NameServer, clientIP net.IP, container router.GeoIPMatcherContainer, matcherInfos *[]DomainMatcherInfo, updateDomainRule func(strmatcher.Matcher, int, []DomainMatcherInfo) error) (*Client, error) { +func NewClient(ctx context.Context, ns *NameServer, clientIP net.IP, container router.GeoIPMatcherContainer, matcherInfos *[]*DomainMatcherInfo, updateDomainRule func(strmatcher.Matcher, int, []*DomainMatcherInfo) error) (*Client, error) { client := &Client{} err := core.RequireFeatures(ctx, func(dispatcher routing.Dispatcher) error { @@ -92,7 +92,7 @@ func NewClient(ctx context.Context, ns *NameServer, clientIP net.IP, container r // https://github.com/v2fly/v2ray-core/issues/529 // https://github.com/v2fly/v2ray-core/issues/719 for i := 0; i < len(localTLDsAndDotlessDomains); i++ { - *matcherInfos = append(*matcherInfos, DomainMatcherInfo{ + *matcherInfos = append(*matcherInfos, &DomainMatcherInfo{ clientIdx: uint16(0), domainRuleIdx: uint16(0), })