From: nobu@... Date: 2016-07-27T03:29:52+00:00 Subject: [ruby-core:76581] [Ruby trunk Bug#12604] Win32::Resolv.get_resolv_info returns unavailable DNS servers Issue #12604 has been updated by Nobuyoshi Nakada. I can't find an API to achieve the DNS search list. https://github.com/ruby/ruby/compare/trunk...nobu:bug/12604-win32-resolv-connected-only ---------------------------------------- Bug #12604: Win32::Resolv.get_resolv_info returns unavailable DNS servers https://bugs.ruby-lang.org/issues/12604#change-59806 * Author: Lars Christensen * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32] * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- `Win32::Resolv.get_resolv_info` returns a list of IP address that include DNS server for network devices that are not connected, causing long timeouts when using `Resolv::DNS` (or Rubygems which uses `Resolv::DNS`) `Win32::Resolv` scans the registry for DNS server addresses. Unfortunatly, if some of your network devices are not currently connected, the old DNS information is still stored in registry. So `get_resolv_info` still returns it. This can cause very long timeouts when using `Resolv::DNS` (e.g. rubygems). For example, a simple 'gem install' on my machine would take over a minute, because of several timeouts waiting for DNS. Example: ```ruby irb(main):024:0> Win32::Resolv.get_resolv_info => [["mynet", "mycompany.local", "local"], ["192.168.1.1", "172.27.0.1", "8.8.8.8", "8.8.4.4", "192.168.101.10", "192.168.101.11"]] ``` * 192.168.1.1 is the DNS server from my home Wifi (not currently connected) * 172.27.0.1 is the DNS server from a router I had connected via an USB Ethernet Device a week ago * 8.8.8.8 is from the same as above (but incidentally works, since it is available) * 192.168.101.10+11 are the actual current DNS server I think a solution could be to rely on `GetAdapterAddresses()` in the Win32 API instead to get the IP address of DNS server. As a workaround for users affected by this is to remove unconnected Interfaces from `HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces` in the registry. -- https://bugs.ruby-lang.org/ Unsubscribe: