From 0f1e7563100c7957e8cddf2058d5ad3880937cf1 Mon Sep 17 00:00:00 2001 From: nagachika Date: Tue, 14 Feb 2017 09:56:33 +0000 Subject: revert r57571. `merge revision(s) 55781,55783: [Backport #12604]` It breaked CI on vc12-x64 http://13.78.52.201/vc12-x64/ruby-2.3/log/20170207T182419Z.log.html.gz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@57626 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ---- ext/win32/lib/win32/resolv.rb | 28 ++++++++--------- ext/win32/resolv/extconf.rb | 1 - ext/win32/resolv/resolv.c | 71 ------------------------------------------- version.h | 6 ++-- 5 files changed, 16 insertions(+), 96 deletions(-) delete mode 100644 ext/win32/resolv/extconf.rb delete mode 100644 ext/win32/resolv/resolv.c diff --git a/ChangeLog b/ChangeLog index fea34bf02e..1d8773dae2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,3 @@ -Wed Feb 8 02:20:16 2017 Nobuyoshi Nakada - - * ext/win32/resolv/resolv.c (get_dns_server_list): [Win32] get DNS - servers only for connected network devices by GetNetworkParams - API. [Bug #12604] - Wed Feb 8 02:17:02 2017 Nobuyoshi Nakada * lib/forwardable.rb (Forwardable._delegator_method): extract 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 diff --git a/ext/win32/resolv/extconf.rb b/ext/win32/resolv/extconf.rb deleted file mode 100644 index 2ae4bb29f7..0000000000 --- a/ext/win32/resolv/extconf.rb +++ /dev/null @@ -1 +0,0 @@ -create_makefile('win32/resolv') diff --git a/ext/win32/resolv/resolv.c b/ext/win32/resolv/resolv.c deleted file mode 100644 index 436d62cc7b..0000000000 --- a/ext/win32/resolv/resolv.c +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include -#include - -static VALUE -w32error_init(VALUE self, VALUE code) -{ - VALUE str = rb_str_new_cstr(rb_w32_strerror(NUM2INT(code))); - rb_ivar_set(self, rb_intern("@code"), code); - return rb_call_super(1, &str); -} - -static VALUE -w32error_make_error(DWORD e) -{ - VALUE code = ULONG2NUM(e); - return rb_class_new_instance(1, &code, rb_path2class("Win32::Error")); -} - -static void -w32error_raise(DWORD e) -{ - rb_exc_raise(w32error_make_error(e)); -} - -static VALUE -get_dns_server_list(VALUE self) -{ - FIXED_INFO *fixedinfo = NULL; - ULONG buflen = 0; - DWORD ret; - VALUE buf, nameservers = Qnil; - - ret = GetNetworkParams(NULL, &buflen); - if (ret != NO_ERROR && ret != ERROR_BUFFER_OVERFLOW) { - w32error_raise(ret); - } - fixedinfo = ALLOCV(buf, buflen); - ret = GetNetworkParams(fixedinfo, &buflen); - if (ret == NO_ERROR) { - const IP_ADDR_STRING *ipaddr = &fixedinfo->DnsServerList; - nameservers = rb_ary_new(); - do { - const char *s = ipaddr->IpAddress.String; - if (!*s) continue; - if (strcmp(s, "0.0.0.0") == 0) continue; - rb_ary_push(nameservers, rb_str_new_cstr(s)); - } while ((ipaddr = ipaddr->Next) != NULL); - } - ALLOCV_END(buf); - if (ret != NO_ERROR) w32error_raise(ret); - - return nameservers; -} - -void -InitVM_resolv(void) -{ - VALUE mWin32 = rb_define_module("Win32"); - VALUE resolv = rb_define_module_under(mWin32, "Resolv"); - VALUE singl = rb_singleton_class(resolv); - VALUE eclass = rb_define_class_under(mWin32, "Error", rb_eStandardError); - rb_define_method(eclass, "initialize", w32error_init, 1); - rb_define_private_method(singl, "get_dns_server_list", get_dns_server_list, 0); -} - -void -Init_resolv(void) -{ - InitVM(resolv); -} diff --git a/version.h b/version.h index ac03085282..e1f0765d75 100644 --- a/version.h +++ b/version.h @@ -1,10 +1,10 @@ #define RUBY_VERSION "2.3.3" -#define RUBY_RELEASE_DATE "2017-02-08" -#define RUBY_PATCHLEVEL 245 +#define RUBY_RELEASE_DATE "2017-02-14" +#define RUBY_PATCHLEVEL 246 #define RUBY_RELEASE_YEAR 2017 #define RUBY_RELEASE_MONTH 2 -#define RUBY_RELEASE_DAY 8 +#define RUBY_RELEASE_DAY 14 #include "ruby/version.h" -- cgit v1.2.3