How to properly manage client disconnection?

Kevyn-Alexandre Paré kapare at rogue-research.com
Wed May 23 18:07:50 CEST 2012


Hi Jonathan,

On 2012-05-22, at 3:47 PM, Jonathan Neuschäfer wrote:

> On Tue, May 22, 2012 at 03:32:35PM -0400, Kevyn-Alexandre Paré wrote:
>> 1) Can I assume that if the recv return zero mean that the client have been disconnected?
> 
> Yes, that's what the manpage states:
> "The return value will be 0 when the peer has performed an orderly shutdown."
> 

thx for confirming, my previous quick look at the help made me doubt because of the "orderly shutdown"….

Further reading help me to clarify my lack of comprehension ;)

Mac OS X 10.7 man recv is even more detail about that behaviour:

"For TCP sockets, the return value 0 means the peer has closed its half side of the connection."

reference:
https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man2/recv.2.html

Again, not read enough for the SIGPIPE:

EPIPE  "The socket is shut down for writing or the socket is connection-mode and is no longer connected.  In the latter case, and if the socket is of type SOCK_STREAM, the SIGPIPE signal is generated to the calling thread."

An simple send after a read with zero bytes return a EPIPE and generate a SIGPIPE.

thx 

- KA




> Thanks,
> 	Jonathan Neuschäfer




More information about the libev mailing list