diff options
author | Samuel Williams <[email protected]> | 2024-10-12 10:08:34 +1300 |
---|---|---|
committer | GitHub <[email protected]> | 2024-10-12 10:08:34 +1300 |
commit | ad5641fd3424790789871300b7c0dd6c069f3614 (patch) | |
tree | 60ef4585dbf4342665e9f0e47db2944b94c5e45e /ext/socket/socket.c | |
parent | 2e6ddd968d5601689f59c029bb401d7cdabab3b7 (diff) |
Support `IO#timeout` for `rsock_connect`. (#11880)
Notes
Notes:
Merged-By: ioquatix <[email protected]>
Diffstat (limited to 'ext/socket/socket.c')
-rw-r--r-- | ext/socket/socket.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/ext/socket/socket.c b/ext/socket/socket.c index c974aafe55..487a293c4e 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -387,16 +387,15 @@ rsock_sock_s_socketpair(int argc, VALUE *argv, VALUE klass) * * connect function in Microsoft's Winsock functions reference */ static VALUE -sock_connect(VALUE sock, VALUE addr) +sock_connect(VALUE self, VALUE addr) { VALUE rai; - rb_io_t *fptr; SockAddrStringValueWithAddrinfo(addr, rai); addr = rb_str_new4(addr); - GetOpenFile(sock, fptr); - int result = rsock_connect(sock, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_SOCKLEN(addr), 0, NULL); + int result = rsock_connect(self, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_SOCKLEN(addr), 0, RUBY_IO_TIMEOUT_DEFAULT); + if (result < 0) { rsock_sys_fail_raddrinfo_or_sockaddr("connect(2)", addr, rai); } |