mirror of
https://github.com/fergalmoran/DnsServer.git
synced 2026-03-06 13:43:57 +00:00
Zone: updated QueryCache() implementation to return only name servers with glue records available in cache.
This commit is contained in:
@@ -806,12 +806,17 @@ namespace DnsServerCore
|
||||
}
|
||||
}
|
||||
|
||||
DnsResourceRecord[] nameServers = closestZone.QueryClosestCachedNameServers(serveStale);
|
||||
if (nameServers != null)
|
||||
while (closestZone != null)
|
||||
{
|
||||
DnsResourceRecord[] additional = QueryGlueRecords(rootZone, nameServers, serveStale);
|
||||
DnsResourceRecord[] nameServers = closestZone.QueryClosestCachedNameServers(serveStale);
|
||||
if (nameServers == null)
|
||||
break;
|
||||
|
||||
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, new DnsResourceRecord[] { }, nameServers, additional);
|
||||
DnsResourceRecord[] additional = QueryGlueRecords(rootZone, nameServers, serveStale);
|
||||
if (additional.Length > 0)
|
||||
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, new DnsResourceRecord[] { }, nameServers, additional);
|
||||
|
||||
closestZone = closestZone._parentZone;
|
||||
}
|
||||
|
||||
return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }, new DnsResourceRecord[] { });
|
||||
|
||||
Reference in New Issue
Block a user