fix(forward): make dnstap FORWARDER_* describe the socket from CoreDNS to upstream (#8184)

Signed-off-by: Jaime Hablutzel <hablutzel1@gmail.com>
This commit is contained in:
Jaime Hablutzel
2026-07-01 23:04:04 -05:00
committed by GitHub
parent 6e7093cafb
commit 8d94712f99
5 changed files with 138 additions and 44 deletions

View File

@@ -8,6 +8,7 @@ import (
"context"
"crypto/tls"
"errors"
"net"
"net/http"
"sync/atomic"
"time"
@@ -168,13 +169,15 @@ func (f *Forward) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg
})
var (
ret *dns.Msg
err error
ret *dns.Msg
localAddr net.Addr
upstreamProto string
err error
)
opts := f.opts
for {
ret, err = proxy.Connect(ctx, state, opts)
ret, localAddr, upstreamProto, err = proxy.Connect(ctx, state, opts)
if err == proxyPkg.ErrCachedClosed { // Remote side closed conn, can only happen with TCP.
continue
@@ -192,7 +195,7 @@ func (f *Forward) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg
}
if len(f.tapPlugins) != 0 {
toDnstap(ctx, f, proxy.Addr(), state, opts, ret, start)
toDnstap(ctx, f, proxy.Addr(), localAddr, upstreamProto, state, ret, start)
}
upstreamErr = err