Gem hangs => TCPSocket.write hangs

T

Tim Shadel

Well, I tried deleting the cache and that didn't work. So I dug in
and tried to find the call that was hanging. I eventually traced it
down to the TCPSocket.write call inside the HTTP module. Here's a
snippet from irb that shows the problem:

C:\>irb
irb(main):001:0> require 'socket'
=3D> true
irb(main):002:0> sock =3D TCPSocket.new("gems.rubyforge.org", 80)
=3D> #<TCPSocket:0x2d3c960>
irb(main):003:0> sock.write "GET /yaml.Z HTTP/1.1\r\nHost:
gems.rubyforge.org\r\n\r\n"

(Hangs)

I also tried to write a small script to show the problem.

-------
require 'socket'

hostname =3D ARGV[0]
puts "Making socket to #{hostname}"
sock =3D TCPSocket.new(hostname, 80)
mesg =3D "GET /yaml.Z HTTP/1.1\r\nHost: #{hostname}\r\n\r\n"
puts "writing to socket #{hostname}: " + mesg
sock.write mesg
puts "Wow, no hang!"
-----

Here's the output:

------
C:\>ruby test.rb google.com
Making socket to google.com
writing to socket google.com: GET /yaml.Z HTTP/1.1
Host: google.com

------

But wget works, so my internet connection is fine, DNS resolves the
names, and I don't have any problems communicating with either
gems.rubyforge.org or google.com.

Even trying a connection to localhost:8080 (Tomcat) failed.

So any idea how I can fix this problem? It just seems like Ruby can't
write to any sockets at all, or am I misinterpreting the symptoms.

I'd truly love to start working with Ruby, and I'm very interested in
Rails, but I can't see how I can really dive in unless I can get
sockets to just work.

Thanks in advance for your help,

Tim


Hi,

I'm new to Ruby, and gem is hanging when it attempts to update the gem
source index (which happens every time I try to install anything,
obviously). [...]
gem --debug --backtrace install rails
[...]
Exception `TypeError' at
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/remote_installer.rb:222 -
incompatible marshal file format (can't be read)
format version 4.8 required; 45.45 given
Updating Gem source index for: http://gems.rubyforge.org
=20
It is actually working as intended, except for the hang during the source
index update. Gem detects that loading your cache failed (incompatible
marshal format), so it attempts to download the source index.
=20
You can just blow away the cache file. It is named "source_cache" in the
directory returned by the command 'gem env gempath'. If the `gem env
gempath` directory is protected, you may also have another copy of the ca= che
in $HOME/.gem.
=20
Blowing it away will get rid of the marshal file format error. I don't k= now
if it will solve the download problem or not.
=20
 
V

Ville Mattila

Do you happen to have zonealarm or some other personal firewall installed.
The behaviour you are having seems to be one that have been reported previously
causing by ZA.

- Ville
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,014
Latest member
BiancaFix3

Latest Threads

Top