From 5cb63654873fb7e6673a544f0cfba35378319f7f Mon Sep 17 00:00:00 2001 From: akr Date: Sun, 6 Nov 2011 05:51:43 +0000 Subject: * ext/socket/rubysocket.h (rsock_recvmsg): declared. * ext/socket/ancdata.c (rsock_recvmsg): extracted from nogvl_recvmsg_func. (nogvl_recvmsg_func): use rsock_recvmsg. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33646 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/socket/ancdata.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'ext/socket/ancdata.c') diff --git a/ext/socket/ancdata.c b/ext/socket/ancdata.c index f222f84a81..8cbe53c281 100644 --- a/ext/socket/ancdata.c +++ b/ext/socket/ancdata.c @@ -1358,16 +1358,22 @@ struct recvmsg_args_struct { int flags; }; -static VALUE -nogvl_recvmsg_func(void *ptr) +ssize_t +rsock_recvmsg(int socket, struct msghdr *message, int flags) { - struct recvmsg_args_struct *args = ptr; - int flags = args->flags; #ifdef MSG_CMSG_CLOEXEC /* MSG_CMSG_CLOEXEC is available since Linux 2.6.23. Linux 2.6.18 silently ignore it. */ flags |= MSG_CMSG_CLOEXEC; #endif - return recvmsg(args->fd, args->msg, flags); + return recvmsg(socket, message, flags); +} + +static VALUE +nogvl_recvmsg_func(void *ptr) +{ + struct recvmsg_args_struct *args = ptr; + int flags = args->flags; + return rsock_recvmsg(args->fd, args->msg, flags); } static ssize_t -- cgit v1.2.3