Commit e3e32490 authored by Ruslan Drozhdzh's avatar Ruslan Drozhdzh Committed by Miek Gieben

plugin/forward: check message Id when reading from upstream server (#2637)

parent 352a0423
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment