Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com
Date: Wed, 30 Mar 2005 20:54:31 -0800 (PST)
From: "Peter A. Castro" <doctor@fruitbat.org>
To: cygwin@cygwin.com
cc: Peter Stephens <ptfoof@sbcglobal.net>
Subject: RE: recv and errno during a connection reset/closed by peert
In-Reply-To: <Pine.CYG.4.58.0503301029410.3732@fordpc.vss.fsi.com>
Message-ID: <Pine.LNX.4.60.0503301941480.527@gremlin.fruitbat.org>
References: <!~!UENERkVCMDkAAQACAAAAAAAAAAAAAAAAABgAAAAAAAAAUKQItienSEKG+9226yKd5cKAAAAQAAAAdWX/pT74GUisDog/o7TE3gEAAAAA@sbcglobal.net> <Pine.CYG.4.58.0503291040080.3732@fordpc.vss.fsi.com> <Pine.LNX.4.60.0503291711560.736@gremlin.fruitbat.org> <Pine.CYG.4.58.0503301029410.3732@fordpc.vss.fsi.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-IsSubscribed: yes

On Wed, 30 Mar 2005, Brian Ford wrote:

> On Tue, 29 Mar 2005, Peter A. Castro wrote:
>> On Tue, 29 Mar 2005, Brian Ford wrote:
>>> On Tue, 29 Mar 2005, Peter Stephens wrote:
>>>> I have thought about your suggestion and it makes a lot of sense.
>>>>
>>>> It seems like your suggestion would be very portable.  A good
>>>> suggestion and the most likely route for me at this point.
>>>
>>> Not to me.  Maybe I'm missing something, but it seems you are going to a
>>> lot of effort to poorly recreate poll/select?
>>
>> Why?
>
> A zero length return on a stream socket always means that the peer has
> closed its socket for writing.  It may, however, still be open for
> reading (I don't remember the syscalls for doing such, but it can be
> done).

And I'm saying experience shows to the contrary.

> A zero return on a datagram socket always means that a zero length
> message has been received.

We're talking stream, not datagram here.

> Counting zero returns is a poor hack at best and makes no sense to me
> since it never gives you any more information.

Considering its a very simply solution to a real problem, what makes it a
poor hack?

>> If you are doing sequential, non multi-plexed, reads why do poll or
>> select?
> You don't need to.
>> Sitting in read is more optimal and the read should return
>> either data or an error.
> Ok.
>> The flaw in recv is that it returns a non-error non-data status.
> It's not a flaw, it's the design (see above).

Yes, and I've never been very happy with it.  If the connection was
closed and there's no more data left to return, I'd prefer recv returned
-1 with ENODATA or ENOTCONN for the errno.  But, it's not likely recv's
semantics will ever be changed.

>> Perhaps it would be better to switch to using read() instead of recv?
> They usually have exactly the same semantics.

Note the word "usually".  Not "always".

> --
> 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/

