< :前の番号
^ :番号順リスト
> :次の番号
P :前の記事(スレッド移動)
N :次の記事(スレッド移動)
|<:前のスレッド
>|:次のスレッド
^ :返事先
_:自分への返事
>:同じ返事先を持つ記事(前)
<:同じ返事先を持つ記事(後)
---:分割してスレッド表示、再表示
| :分割して(縦)スレッド表示、再表示
~ :スレッドのフレーム消去
.:インデックス
..:インデックスのインデックス
Issue #12604 has been updated by Tomoyuki Chikanaga.
Backport changed from 2.1: WONTFIX, 2.2: REQUIRED, 2.3: REQUIRED to 2.1: WONTFIX, 2.2: REQUIRED, 2.3: DONE
ruby_2_3 r57571 merged revision(s) 55781,55783.
----------------------------------------
Bug #12604: Win32::Resolv.get_resolv_info returns unavailable DNS servers
https://bugs.ruby-lang.org/issues/12604#change-62904
* Author: Lars Christensen
* Status: Closed
* Priority: Normal
* Assignee:
* Target version:
* ruby -v: ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]
* Backport: 2.1: WONTFIX, 2.2: REQUIRED, 2.3: DONE
----------------------------------------
`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: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>