This commit is contained in:
reletor 2025-04-26 19:34:53 +08:00 committed by GitHub
parent 7c62db5dbd
commit eeaf6191dd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 3 deletions

View File

@ -220,7 +220,9 @@ func (r *Router) Exchange(ctx context.Context, message *mDNS.Msg, options adapte
if !cached { if !cached {
var metadata *adapter.InboundContext var metadata *adapter.InboundContext
ctx, metadata = adapter.ExtendContext(ctx) ctx, metadata = adapter.ExtendContext(ctx)
metadata.Destination = M.Socksaddr{} metadata.Destination = M.Socksaddr{
Port: metadata.Destination.Port,
}
metadata.QueryType = message.Question[0].Qtype metadata.QueryType = message.Question[0].Qtype
switch metadata.QueryType { switch metadata.QueryType {
case mDNS.TypeA: case mDNS.TypeA:

View File

@ -22,7 +22,9 @@ import (
) )
func (r *Router) hijackDNSStream(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error { func (r *Router) hijackDNSStream(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error {
metadata.Destination = M.Socksaddr{} metadata.Destination = M.Socksaddr{
Port: metadata.Destination.Port,
}
for { for {
conn.SetReadDeadline(time.Now().Add(C.DNSTimeout)) conn.SetReadDeadline(time.Now().Add(C.DNSTimeout))
err := dnsOutbound.HandleStreamDNSRequest(ctx, r.dns, conn, metadata) err := dnsOutbound.HandleStreamDNSRequest(ctx, r.dns, conn, metadata)
@ -34,7 +36,9 @@ 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) { func (r *Router) hijackDNSPacket(ctx context.Context, conn N.PacketConn, packetBuffers []*N.PacketBuffer, metadata adapter.InboundContext) {
if natConn, isNatConn := conn.(udpnat.Conn); isNatConn { if natConn, isNatConn := conn.(udpnat.Conn); isNatConn {
metadata.Destination = M.Socksaddr{} metadata.Destination = M.Socksaddr{
Port: metadata.Destination.Port,
}
for _, packet := range packetBuffers { for _, packet := range packetBuffers {
buffer := packet.Buffer buffer := packet.Buffer
destination := packet.Destination destination := packet.Destination