Heijden.DNS.Resolver.GetActiveDNSServer C# (CSharp) Method

GetActiveDNSServer() private method

private GetActiveDNSServer ( ) : IPEndPoint
return System.Net.IPEndPoint
        private IPEndPoint GetActiveDNSServer()
        {
            if (m_DnsServers == null)
            {
                m_DnsServers = DefaultDnsServers;
            }

            if (m_DnsServers.Count == 1)
            {
                return m_DnsServers[0];
            }
            else
            {
                if (m_activeDNSServer == null)
                {
                    m_activeDNSServer = m_DnsServers[0];
                }
                else
                {
                    // Check that the active DNS server is getting responses.
                    if (m_receiveTimeouts.ContainsKey(m_activeDNSServer) && m_receiveTimeouts[m_activeDNSServer] >= SWITCH_ACTIVE_TIMEOUT_COUNT)
                    {
                        // Switch active DNS server to alternative end point as too many consectutive receive failures on this one.
                        foreach (IPEndPoint dnsServer in m_DnsServers)
                        {
                            if (dnsServer != m_activeDNSServer)
                            {
                                logger.Debug("Switching active DNS server from " + m_activeDNSServer + " to " + dnsServer + ".");
                                m_activeDNSServer = dnsServer;
                                ResetTimeoutCount(m_activeDNSServer);
                            }
                        }
                    }
                }

                return m_activeDNSServer;
            }
        }