aboutsummaryrefslogtreecommitdiff
path: root/plugin/proxy/grpc.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/proxy/grpc.go')
-rw-r--r--plugin/proxy/grpc.go22
1 files changed, 13 insertions, 9 deletions
diff --git a/plugin/proxy/grpc.go b/plugin/proxy/grpc.go
index b1ac1b1a8..2844a1c71 100644
--- a/plugin/proxy/grpc.go
+++ b/plugin/proxy/grpc.go
@@ -2,6 +2,7 @@ package proxy
import (
"crypto/tls"
+ "fmt"
"log"
"github.com/coredns/coredns/pb"
@@ -42,16 +43,19 @@ func (g *grpcClient) Exchange(ctx context.Context, addr string, state request.Re
return nil, err
}
- reply, err := g.clients[addr].Query(ctx, &pb.DnsPacket{Msg: msg})
- if err != nil {
- return nil, err
- }
- d := new(dns.Msg)
- err = d.Unpack(reply.Msg)
- if err != nil {
- return nil, err
+ if cl, ok := g.clients[addr]; ok {
+ reply, err := cl.Query(ctx, &pb.DnsPacket{Msg: msg})
+ if err != nil {
+ return nil, err
+ }
+ d := new(dns.Msg)
+ err = d.Unpack(reply.Msg)
+ if err != nil {
+ return nil, err
+ }
+ return d, nil
}
- return d, nil
+ return nil, fmt.Errorf("grpc exchange - no connection available for host: %s ", addr)
}
func (g *grpcClient) Transport() string { return "tcp" }