diff --git a/resolver.go b/resolver.go index 68873b1..75e9f10 100644 --- a/resolver.go +++ b/resolver.go @@ -623,17 +623,12 @@ func (ex *dnsExchanger) Exchange(ctx context.Context, query []byte) ([]byte, err return nil, err } c.SetDeadline(time.Now().Add(ex.options.timeout - time.Since(t))) - - mq := &dns.Msg{} - if err = mq.Unpack(query); err != nil { - return nil, err - } + defer c.Close() conn := &dns.Conn{ Conn: c, } - - if err = conn.WriteMsg(mq); err != nil { + if _, err = conn.Write(query); err != nil { return nil, err } @@ -683,18 +678,17 @@ func (ex *dnsTCPExchanger) Exchange(ctx context.Context, query []byte) ([]byte, return nil, err } c.SetDeadline(time.Now().Add(ex.options.timeout - time.Since(t))) + defer c.Close() conn := &dns.Conn{ Conn: c, } - if _, err = conn.Write(query); err != nil { return nil, err } mr, err := conn.ReadMsg() if err != nil { - log.Log("[dns] exchange", err) return nil, err } @@ -753,11 +747,11 @@ func (ex *dotExchanger) Exchange(ctx context.Context, query []byte) ([]byte, err return nil, err } c.SetDeadline(time.Now().Add(ex.options.timeout - time.Since(t))) + defer c.Close() conn := &dns.Conn{ Conn: c, } - if _, err = conn.Write(query); err != nil { return nil, err }