From 438ef21a9b50815f645a324e3d8950750467fd29 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Wed, 9 Oct 2024 21:55:20 +1300 Subject: [PATCH] Update `Socket#recvfrom` to use `rb_io_blocking_region`. --- ext/socket/init.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ext/socket/init.c b/ext/socket/init.c index ab847cb267..90870fec69 100644 --- a/ext/socket/init.c +++ b/ext/socket/init.c @@ -107,6 +107,7 @@ rsock_send_blocking(void *data) } struct recvfrom_arg { + rb_io_t *fptr; int fd, flags; VALUE str; size_t length; @@ -151,7 +152,7 @@ recvfrom_locktmp(VALUE v) { struct recvfrom_arg *arg = (struct recvfrom_arg *)v; - return rb_thread_io_blocking_region(recvfrom_blocking, arg, arg->fd); + return rb_io_blocking_region(arg->fptr, recvfrom_blocking, arg); } int @@ -192,6 +193,7 @@ rsock_s_recvfrom(VALUE socket, int argc, VALUE *argv, enum sock_recv_type from) rb_raise(rb_eIOError, "recv for buffered IO"); } + arg.fptr = fptr; arg.fd = fptr->fd; arg.alen = (socklen_t)sizeof(arg.buf); arg.str = str;