From 83aec4222fc95b549716d3a28a127a975b94db97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 24 Sep 2026 10:26:45 +0800 Subject: [PATCH] Fix missing handshake success report for hijack-dns --- route/dns.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/route/dns.go b/route/dns.go index 5aaf4b1b..d697e787 100644 --- a/route/dns.go +++ b/route/dns.go @@ -20,9 +20,13 @@ import ( func (r *Router) hijackDNSStream(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error { r.searchProcessInfo(ctx, &metadata) metadata.Destination = M.Socksaddr{} + err := N.ReportConnHandshakeSuccess(conn, conn) + if err != nil { + return E.Cause(err, "report handshake success") + } for { conn.SetReadDeadline(time.Now().Add(C.DNSTimeout)) - err := dnsOutbound.HandleStreamDNSRequest(ctx, r.dns, conn, metadata) + err = dnsOutbound.HandleStreamDNSRequest(ctx, r.dns, conn, metadata) if err != nil { if !E.IsClosedOrCanceled(err) { return err @@ -35,7 +39,13 @@ func (r *Router) hijackDNSStream(ctx context.Context, conn net.Conn, metadata ad func (r *Router) hijackDNSPacket(ctx context.Context, conn N.PacketConn, packetBuffers []*N.PacketBuffer, metadata adapter.InboundContext, onClose N.CloseHandlerFunc) error { r.searchProcessInfo(ctx, &metadata) - err := dnsOutbound.NewDNSPacketConnection(ctx, r.dns, conn, packetBuffers, metadata) + err := N.ReportPacketConnHandshakeSuccess(conn, nil) + if err != nil { + N.ReleaseMultiPacketBuffer(packetBuffers) + err = E.Cause(err, "report handshake success") + } else { + err = dnsOutbound.NewDNSPacketConnection(ctx, r.dns, conn, packetBuffers, metadata) + } N.CloseOnHandshakeFailure(conn, onClose, err) if err != nil && !E.IsClosedOrCanceled(err) { return E.Cause(err, "process DNS packet")