It returns an integer 0 from the sysread function but loads undef into the buffer that sysread stores the data in. I think it is still open because the app never closes it. Maybe I am missing something but this socket is suppose to remain open so I assumed it was since the only one I close is the client socket.