Plugin/Proxy - prevent nil pointer when query using a gRPC client that could not dial in (#1495)
* prevent nil pointer when query frpc client that could not open * add UT checking we can now safely request DNS query on an invalid hostname, query for gRPC connection * fix ortograph * fix format * fix package declaration, fix UT - grpclogger, use fatalf, build pool with known addresses * type, useless error check - after review
This commit is contained in:
parent
76455c6a0d
commit
ee8084a08f
2 changed files with 193 additions and 39 deletions
|
@ -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
|
||||
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
|
||||
}
|
||||
d := new(dns.Msg)
|
||||
err = d.Unpack(reply.Msg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return d, nil
|
||||
return nil, fmt.Errorf("grpc exchange - no connection available for host: %s ", addr)
|
||||
}
|
||||
|
||||
func (g *grpcClient) Transport() string { return "tcp" }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue