recv and errno during a connection reset/closed by peer

Peter A. Castro doctor@fruitbat.org
Wed Mar 30 09:51:00 GMT 2005


On Tue, 29 Mar 2005, Brian Ford wrote:

> On Mon, 28 Mar 2005, Peter Stephens wrote:
>
>> FYI - I tried setting the SO_LINGER and the SO_RCVTIMEO on Linux and on
>> Cygwin (see code below).  It makes sense to me that if the timeout has been
>> exceeded then the recv(..., MSG_PEEK) should do something.  On Cygwin it
>> doesn't do anything.
>
> I don't have time to check, but I imagine this is just a
> http://cygwin.com/acronyms/#PTC.

Yep, but I don't have time either, and this is a common enough problem
for other platforms. :(

>> On Linux it DOES time out, but it returns -1 and errno=EAGAIN.  This is an
>> interesting choice for errno
>
> Yes, it is the correct one.

I agree.

>> (perhaps ECONNABORTED, ESHUTDOWN, ECOMM,
>
> definately not.  Just because a recv timed out doesn't mean the connection
> is closed.
>
>> ETIME, ETIMEDOUT,
>
> Maybe.
>
>> EHOSTUNREACH, or ENOLINK would have been better choices),
>
> No as above.
>
>> The spec is kinda vague about the response to a MSG_PEEK when the connection
>> is lost, but I think that you could write a book on this subject with all
>> the possible combinations.
>
> Yup.  It's called "Unix Network Programming" by W. Richard Stevens ;-).

I believe I've got a copy of that book.  I'll have to dust it off and see
if it has any pronouncements in this area :)

> --
> Brian Ford

-- 
Peter A. Castro <doctor@fruitbat.org> or <Peter.Castro@oracle.com>
 	"Cats are just autistic Dogs" -- Dr. Tony Attwood

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list