plugin/proxy: return client error (#1646)

Return the client error if there was one instead of the generic
"no healthy upstream or error"
This commit is contained in:
Miek Gieben
2018-04-01 14:23:40 +01:00
committed by GitHub
parent 2338120f5b
commit 5f98e98107
2 changed files with 14 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ func (f *Forward) Forward(state request.Request) (*dns.Msg, error) {
}
fails := 0
var upstreamErr error
for _, proxy := range f.list() {
if proxy.Down(f.maxfails) {
fails++
@@ -33,6 +34,7 @@ func (f *Forward) Forward(state request.Request) (*dns.Msg, error) {
ret, err := proxy.connect(context.Background(), state, f.forceTCP, true)
ret, err = truncated(ret, err)
upstreamErr = err
if err != nil {
if fails < len(f.proxies) {
@@ -48,6 +50,11 @@ func (f *Forward) Forward(state request.Request) (*dns.Msg, error) {
return ret, err
}
if upstreamErr != nil {
return nil, upstreamErr
}
return nil, errNoHealthy
}