Add dns and tunnel context to conntection

This commit is contained in:
Daniel
2021-10-14 15:54:42 +02:00
parent a085b6d430
commit ff31b7c8c5
5 changed files with 31 additions and 8 deletions

View File

@@ -222,17 +222,27 @@ func handleRequest(ctx context.Context, w dns.ResponseWriter, request *dns.Msg)
}
}
// Handle special cases.
switch {
case rrCache == nil:
if rrCache == nil {
tracer.Warning("nameserver: received successful, but empty reply from resolver")
return reply(nsutil.ServerFailure("internal error: empty reply"))
case rrCache.RCode == dns.RcodeNameError:
}
// Add dns context and resolver to connection.
conn.DNSContext = rrCache
conn.Resolver = rrCache.Resolver
// Return now if NXDomain.
if rrCache.RCode == dns.RcodeNameError {
return reply(nsutil.NxDomain("no answer found (NXDomain)"))
}
tracer.Trace("nameserver: deciding on resolved dns")
rrCache = firewall.FilterResolvedDNS(ctx, conn, q, rrCache)
// Add dns context and resolver to connection.
conn.DNSContext = rrCache
conn.Resolver = rrCache.Resolver
// Check again if there is a responder from the firewall.
if responder, ok := conn.Reason.Context.(nsutil.Responder); ok {
tracer.Infof("nameserver: handing over request for %s to special filter responder: %s", q.ID(), conn.Reason.Msg)