This is the mail archive of the cygwin@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: socket read()/write() problem in 1.1.6 [solved]


On Monday 11 December 2000 20:15, Corinna Vinschen wrote:
> closesocket() behaves different dependent on the SO_LINGER option
> set. The default behaviour of SO_DONTLINGER which results in a
> immediate return while the connection is gracefully shutdown
> in the background.
>
> The new Cygwin socket code doesn't use standard handle duplication
> on socket inheritance between processes but the special Winsock2
> functions WSADuplicateSocket() and WSASocket().
>
> When calling closesocket() on duplicated sockets using the above
> Winsock2 method, closesocket() seems to act as if SO_LINGER with
> zero time-out is enabled which results in closesocket() returning
> immediately while forcing an immediate termination of the
> connection.
>
> That behaviour is not documented in the MSDN, AFAICS.

Sorry, folks. I have discovered the above description to be somewhat
rash. Further intensiv testing lead to the result that it's in fact
only a timing difference between using Winsock 1.1 and Winsock 2.0
sockets. You can reproduce the connection reset failure even with the
old implementation. It's far less frequently, though. 

> I tried various workarounds but the only reliable way seems to
> be to perform a graceful shutdown in the application.

At least this remains true.

Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Developer                                mailto:cygwin@cygwin.com
Red Hat, Inc.

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]