mirror of
https://github.com/coredns/coredns.git
synced 2025-11-03 10:43:20 -05: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
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ret *dns.Msg
|
||||||
conn.SetReadDeadline(time.Now().Add(readTimeout))
|
conn.SetReadDeadline(time.Now().Add(readTimeout))
|
||||||
ret, err := conn.ReadMsg()
|
for {
|
||||||
if err != nil {
|
ret, err = conn.ReadMsg()
|
||||||
conn.Close() // not giving it back
|
if err != nil {
|
||||||
if err == io.EOF && cached {
|
conn.Close() // not giving it back
|
||||||
return nil, ErrCachedClosed
|
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)
|
p.transport.Yield(conn)
|
||||||
|
|||||||
Reference in New Issue
Block a user