Replace SocketError with Socket::ResolutionError in rsock_raise_socket_error
rsock_raise_socket_error is called only when getaddrinfo and getaddrname fail
This commit is contained in:
parent
e9050270d7
commit
52f6de4196
@ -50,10 +50,14 @@ rsock_raise_socket_error(const char *reason, int error)
|
|||||||
VALUE msg = rb_sprintf("%s: ", reason);
|
VALUE msg = rb_sprintf("%s: ", reason);
|
||||||
if (!enc) enc = rb_default_internal_encoding();
|
if (!enc) enc = rb_default_internal_encoding();
|
||||||
rb_str_concat(msg, rb_w32_conv_from_wchar(gai_strerrorW(error), enc));
|
rb_str_concat(msg, rb_w32_conv_from_wchar(gai_strerrorW(error), enc));
|
||||||
rb_exc_raise(rb_exc_new_str(rb_eSocket, msg));
|
|
||||||
#else
|
#else
|
||||||
rb_raise(rb_eSocket, "%s: %s", reason, gai_strerror(error));
|
VALUE msg = rb_sprintf("%s: %s", reason, gai_strerror(error));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
StringValue(msg);
|
||||||
|
VALUE self = rb_class_new_instance(1, &msg, rb_eResolution);
|
||||||
|
rb_ivar_set(self, id_error_code, INT2NUM(error));
|
||||||
|
rb_exc_raise(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined __APPLE__
|
#if defined __APPLE__
|
||||||
|
@ -179,7 +179,7 @@ class TestAddressResolve < Test::Unit::TestCase
|
|||||||
Fiber.set_scheduler scheduler
|
Fiber.set_scheduler scheduler
|
||||||
|
|
||||||
Fiber.schedule do
|
Fiber.schedule do
|
||||||
assert_raise(SocketError) {
|
assert_raise(Socket::ResolutionError) {
|
||||||
Addrinfo.getaddrinfo("non-existing-domain.abc", nil)
|
Addrinfo.getaddrinfo("non-existing-domain.abc", nil)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -103,7 +103,7 @@ class TestSocketAddrinfo < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_error_message
|
def test_error_message
|
||||||
e = assert_raise_with_message(SocketError, /getaddrinfo/) do
|
e = assert_raise_with_message(Socket::ResolutionError, /getaddrinfo/) do
|
||||||
Addrinfo.ip("...")
|
Addrinfo.ip("...")
|
||||||
end
|
end
|
||||||
m = e.message
|
m = e.message
|
||||||
@ -357,7 +357,7 @@ class TestSocketAddrinfo < Test::Unit::TestCase
|
|||||||
ai = Addrinfo.unix("/testdir/sock").family_addrinfo("/testdir/sock2")
|
ai = Addrinfo.unix("/testdir/sock").family_addrinfo("/testdir/sock2")
|
||||||
assert_equal("/testdir/sock2", ai.unix_path)
|
assert_equal("/testdir/sock2", ai.unix_path)
|
||||||
assert_equal(Socket::SOCK_STREAM, ai.socktype)
|
assert_equal(Socket::SOCK_STREAM, ai.socktype)
|
||||||
assert_raise(SocketError) { Addrinfo.tcp("0.0.0.0", 4649).family_addrinfo("::1", 80) }
|
assert_raise(Socket::ResolutionError) { Addrinfo.tcp("0.0.0.0", 4649).family_addrinfo("::1", 80) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def random_port
|
def random_port
|
||||||
|
@ -91,20 +91,20 @@ class TestSocket < Test::Unit::TestCase
|
|||||||
|
|
||||||
def test_getaddrinfo
|
def test_getaddrinfo
|
||||||
# This should not send a DNS query because AF_UNIX.
|
# This should not send a DNS query because AF_UNIX.
|
||||||
assert_raise(SocketError) { Socket.getaddrinfo("www.kame.net", 80, "AF_UNIX") }
|
assert_raise(Socket::ResolutionError) { Socket.getaddrinfo("www.kame.net", 80, "AF_UNIX") }
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_getaddrinfo_raises_no_errors_on_port_argument_of_0 # [ruby-core:29427]
|
def test_getaddrinfo_raises_no_errors_on_port_argument_of_0 # [ruby-core:29427]
|
||||||
assert_nothing_raised('[ruby-core:29427]'){ Socket.getaddrinfo('localhost', 0, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
|
assert_nothing_raised('[ruby-core:29427]'){ Socket.getaddrinfo('localhost', 0, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
|
||||||
assert_nothing_raised('[ruby-core:29427]'){ Socket.getaddrinfo('localhost', '0', Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
|
assert_nothing_raised('[ruby-core:29427]'){ Socket.getaddrinfo('localhost', '0', Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
|
||||||
assert_nothing_raised('[ruby-core:29427]'){ Socket.getaddrinfo('localhost', '00', Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
|
assert_nothing_raised('[ruby-core:29427]'){ Socket.getaddrinfo('localhost', '00', Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
|
||||||
assert_raise(SocketError, '[ruby-core:29427]'){ Socket.getaddrinfo(nil, nil, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
|
assert_raise(Socket::ResolutionError, '[ruby-core:29427]'){ Socket.getaddrinfo(nil, nil, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) }
|
||||||
assert_nothing_raised('[ruby-core:29427]'){ TCPServer.open('localhost', 0) {} }
|
assert_nothing_raised('[ruby-core:29427]'){ TCPServer.open('localhost', 0) {} }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def test_getnameinfo
|
def test_getnameinfo
|
||||||
assert_raise(SocketError) { Socket.getnameinfo(["AF_UNIX", 80, "0.0.0.0"]) }
|
assert_raise(Socket::ResolutionError) { Socket.getnameinfo(["AF_UNIX", 80, "0.0.0.0"]) }
|
||||||
assert_raise(ArgumentError) {Socket.getnameinfo(["AF_INET", "http\0", "example.net"])}
|
assert_raise(ArgumentError) {Socket.getnameinfo(["AF_INET", "http\0", "example.net"])}
|
||||||
assert_raise(ArgumentError) {Socket.getnameinfo(["AF_INET", "http", "example.net\0"])}
|
assert_raise(ArgumentError) {Socket.getnameinfo(["AF_INET", "http", "example.net\0"])}
|
||||||
end
|
end
|
||||||
@ -770,4 +770,12 @@ class TestSocket < Test::Unit::TestCase
|
|||||||
s2.close
|
s2.close
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_resolurion_error_error_code
|
||||||
|
begin
|
||||||
|
Socket.getaddrinfo("www.kame.net", 80, "AF_UNIX")
|
||||||
|
rescue => e
|
||||||
|
assert_equal(e.error_code, Socket::EAI_FAMILY)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end if defined?(Socket)
|
end if defined?(Socket)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user