[前][次][番号順一覧][スレッド一覧]

ruby-changes:32697

From: normal <ko1@a...>
Date: Fri, 31 Jan 2014 17:06:26 +0900 (JST)
Subject: [ruby-changes:32697] normal:r44776 (trunk): socket: split out SOCK_CLOEXEC versions of wrappers for readability

normal	2014-01-31 17:06:19 +0900 (Fri, 31 Jan 2014)

  New Revision: 44776

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=44776

  Log:
    socket: split out SOCK_CLOEXEC versions of wrappers for readability
    
    * ext/socket/init.c (rsock_socket0): split out SOCK_CLOEXEC version
    * ext/socket/socket.c (rsock_socketpair0): ditto
      [ruby-core:60377]

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/init.c
    trunk/ext/socket/socket.c
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 44775)
+++ ChangeLog	(revision 44776)
@@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Fri Jan 31 17:01:47 2014  Eric Wong <e@8...>
+
+	* ext/socket/init.c (rsock_socket0): split out SOCK_CLOEXEC version
+	* ext/socket/socket.c (rsock_socketpair0): ditto
+	  [ruby-core:60377]
+
 Fri Jan 31 03:48:40 2014  Eric Wong <e@8...>
 
 	* benchmark/driver: avoid large alloc in driver process
Index: ext/socket/init.c
===================================================================
--- ext/socket/init.c	(revision 44775)
+++ ext/socket/init.c	(revision 44776)
@@ -264,12 +264,11 @@ int rsock_detect_cloexec(int fd) https://github.com/ruby/ruby/blob/trunk/ext/socket/init.c#L264
     return 0;
 }
 
+#ifdef SOCK_CLOEXEC
 static int
 rsock_socket0(int domain, int type, int proto)
 {
     int ret;
-
-#ifdef SOCK_CLOEXEC
     static int cloexec_state = -1; /* <0: unknown, 0: ignored, >0: working */
 
     if (cloexec_state > 0) { /* common path, if SOCK_CLOEXEC is defined */
@@ -300,22 +299,28 @@ rsock_socket0(int domain, int type, int https://github.com/ruby/ruby/blob/trunk/ext/socket/init.c#L299
     else { /* cloexec_state == 0 */
         ret = socket(domain, type, proto);
     }
-#else
-    ret = socket(domain, type, proto);
-#endif
     if (ret == -1)
         return -1;
-#ifdef SOCK_CLOEXEC
 fix_cloexec:
-#endif
     rb_maygvl_fd_fix_cloexec(ret);
-#ifdef SOCK_CLOEXEC
 update_max_fd:
-#endif
     rb_update_max_fd(ret);
 
     return ret;
 }
+#else /* !SOCK_CLOEXEC */
+static int
+rsock_socket0(int domain, int type, int proto)
+{
+    int ret = socket(domain, type, proto);
+
+    if (ret == -1)
+        return -1;
+    rb_fd_fix_cloexec(ret);
+
+    return ret;
+}
+#endif /* !SOCK_CLOEXEC */
 
 int
 rsock_socket(int domain, int type, int proto)
Index: ext/socket/socket.c
===================================================================
--- ext/socket/socket.c	(revision 44775)
+++ ext/socket/socket.c	(revision 44776)
@@ -168,12 +168,11 @@ pair_yield(VALUE pair) https://github.com/ruby/ruby/blob/trunk/ext/socket/socket.c#L168
 
 #if defined HAVE_SOCKETPAIR
 
+#ifdef SOCK_CLOEXEC
 static int
 rsock_socketpair0(int domain, int type, int protocol, int sv[2])
 {
     int ret;
-
-#ifdef SOCK_CLOEXEC
     static int cloexec_state = -1; /* <0: unknown, 0: ignored, >0: working */
 
     if (cloexec_state > 0) { /* common path, if SOCK_CLOEXEC is defined */
@@ -206,28 +205,34 @@ rsock_socketpair0(int domain, int type, https://github.com/ruby/ruby/blob/trunk/ext/socket/socket.c#L205
     else { /* cloexec_state == 0 */
         ret = socketpair(domain, type, protocol, sv);
     }
-#else
-    ret = socketpair(domain, type, protocol, sv);
-#endif
-
     if (ret == -1) {
         return -1;
     }
 
-#ifdef SOCK_CLOEXEC
 fix_cloexec:
-#endif
     rb_maygvl_fd_fix_cloexec(sv[0]);
     rb_maygvl_fd_fix_cloexec(sv[1]);
 
-#ifdef SOCK_CLOEXEC
 update_max_fd:
-#endif
     rb_update_max_fd(sv[0]);
     rb_update_max_fd(sv[1]);
 
     return ret;
 }
+#else /* !SOCK_CLOEXEC */
+static int
+rsock_socketpair0(int domain, int type, int protocol, int sv[2])
+{
+    int ret = socketpair(domain, type, protocol, sv);
+
+    if (ret == -1)
+	return -1;
+
+    rb_fd_fix_cloexec(sv[0]);
+    rb_fd_fix_cloexec(sv[1]);
+    return ret;
+}
+#endif /* !SOCK_CLOEXEC */
 
 static int
 rsock_socketpair(int domain, int type, int protocol, int sv[2])

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]