Advtools.AdvInterceptor.AdvDnsServer.ProcessDnsQuery C# (CSharp) Method

ProcessDnsQuery() private method

private ProcessDnsQuery ( ARSoft.Tools.Net.Dns.DnsMessageBase message, IPAddress clientAddress, ProtocolType protocol ) : ARSoft.Tools.Net.Dns.DnsMessageBase
message ARSoft.Tools.Net.Dns.DnsMessageBase
clientAddress System.Net.IPAddress
protocol ProtocolType
return ARSoft.Tools.Net.Dns.DnsMessageBase
        private DnsMessageBase ProcessDnsQuery(DnsMessageBase message, IPAddress clientAddress, ProtocolType protocol)
        {
            state_.Logger.Debug("DNS query received");

            message.IsQuery = false;

            DnsMessage query = message as DnsMessage;
            if(query == null)
            {
                message.ReturnCode = ReturnCode.ServerFailure;
                return message;
            }

            foreach(DnsQuestion question in query.Questions)
            {
                state_.Logger.Debug("DNS question of type {0} received", question.RecordType);

                List<DnsRecordBase> records = ProcessQuestion(question);

                if(records == null)
                    records = ForwardQuery(question);

                if(records == null)
                {
                    message.ReturnCode = ReturnCode.ServerFailure;
                    return message;
                }
                else
                    query.AnswerRecords.AddRange(records);
            }

            return message;
        }