Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re^2: Can't read end data out of a socket

by sgifford (Prior)
on Jul 02, 2008 at 00:34 UTC ( #695054=note: print w/replies, xml ) Need Help??

in reply to Re: Can't read end data out of a socket
in thread Can't read end data out of a socket

pc88mxer is right about buffering. You are reading all of the data, but it's not being printed. Perl (and the C STDIO library) will save up output until it has a full page of data, or if it's printing to a terminal a full line. Because the server's response doesn't contain enough data to fill a page or a newline character, Perl won't flush the buffer until STDOUT is closed. And because HTTP 1.1 uses connection keepalives by default, the read loop never exits, and so the program never exits, and so STDOUT is never closed. I also found that adding a:
Connection: close
header fixed the problem, since then the server closes the connection, allowing the read loop to exit and then the program.

FYI, I found this problem using a system call tracer ( strace specifically), which is a fantastic tool for debugging these sorts of things.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://695054]
and a log crumbles through the grate...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2017-08-19 08:42 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (310 votes). Check out past polls.