diff options
Diffstat (limited to 'ext/win32/lib/win32/resolv.rb')
-rw-r--r-- | ext/win32/lib/win32/resolv.rb | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/ext/win32/lib/win32/resolv.rb b/ext/win32/lib/win32/resolv.rb index 18294c3f8b..183d5d38da 100644 --- a/ext/win32/lib/win32/resolv.rb +++ b/ext/win32/lib/win32/resolv.rb @@ -33,12 +33,6 @@ module Win32 end [ search, nameserver ] end -end - -begin - require 'win32/resolv.so' -rescue LoadError -end module Kernel32 extend Importer @@ -48,7 +42,6 @@ getv = Kernel32.extern "int GetVersionExA(void *)", :stdcall info = [ 148, 0, 0, 0, 0 ].pack('V5') + "\0" * 128 getv.call(info) if info.unpack('V5')[4] == 2 # VER_PLATFORM_WIN32_NT -module Win32 #==================================================================== # Windows NT #==================================================================== @@ -65,7 +58,7 @@ module Win32 def get_info search = nil - nameserver = get_dns_server_list + nameserver = [] Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg| begin slist = reg.read_s('SearchList') @@ -92,15 +85,20 @@ module Win32 reg.open('Interfaces') do |h| h.each_key do |iface,| h.open(iface) do |regif| - next unless ns = %w[NameServer DhcpNameServer].find do |key| - begin - ns = regif.read_s(key) - rescue Registry::Error - else - break ns.split(/[,\s]\s*/) unless ns.empty? + begin + [ 'NameServer', 'DhcpNameServer' ].each do |key| + begin + ns = regif.read_s(key) + rescue + else + unless ns.empty? + nameserver.concat(ns.split(/[,\s]\s*/)) + break + end + end end + rescue Registry::Error end - next if (nameserver & ns).empty? if add_search begin |