コード例 #1
0
        public DnsDatagram QueryClosestDelegation(DnsDatagram request)
        {
            DnsDatagram authResponse = DnsApplicationQueryClosestDelegation(request);

            if (authResponse is null)
            {
                authResponse = _authZoneManager.QueryClosestDelegation(request);
            }

            DnsDatagram cacheResponse = _cacheZoneManager.QueryClosestDelegation(request);

            if ((authResponse is not null) && (authResponse.Authority.Count > 0))
            {
                if ((cacheResponse is not null) && (cacheResponse.Authority.Count > 0))
                {
                    DnsResourceRecord authResponseFirstAuthority  = authResponse.FindFirstAuthorityRecord();
                    DnsResourceRecord cacheResponseFirstAuthority = cacheResponse.FindFirstAuthorityRecord();

                    if (cacheResponseFirstAuthority.Name.Length > authResponseFirstAuthority.Name.Length)
                    {
                        return(cacheResponse);
                    }
                }

                return(authResponse);
            }