In message "[ruby-dev:16586] Re: [ruby-cvs] ruby/ext/socket: * ext/socket/socket.c (bsock_do_not_rev_lookup_set): should not be"
    on 02/03/25, WATANABE Hirofumi <eban / os.rim.or.jp> writes:
|
|わたなべです。
|
|matz <cvs-admin / ruby-lang.org> writes:
|
|:    * ext/socket/socket.c (tcp_s_gethostbyname): refactored.
|:    
|:    * ext/socket/socket.c (sock_s_gethostbyname): ditto.
|
|どうもこの変更で
|% ruby -v -rsocket -e 'TCPSocket.new("localhost", 80)'
|ruby 1.7.2 (2002-03-25) [i386-linux]
|-e:1:in `initialize': getaddrinfo: Servname not supported for ai_socktype (SocketError)
|        from -e:1:in `new'
|        from -e:1
|となってしまいます。
|ext/socket/get*.cを使えばokなので、今使ってるglibc 2.2.2の
|getaddrinfo()の出来が悪いのかもしれません。

socket.cのsock_addrinfo()で

    hints.ai_socktype = SOCK_STREAM;

を指定してやればよさそうです。