close resolver connection

This commit is contained in:
ginuerzh 2020-01-17 10:11:21 +08:00
parent 694c05b50a
commit f1bad4d07b

View File

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