Received: by taz.hyperreal.com (8.8.3/V2.0) id XAA29445; Sat, 18 Jan 1997 23:56:10 -0800 (PST) Received: from scanner.worldgate.com by taz.hyperreal.com (8.8.3/V2.0) with ESMTP id XAA29441; Sat, 18 Jan 1997 23:56:05 -0800 (PST) Received: from znep.com (uucp@localhost) by scanner.worldgate.com (8.7.5/8.7.3) with UUCP id AAA09439 for new-httpd@hyperreal.com; Sun, 19 Jan 1997 00:56:04 -0700 (MST) Received: from localhost (marcs@localhost) by alive.ampr.ab.ca (8.7.5/8.7.3) with SMTP id AAA12096 for ; Sun, 19 Jan 1997 00:56:22 -0700 (MST) Date: Sun, 19 Jan 1997 00:56:22 -0700 (MST) From: Marc Slemko X-Sender: marcs@alive.ampr.ab.ca To: new-httpd@hyperreal.com Subject: solution for lingering problems found? Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: new-httpd-owner@apache.org Precedence: bulk Reply-To: new-httpd@hyperreal.com Does anyone have any reasons why we need to use any lingering things (ie. either SO_LINGER or lingering_close) other than broken SVR4 systems that discard unsent data when a socket is destroyed? From checking the list archives, that seems to be the only reason the lingering stuff was added. I just noticed the following in the Unix sockets FAQ: Closing a socket: if SO_LINGER has not been called on a socket, then close() is not supposed to discard data. This is true on SVR4.2 (and, apparently, on all non-SVR4 systems) but apparently not on SVR4; the use of either shutdown() or SO_LINGER seems to be required to guarantee delivery of all data. This should mean that if we change child_main to do a shutdown() and not just a close(), we can get rid of all the lingering junk entirely and still make things work. This should get rid of most, but probably not all, of the FIN_WAIT_2 problems. Anyone have a SVR4.2 box (ISTR Unixware may have the same problems) to test this on?