mirror of
https://github.com/coredns/coredns.git
synced 2025-11-01 18:53:43 -04:00
plugin/forward: check message Id when reading from upstream server (#2637)
This commit is contained in:
committed by
Miek Gieben
parent
352a042362
commit
e3e3249016
@@ -103,14 +103,21 @@ func (p *Proxy) Connect(ctx context.Context, state request.Request, opts options
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var ret *dns.Msg
|
||||
conn.SetReadDeadline(time.Now().Add(readTimeout))
|
||||
ret, err := conn.ReadMsg()
|
||||
if err != nil {
|
||||
conn.Close() // not giving it back
|
||||
if err == io.EOF && cached {
|
||||
return nil, ErrCachedClosed
|
||||
for {
|
||||
ret, err = conn.ReadMsg()
|
||||
if err != nil {
|
||||
conn.Close() // not giving it back
|
||||
if err == io.EOF && cached {
|
||||
return nil, ErrCachedClosed
|
||||
}
|
||||
return ret, err
|
||||
}
|
||||
// drop out-of-order responses
|
||||
if state.Req.Id == ret.Id {
|
||||
break
|
||||
}
|
||||
return ret, err
|
||||
}
|
||||
|
||||
p.transport.Yield(conn)
|
||||
|
||||
Reference in New Issue
Block a user