public static void ReStart() { DNSManager.Stop(); logger.LogDebug("DNSManager (Re)Starting."); DNSManager.m_dnsSuffixes = null; DNSManager.m_resolver = null; DNSManager.m_inProgressLookups.Clear(); while (!DNSManager.m_queuedLookups.IsEmpty) { LookupRequest lookupreq; DNSManager.m_queuedLookups.TryDequeue(out lookupreq); } DNSManager.m_close = false; try { IPEndPoint[] osDNSServers = Resolver.GetDnsServers(); if (osDNSServers != null && osDNSServers.Length > 0) { logger.LogDebug("Initialising DNS resolver with operating system DNS server entries."); m_resolver = new Resolver(osDNSServers); } else { logger.LogDebug("Initialising DNS resolver with OpenDNS server entries."); m_resolver = new Resolver(Resolver.DefaultDnsServers.ToArray()); } DNSManager.UseDNSSuffixes = true; for (int index = 0; index < NUMBER_LOOKUP_THREADS; index++) { Thread lookupThread = new Thread(new ThreadStart(ProcessLookups)); lookupThread.Name = LOOKUP_THREAD_NAME + "-" + index.ToString(); lookupThread.Start(); } } catch (Exception excp) { logger.LogError("Exception DNSManager (ReStart). ", excp); } }