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

ruby-changes:16429

From: akr <ko1@a...>
Date: Thu, 24 Jun 2010 06:25:44 +0900 (JST)
Subject: [ruby-changes:16429] Ruby:r28414 (trunk): * ext/socket/raddrinfo.c (ruby_getaddrinfo__darwin): the workaround

akr	2010-06-24 06:24:31 +0900 (Thu, 24 Jun 2010)

  New Revision: 28414

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

  Log:
    * ext/socket/raddrinfo.c (ruby_getaddrinfo__darwin): the workaround
      for Mac OS X moved from rsock_getaddrinfo.

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/raddrinfo.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 28413)
+++ ChangeLog	(revision 28414)
@@ -1,3 +1,8 @@
+Thu Jun 24 06:22:27 2010  Tanaka Akira  <akr@f...>
+
+	* ext/socket/raddrinfo.c (ruby_getaddrinfo__darwin): the workaround
+	  for Mac OS X moved from rsock_getaddrinfo.
+
 Thu Jun 24 05:44:27 2010  Nobuyoshi Nakada  <nobu@r...>
 
 	* marshal.c (struct dump_arg, struct load_arg): merge taint and
Index: ext/socket/raddrinfo.c
===================================================================
--- ext/socket/raddrinfo.c	(revision 28413)
+++ ext/socket/raddrinfo.c	(revision 28414)
@@ -100,11 +100,11 @@
 static int str_is_number(const char *);
 
 #if defined(__APPLE__)
-/* fix [ruby-core:29427] */
 static int
 ruby_getaddrinfo__darwin(const char *nodename, const char *servname,
 			 struct addrinfo *hints, struct addrinfo **res)
 {
+    /* fix [ruby-core:29427] */
     const char *tmp_servname;
     struct addrinfo tmp_hints;
     tmp_servname = servname;
@@ -118,6 +118,26 @@
 	}
     }
     int error = getaddrinfo(nodename, tmp_servname, &tmp_hints, res);
+
+    if (error == 0)
+    {
+        /* [ruby-dev:23164] */
+        struct addrinfo *r;
+        r = *res;
+        while (r) {
+            if (! r->ai_socktype) r->ai_socktype = hints->ai_socktype;
+            if (! r->ai_protocol) {
+                if (r->ai_socktype == SOCK_DGRAM) {
+                    r->ai_protocol = IPPROTO_UDP;
+                }
+                else if (r->ai_socktype == SOCK_STREAM) {
+                    r->ai_protocol = IPPROTO_TCP;
+                }
+            }
+            r = r->ai_next;
+        }
+    }
+
     return error;
 }
 #undef getaddrinfo
@@ -342,25 +362,6 @@
         rsock_raise_socket_error("getaddrinfo", error);
     }
 
-#if defined(__APPLE__) && defined(__MACH__)
-    /* [ruby-dev:23164] */
-    {
-        struct addrinfo *r;
-        r = res;
-        while (r) {
-            if (! r->ai_socktype) r->ai_socktype = hints->ai_socktype;
-            if (! r->ai_protocol) {
-                if (r->ai_socktype == SOCK_DGRAM) {
-                    r->ai_protocol = IPPROTO_UDP;
-                }
-                else if (r->ai_socktype == SOCK_STREAM) {
-                    r->ai_protocol = IPPROTO_TCP;
-                }
-            }
-            r = r->ai_next;
-        }
-    }
-#endif
     return res;
 }
 

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

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