mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 16:24:19 -04:00
plugin/forward: Use new msg.Id for upstream queries (#4841)
* restore 1.8.3 question revert logic; add tests (#4840)
Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
Signed-off-by: Vector <815926354@qq.com>
* change origin message id
Signed-off-by: Vector <815926354@qq.com>
Signed-off-by: IIvyPy <815926354@qq.com>
* Revert "restore 1.8.3 question revert logic; add tests (#4840)"
This reverts commit 95e44d91d0.
Signed-off-by: IIvyPy <815926354@qq.com>
Co-authored-by: Chris O'Haver <cohaver@infoblox.com>
This commit is contained in:
@@ -97,6 +97,13 @@ func (p *Proxy) Connect(ctx context.Context, state request.Request, opts options
|
|||||||
}
|
}
|
||||||
|
|
||||||
pc.c.SetWriteDeadline(time.Now().Add(maxTimeout))
|
pc.c.SetWriteDeadline(time.Now().Add(maxTimeout))
|
||||||
|
// records the origin Id before upstream.
|
||||||
|
originId := state.Req.Id
|
||||||
|
state.Req.Id = dns.Id()
|
||||||
|
defer func(){
|
||||||
|
state.Req.Id = originId
|
||||||
|
}()
|
||||||
|
|
||||||
if err := pc.c.WriteMsg(state.Req); err != nil {
|
if err := pc.c.WriteMsg(state.Req); err != nil {
|
||||||
pc.c.Close() // not giving it back
|
pc.c.Close() // not giving it back
|
||||||
if err == io.EOF && cached {
|
if err == io.EOF && cached {
|
||||||
@@ -114,6 +121,10 @@ func (p *Proxy) Connect(ctx context.Context, state request.Request, opts options
|
|||||||
if err == io.EOF && cached {
|
if err == io.EOF && cached {
|
||||||
return nil, ErrCachedClosed
|
return nil, ErrCachedClosed
|
||||||
}
|
}
|
||||||
|
// recovery the origin Id after upstream.
|
||||||
|
if ret != nil{
|
||||||
|
ret.Id = originId
|
||||||
|
}
|
||||||
return ret, err
|
return ret, err
|
||||||
}
|
}
|
||||||
// drop out-of-order responses
|
// drop out-of-order responses
|
||||||
@@ -121,6 +132,8 @@ func (p *Proxy) Connect(ctx context.Context, state request.Request, opts options
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// recovery the origin Id after upstream.
|
||||||
|
ret.Id = originId
|
||||||
|
|
||||||
p.transport.Yield(pc)
|
p.transport.Yield(pc)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user