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/