From d1d385ab26bf9f342bbd4fb8e8913d098dcc2503 Mon Sep 17 00:00:00 2001 From: NPCDW <32638459+NPCDW@users.noreply.github.com> Date: Fri, 29 Mar 2024 09:04:36 +0800 Subject: [PATCH] =?UTF-8?q?sniff=5Foverride=5Fdestination=20=E5=BA=94?= =?UTF-8?q?=E8=AF=A5=E5=9C=A8=E5=88=9B=E5=BB=BA=E9=93=BE=E6=8E=A5=E5=89=8D?= =?UTF-8?q?=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- route/router.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/route/router.go b/route/router.go index a62a318b..318569e5 100644 --- a/route/router.go +++ b/route/router.go @@ -785,12 +785,6 @@ func (r *Router) RouteConnection(ctx context.Context, conn net.Conn, metadata ad if sniffMetadata != nil { metadata.Protocol = sniffMetadata.Protocol metadata.Domain = sniffMetadata.Domain - if metadata.InboundOptions.SniffOverrideDestination && M.IsDomainName(metadata.Domain) { - metadata.Destination = M.Socksaddr{ - Fqdn: metadata.Domain, - Port: metadata.Destination.Port, - } - } if metadata.Domain != "" { r.logger.DebugContext(ctx, "sniffed protocol: ", metadata.Protocol, ", domain: ", metadata.Domain) } else { @@ -834,6 +828,12 @@ func (r *Router) RouteConnection(ctx context.Context, conn net.Conn, metadata ad if !common.Contains(detour.Network(), N.NetworkTCP) { return E.New("missing supported outbound, closing connection") } + if metadata.InboundOptions.SniffOverrideDestination && M.IsDomainName(metadata.Domain) { + metadata.Destination = M.Socksaddr{ + Fqdn: metadata.Domain, + Port: metadata.Destination.Port, + } + } if r.clashServer != nil { trackerConn, tracker := r.clashServer.RoutedConnection(ctx, conn, metadata, matchedRule) defer tracker.Leave() @@ -912,12 +912,6 @@ func (r *Router) RoutePacketConnection(ctx context.Context, conn N.PacketConn, m if sniffMetadata != nil { metadata.Protocol = sniffMetadata.Protocol metadata.Domain = sniffMetadata.Domain - if metadata.InboundOptions.SniffOverrideDestination && M.IsDomainName(metadata.Domain) { - metadata.Destination = M.Socksaddr{ - Fqdn: metadata.Domain, - Port: metadata.Destination.Port, - } - } if metadata.Domain != "" { r.logger.DebugContext(ctx, "sniffed packet protocol: ", metadata.Protocol, ", domain: ", metadata.Domain) } else { @@ -954,6 +948,12 @@ func (r *Router) RoutePacketConnection(ctx context.Context, conn N.PacketConn, m if !common.Contains(detour.Network(), N.NetworkUDP) { return E.New("missing supported outbound, closing packet connection") } + if metadata.InboundOptions.SniffOverrideDestination && M.IsDomainName(metadata.Domain) { + metadata.Destination = M.Socksaddr{ + Fqdn: metadata.Domain, + Port: metadata.Destination.Port, + } + } if r.clashServer != nil { trackerConn, tracker := r.clashServer.RoutedPacketConnection(ctx, conn, metadata, matchedRule) defer tracker.Leave()