From 30d90d49f09682837ba845fc0dcc131654504dc8 Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Thu, 17 Apr 2025 21:06:55 +0800 Subject: [PATCH] chore: update option checks to use IsZeroOptions --- adapter/outbound/snell.go | 2 +- adapter/outbound/trojan.go | 4 ++-- adapter/outbound/vless.go | 4 ++-- adapter/outbound/vmess.go | 4 ++-- component/dialer/options.go | 8 ++++++++ 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/adapter/outbound/snell.go b/adapter/outbound/snell.go index 98d16a2c..cf3cdcb3 100644 --- a/adapter/outbound/snell.go +++ b/adapter/outbound/snell.go @@ -76,7 +76,7 @@ func (s *Snell) writeHeaderContext(ctx context.Context, c net.Conn, metadata *C. // DialContext implements C.ProxyAdapter func (s *Snell) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) { - if s.version == snell.Version2 && len(opts) == 0 { + if s.version == snell.Version2 && dialer.IsZeroOptions(opts) { c, err := s.pool.Get() if err != nil { return nil, err diff --git a/adapter/outbound/trojan.go b/adapter/outbound/trojan.go index 84cfb872..241666e5 100644 --- a/adapter/outbound/trojan.go +++ b/adapter/outbound/trojan.go @@ -131,7 +131,7 @@ func (t *Trojan) writeHeaderContext(ctx context.Context, c net.Conn, metadata *C // DialContext implements C.ProxyAdapter func (t *Trojan) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) { // gun transport - if t.transport != nil && len(opts) == 0 { + if t.transport != nil && dialer.IsZeroOptions(opts) { c, err := gun.StreamGunWithTransport(t.transport, t.gunConfig) if err != nil { return nil, err @@ -181,7 +181,7 @@ func (t *Trojan) ListenPacketContext(ctx context.Context, metadata *C.Metadata, var c net.Conn // grpc transport - if t.transport != nil && len(opts) == 0 { + if t.transport != nil && dialer.IsZeroOptions(opts) { c, err = gun.StreamGunWithTransport(t.transport, t.gunConfig) if err != nil { return nil, fmt.Errorf("%s connect error: %w", t.addr, err) diff --git a/adapter/outbound/vless.go b/adapter/outbound/vless.go index cfb39e99..079d7bc2 100644 --- a/adapter/outbound/vless.go +++ b/adapter/outbound/vless.go @@ -233,7 +233,7 @@ func (v *Vless) streamTLSConn(ctx context.Context, conn net.Conn, isH2 bool) (ne // DialContext implements C.ProxyAdapter func (v *Vless) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) { // gun transport - if v.transport != nil && len(opts) == 0 { + if v.transport != nil && dialer.IsZeroOptions(opts) { c, err := gun.StreamGunWithTransport(v.transport, v.gunConfig) if err != nil { return nil, err @@ -287,7 +287,7 @@ func (v *Vless) ListenPacketContext(ctx context.Context, metadata *C.Metadata, o } var c net.Conn // gun transport - if v.transport != nil && len(opts) == 0 { + if v.transport != nil && dialer.IsZeroOptions(opts) { c, err = gun.StreamGunWithTransport(v.transport, v.gunConfig) if err != nil { return nil, err diff --git a/adapter/outbound/vmess.go b/adapter/outbound/vmess.go index 35aacb78..4db0cedd 100644 --- a/adapter/outbound/vmess.go +++ b/adapter/outbound/vmess.go @@ -288,7 +288,7 @@ func (v *Vmess) streamConnConntext(ctx context.Context, c net.Conn, metadata *C. // DialContext implements C.ProxyAdapter func (v *Vmess) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) { // gun transport - if v.transport != nil && len(opts) == 0 { + if v.transport != nil && dialer.IsZeroOptions(opts) { c, err := gun.StreamGunWithTransport(v.transport, v.gunConfig) if err != nil { return nil, err @@ -339,7 +339,7 @@ func (v *Vmess) ListenPacketContext(ctx context.Context, metadata *C.Metadata, o } var c net.Conn // gun transport - if v.transport != nil && len(opts) == 0 { + if v.transport != nil && dialer.IsZeroOptions(opts) { c, err = gun.StreamGunWithTransport(v.transport, v.gunConfig) if err != nil { return nil, err diff --git a/component/dialer/options.go b/component/dialer/options.go index 3da55ae6..d15d36e8 100644 --- a/component/dialer/options.go +++ b/component/dialer/options.go @@ -115,3 +115,11 @@ func WithOption(o option) Option { *opt = o } } + +func IsZeroOptions(opts []Option) bool { + var opt option + for _, o := range opts { + o(&opt) + } + return opt == option{} +}