summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-02-14 09:56:33 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-02-14 09:56:33 +0000
commit0f1e7563100c7957e8cddf2058d5ad3880937cf1 (patch)
treee3514ac043cc49e2248efdb19e5164c32e5f6fb4
parent8e25d6456c4f5b622c41b9949ea8bed036c2bcf6 (diff)
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
-rw-r--r--ChangeLog6
-rw-r--r--ext/win32/lib/win32/resolv.rb28
-rw-r--r--ext/win32/resolv/extconf.rb1
-rw-r--r--ext/win32/resolv/resolv.c71
-rw-r--r--version.h6
5 files changed, 16 insertions, 96 deletions
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 <nobu@ruby-lang.org>
-
- * 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 <nobu@ruby-lang.org>
* 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 <ruby.h>
-#include <ruby/encoding.h>
-#include <iphlpapi.h>
-
-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"