summaryrefslogtreecommitdiff
path: root/ext/socket
diff options
context:
space:
mode:
authorMisaki Shioi <shioi.mm@gmail.com>2023-11-23 16:49:41 +0900
committerYusuke Endoh <mame@ruby-lang.org>2023-11-30 13:27:19 +0900
commit52f6de41961d511e82826d6266441d91a92dcd59 (patch)
tree07b25e7fbfa7a013615b22e6704d137619a0c1af /ext/socket
parente9050270d7d8b1bc6be2c1352772b906031adc6e (diff)
Replace SocketError with Socket::ResolutionError in rsock_raise_socket_error
rsock_raise_socket_error is called only when getaddrinfo and getaddrname fail
Diffstat (limited to 'ext/socket')
-rw-r--r--ext/socket/init.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/socket/init.c b/ext/socket/init.c
index 5ca0cdbb1d..10459710c2 100644
--- a/ext/socket/init.c
+++ b/ext/socket/init.c
@@ -50,10 +50,14 @@ rsock_raise_socket_error(const char *reason, int error)
VALUE msg = rb_sprintf("%s: ", reason);
if (!enc) enc = rb_default_internal_encoding();
rb_str_concat(msg, rb_w32_conv_from_wchar(gai_strerrorW(error), enc));
- rb_exc_raise(rb_exc_new_str(rb_eSocket, msg));
#else
- rb_raise(rb_eSocket, "%s: %s", reason, gai_strerror(error));
+ VALUE msg = rb_sprintf("%s: %s", reason, gai_strerror(error));
#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__