From d7c0ba112e5a3cf83fd6a1de0d1ed1b570262cc4 Mon Sep 17 00:00:00 2001 From: wweir Date: Wed, 28 Jul 2021 14:59:48 +0800 Subject: [PATCH] fix DNS forword issue, inspired by skydns --- router/dns.go | 3 +++ router/router.go | 2 +- util/relay.go | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/router/dns.go b/router/dns.go index 3ae47af..43c441e 100644 --- a/router/dns.go +++ b/router/dns.go @@ -52,6 +52,9 @@ func (r *Router) ServeDNS(w dns.ResponseWriter, req *dns.Msg) { default: conn.Close() } + + resp.Id = req.Id + resp.Compress = true w.WriteMsg(resp) } diff --git a/router/router.go b/router/router.go index f089f5a..4ea74a0 100644 --- a/router/router.go +++ b/router/router.go @@ -138,5 +138,5 @@ func (r *Router) ProxyHandle(conn net.Conn, domain string, port uint16) error { func (r *Router) DirectHandle(conn net.Conn, addr string) error { dur, err := util.RelayTo(conn, addr) - return errors.Wrapf(err, "direct relay to (%s), spend (%s)", addr, dur) + return errors.Wrapf(err, "spend (%s)", dur) } diff --git a/util/relay.go b/util/relay.go index 4df33e8..3e3e5b9 100644 --- a/util/relay.go +++ b/util/relay.go @@ -18,7 +18,7 @@ func RelayTo(conn net.Conn, addr string) (dur time.Duration, err error) { start := time.Now() rc, err := net.DialTimeout("tcp", addr, 5*time.Second) if err != nil { - return time.Since(start), errors.Wrapf(err, "dial %s", addr) + return time.Since(start), errors.WithStack(err) } defer rc.Close()