From: "Aleksi Niemelä" Date: 2001-02-20T01:27:37+09:00 Subject: [ruby-talk:11116] RE: TCPSocket.open() lasts 2 minutes (was: rwik i *hangs* in send()) Clemens wrote: > My (easy) testscript looks like this: > require 'socket' > soc = TCPSocket.open("localhost", 8470) > soc.close() > > Now this script runs for about 2 to 3 minutes (!) to complete. > Note: The port (8740 -> drb) is NOT relevant. > > I run it with Ruby 1.7.0 (but it also happens in 1.6.2) under > Mandrake > Linux 7.2. > > /etc/hosts includes the '127.0.0.1 localhost'. > > Any (linux-) hints? You might be experiencing the same problem I have. My system is RH 7.0 Linux. I sent a problem report to matz today even though I have had the problem for quite some time. I think 1.7.0 hung for a while but 1.6.2 gives immediate getaddrinfo error. I should have proper /etc/host.conf, /etc/hosts and /etc/resolv.conf. By strace:ing ruby I found out that above files are read correctly, but instead of using localhost it goes on finding the IP from my ISP's DNS. matz thought it might relate to IPv6 problems, which have been (?) patched previously. For me this is not a complete showstopper as I've associated the IP of my machine at /etc/hosts and I'm able to say TCPSocket.open("my_machine_name", port) successfully. If you have a dynamic IP you might be a bit out of luck (or maybe in need of some Ruby hacking :). It might help Matz and/or others if you post a complete bug report to Bug tracking system listing various details: your system (uname -a + other info), version of glibc (rpm -q glibc or by checking it from filesystem), strace dump of working program (like telnet localhost) and non-working (above ruby script), the contents of above configuration files and everything that you could think to be useful. Or what matz requires later. - Aleksi