Skip to content

Commit

Permalink
Tweaks logic for DnsZoneClient.
Browse files Browse the repository at this point in the history
  • Loading branch information
alanedwardes committed Feb 11, 2024
1 parent e02e227 commit 97aeb30
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions src/Ae.Dns.Client/DnsZoneClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,24 @@ public async Task<DnsMessage> Query(DnsMessage query, CancellationToken token =

var relevantRecords = _dnsZone.Records
.Where(x => x.Host == query.Header.Host &&
x.Class == query.Header.QueryClass &&
x.Type == query.Header.QueryType)
x.Class == query.Header.QueryClass)
.ToArray();

if (relevantRecords.Length > 0)
{
var answer = DnsMessageExtensions.CreateAnswerMessage(query, DnsResponseCode.NoError, ToString());
answer.Answers = relevantRecords;
answer.Header.AnswerRecordCount = (short)answer.Answers.Count;
return answer;
var exactRecords = relevantRecords.Where(x => x.Type == query.Header.QueryType).ToArray();
if (exactRecords.Length > 0)
{
var answer = DnsMessageExtensions.CreateAnswerMessage(query, DnsResponseCode.NoError, ToString());
answer.Answers = exactRecords;
answer.Header.AnswerRecordCount = (short)answer.Answers.Count;
return answer;
}
else
{
// TODO: return SOA record
return DnsMessageExtensions.CreateAnswerMessage(query, DnsResponseCode.NoError, ToString());
}
}

return DnsMessageExtensions.CreateAnswerMessage(query, DnsResponseCode.NXDomain, ToString());
Expand Down

0 comments on commit 97aeb30

Please sign in to comment.