ruby-changes:21541
From: akr <ko1@a...>
Date: Mon, 31 Oct 2011 23:50:08 +0900 (JST)
Subject: [ruby-changes:21541] akr:r33590 (trunk): * ext/socket/socket.c (rsock_socketpair): extracted from
akr 2011-10-31 23:49:57 +0900 (Mon, 31 Oct 2011) New Revision: 33590 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=33590 Log: * ext/socket/socket.c (rsock_socketpair): extracted from rsock_sock_s_socketpair. Modified files: trunk/ChangeLog trunk/ext/socket/socket.c Index: ChangeLog =================================================================== --- ChangeLog (revision 33589) +++ ChangeLog (revision 33590) @@ -1,3 +1,8 @@ +Mon Oct 31 23:49:38 2011 Tanaka Akira <akr@f...> + + * ext/socket/socket.c (rsock_socketpair): extracted from + rsock_sock_s_socketpair. + Mon Oct 31 23:31:53 2011 Tanaka Akira <akr@f...> * ext/socket/init.c (rsock_socket): use SOCK_CLOEXEC if available. Index: ext/socket/socket.c =================================================================== --- ext/socket/socket.c (revision 33589) +++ ext/socket/socket.c (revision 33590) @@ -76,6 +76,21 @@ #endif #if defined HAVE_SOCKETPAIR + +static int +rsock_socketpair(int domain, int type, int protocol, int sv[2]) +{ + int ret; + + ret = socketpair(domain, type, protocol, sv); + if (ret < 0 && (errno == EMFILE || errno == ENFILE)) { + rb_gc(); + ret = socketpair(domain, type, protocol, sv); + } + + return ret; +} + /* * call-seq: * Socket.pair(domain, type, protocol) => [socket1, socket2] @@ -111,11 +126,7 @@ setup_domain_and_type(domain, &d, type, &t); p = NUM2INT(protocol); - ret = socketpair(d, t, p, sp); - if (ret < 0 && (errno == EMFILE || errno == ENFILE)) { - rb_gc(); - ret = socketpair(d, t, p, sp); - } + ret = rsock_socketpair(d, t, p, sp); if (ret < 0) { rb_sys_fail("socketpair(2)"); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/