Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Tue, 4 Jun 2002 18:23:49 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: Socket Handles duplicated twice after fork Message-ID: <20020604182349.L30892@cygbert.vinschen.de> Mail-Followup-To: cygwin AT cygwin DOT com References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.22.1i On Tue, Jun 04, 2002 at 10:59:00AM -0400, David E Euresti wrote: > Ah the additional handles come from this. > > fork call CreateProcess as follows > rc = CreateProcess (myself->progname, /* image to run */ > myself->progname, /* what we send in arg0 */ > sec_attribs, > sec_attribs, > TRUE, /* inherit handles from parent */ > c_flags, > NULL, /* environment filled in later */ > 0, /* use current drive/directory */ > &si, > &pi); > > notice the inherit handles from parent, The handles are only inherited if they are explicitly marked as inheritable. The Cygwin code lives for a long time now under the assumption that sockets aren't inheritable if they aren't explicitely set to be inheritable (see net.cc, fdsock()). This seems to be wrong, apparently. > I don't know why it's written this way. It would seem easier to just use > the same Duplicated handle from the CreateProcess. I'm thinking that > maybe on Win9x it doesn't work the same (but I haven't even tested it) You're right. This code tries to eliminate a problem on 9x/Me with sockets duplicated by DuplicateHandle() which results in various annoying effects (see TechNet). I'd never had written that Winsock2 duplication code otherwise since we never had a problem duplicating and inheriting a socket on NT. Corinna > Hope this helps. Yes, it helps to rethink the situation. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Developer mailto:cygwin AT cygwin DOT com Red Hat, Inc. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/