aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/handler.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/kubernetes/handler.go')
-rw-r--r--middleware/kubernetes/handler.go11
1 files changed, 7 insertions, 4 deletions
diff --git a/middleware/kubernetes/handler.go b/middleware/kubernetes/handler.go
index 3ef4f7a37..cb72e09eb 100644
--- a/middleware/kubernetes/handler.go
+++ b/middleware/kubernetes/handler.go
@@ -39,13 +39,15 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M
// Set the zone to this specific request.
zone = state.Name()
}
+
records, extra, _, err := k.routeRequest(zone, state)
// Check for Autopath search eligibility
if (k.autoPath != nil) && k.IsNameError(err) && (state.QType() == dns.TypeA || state.QType() == dns.TypeAAAA) {
p := k.findPodWithIP(state.IP())
+
for p != nil {
- name, path, ok := splitSearch(zone, state.QName(), p.Namespace)
+ name, path, ok := autopath.SplitSearch(zone, state.QName(), p.Namespace)
if !ok {
break
}
@@ -73,7 +75,8 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M
for _, hostsearch := range k.autoPath.HostSearchPath {
newstate := state.NewWithQuestion(strings.Join([]string{name, hostsearch}, "."), state.QType())
rcode, nextErr := middleware.NextOrFailure(k.Name(), k.Next, ctx, apw, newstate.Req)
- if apw.Sent {
+
+ if middleware.ClientWrite(rcode) || rcode == dns.RcodeNameError {
return rcode, nextErr
}
}
@@ -91,11 +94,11 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M
newstate = state.NewWithQuestion(strings.Join([]string{name, "."}, ""), state.QType())
r = newstate.Req
rcode, nextErr := middleware.NextOrFailure(k.Name(), k.Next, ctx, apw, r)
- if !apw.Sent && nextErr == nil {
+ if !(middleware.ClientWrite(rcode) || rcode == dns.RcodeNameError) && nextErr == nil {
r = dnsutil.Dedup(r)
state.SizeAndDo(r)
r, _ = state.Scrub(r)
- apw.ForceWriteMsg(r)
+ apw.WriteMsg(r)
}
return rcode, nextErr
}