[Israel.pm] receiving undef via socket

Roie Marianer roiem at actcom.co.il
Fri Aug 4 02:17:00 PDT 2006


> I have an application that is forking clients and talks to them via
> sockets. Ocassionally the client receives undef via the socket. I wonder
> why.
Never worked with Unix sockets before, so I may be way off here, but... is the 
<$sock_to_parent> call in the child nonblocking? Perhaps the child tries to 
read from the parent before the parent finishes writing to the socket, and 
instead of waiting, you get undef.

Also, depending on the circumstances, you may get a partial command 
(especially if the command was very long, but I believe the operating system 
is technically allowed to split even a two-byte message), or two commands (if 
they were short and submitted in rapid succession).

Basically, you seem to be treating a stream-based socket as if it were a 
datagram-based socket, and as you just found out, that doesn't always 
work. :-)

At least, that's my experience with TCP, maybe it's different with Unix 
sockets.

-R



More information about the Perl mailing list