Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

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?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://695054]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (2)
As of 2023-04-01 16:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?