Thanks for this. Found a change request in he kernel which stated that when a remote client disconnects, poll keeps returning POLLIN, and you need to do what you recommend, checking the return length from recv ! Never quite as simple as poll returning POLLHUP ! Anthony