Browse Source

Fix github.com/v2fly/v2ray-core/issues/146

Vigilans 5 years ago
parent
commit
47c997d75e
2 changed files with 5 additions and 2 deletions
  1. 4 1
      app/dns/server.go
  2. 1 1
      common/strmatcher/strmatcher.go

+ 4 - 1
app/dns/server.go

@@ -256,7 +256,10 @@ func (s *Server) IsOwnLink(ctx context.Context) bool {
 
 
 // Match check dns ip match geoip
 // Match check dns ip match geoip
 func (s *Server) Match(idx int, client Client, domain string, ips []net.IP) ([]net.IP, error) {
 func (s *Server) Match(idx int, client Client, domain string, ips []net.IP) ([]net.IP, error) {
-	matcher := s.ipIndexMap[idx]
+	var matcher *MultiGeoIPMatcher
+	if idx < len(s.ipIndexMap) {
+		matcher = s.ipIndexMap[idx]
+	}
 	if matcher == nil {
 	if matcher == nil {
 		return ips, nil
 		return ips, nil
 	}
 	}

+ 1 - 1
common/strmatcher/strmatcher.go

@@ -49,7 +49,7 @@ func (t Type) New(pattern string) (Matcher, error) {
 
 
 // IndexMatcher is the interface for matching with a group of matchers.
 // IndexMatcher is the interface for matching with a group of matchers.
 type IndexMatcher interface {
 type IndexMatcher interface {
-	// Match returns the the index of a matcher that matches the input. It returns 0 if no such matcher exists.
+	// Match returns the the index of a matcher that matches the input. It returns empty array if no such matcher exists.
 	Match(input string) []uint32
 	Match(input string) []uint32
 }
 }