Zone: fixed authoritative zone ANY query.

This commit is contained in:
Shreyas Zare
2017-12-03 23:34:44 +05:30
parent 7af154eae6
commit eb14fcfc4e

View File

@@ -238,6 +238,16 @@ namespace DnsServerCore
private DnsResourceRecord[] QueryRecords(DnsResourceRecordType type, bool bypassCNAME = false)
{
if (_authoritativeZone && (type == DnsResourceRecordType.ANY))
{
List<DnsResourceRecord> allRecords = new List<DnsResourceRecord>();
foreach (KeyValuePair<DnsResourceRecordType, DnsResourceRecord[]> entry in _entries)
allRecords.AddRange(entry.Value);
return allRecords.ToArray();
}
if (!bypassCNAME && _entries.TryGetValue(DnsResourceRecordType.CNAME, out DnsResourceRecord[] existingCNAMERecords))
{
if (_authoritativeZone)
@@ -435,9 +445,6 @@ namespace DnsServerCore
while (currentZone != null)
{
if (currentZone._entries.ContainsKey(DnsResourceRecordType.CNAME))
return null;
if (currentZone._entries.ContainsKey(DnsResourceRecordType.SOA))
{
nsRecords = currentZone.QueryRecords(DnsResourceRecordType.NS);
@@ -548,9 +555,12 @@ namespace DnsServerCore
records = wildcardRecords;
}
DnsResourceRecord[] closestAuthoritativeNameServers = closestZone.GetClosestAuthoritativeNameServers();
DnsResourceRecord[] closestAuthoritativeNameServers = null;
DnsResourceRecord[] additional;
if (question.Type != DnsResourceRecordType.ANY)
closestAuthoritativeNameServers = closestZone.GetClosestAuthoritativeNameServers();
if (closestAuthoritativeNameServers == null)
{
closestAuthoritativeNameServers = new DnsResourceRecord[] { };