I think I figured out the issue with the sockets on HPUX. It may affect other *NIXes as well. In socket/init.c the file descriptor is opened in O_NDELAY mode. In Linux O_NDELAY and O_NONBLOCK are the same. In other implementations, it's not. In O_NDELAY mode, read()s return a zero if there is no data on a pipe (sockets are treated as pipes). It also returns a zero if there is no writer open on the pipe. So, it becomes impossible to tell the difference. I suggest changing O_NDELAY in socket/init.c InitConnection() to O_NONBLOCK. This will cause read()s where there is no data to return a -1 with errno set to EAGAIN. Kurt.