diff --git a/chain/resovle.go b/chain/resovle.go index 9064faa..58f177c 100644 --- a/chain/resovle.go +++ b/chain/resovle.go @@ -15,10 +15,7 @@ func Resolve(ctx context.Context, network, addr string, r resolver.Resolver, hos return addr, nil } - host, port, err := net.SplitHostPort(addr) - if err != nil { - return "", err - } + host, port, _ := net.SplitHostPort(addr) if host == "" { return addr, nil } diff --git a/chain/router.go b/chain/router.go index 57e0ecc..81674ee 100644 --- a/chain/router.go +++ b/chain/router.go @@ -155,6 +155,12 @@ func (r *Router) dial(ctx context.Context, network, address string) (conn net.Co r.options.Logger.Debugf("dial %s/%s", address, network) for i := 0; i < count; i++ { + address, err = Resolve(ctx, "ip", address, r.options.Resolver, r.options.HostMapper, r.options.Logger) + if err != nil { + r.options.Logger.Error(err) + break + } + var route Route if r.options.Chain != nil { route = r.options.Chain.Route(ctx, network, address) @@ -169,12 +175,6 @@ func (r *Router) dial(ctx context.Context, network, address string) (conn net.Co r.options.Logger.Debugf("route(retry=%d) %s", i, buf.String()) } - address, err = Resolve(ctx, "ip", address, r.options.Resolver, r.options.HostMapper, r.options.Logger) - if err != nil { - r.options.Logger.Error(err) - break - } - if route == nil { route = DefaultRoute } diff --git a/go.mod b/go.mod index e421316..0a7ac58 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,4 @@ module github.com/go-gost/core go 1.18 -require golang.org/x/sys v0.5.0 +require golang.org/x/sys v0.6.0 diff --git a/go.sum b/go.sum index ba21016..789d7a1 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,2 @@ -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=