From owner-cvs-src@FreeBSD.ORG Sat Mar 25 17:38:22 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 92E7616A420; Sat, 25 Mar 2006 17:38:22 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.FreeBSD.org (Postfix) with ESMTP id E8A2F43D55; Sat, 25 Mar 2006 17:38:21 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id 1233146BF8; Sat, 25 Mar 2006 12:38:16 -0500 (EST) Date: Sat, 25 Mar 2006 17:38:15 +0000 (GMT) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org In-Reply-To: <200603251728.k2PHSgjO015091@repoman.freebsd.org> Message-ID: <20060325173712.R88377@fledge.watson.org> References: <200603251728.k2PHSgjO015091@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Subject: Re: cvs commit: src/sys/netipx ipx_pcb.c ipx_pcb.h ipx_usrreq.c spx_usrreq.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Mar 2006 17:38:22 -0000 On Sat, 25 Mar 2006, Robert Watson wrote: > Rework IPX/SPX socket and pcb reference model: > > - Introduce invariant that all IPX/SPX sockets will have valid so_pcb > pointers to ipxpcb structures, and that for SPX, the control block > pointer will always be valid. Don't attempt to free the socket or > pcb at various odd points, such as disconnect. > > - Add a new ipxpcb flag, IPXP_DROPPED, which will be set in place of > freeing PCB's so that this invariant can be maintained. This flag > is now checked instead of a NULL check in various socket protocol > calls. > > - Introduce many assertions that this invariant holds. > > - Various pieces of code, such as the SPX timer code, no longer needs > to jump through hoops in case it frees a PCB while running. > > - Break out ipx_pcbfree() from ipx_pcbdetach(). Likewise > spx_pcbdetach(). > > - Comment on some SMP-related limitations to the SPX code. > > - Update copyrights. The SPX code seems not to properly implement having data sent via a socket be transmitted after the socket is closed, so attempting to use SPX without so_linger is actually not very reliable. I'm not sure why this is the case, and may investigate fixing it, but was surprised to find this was the case. Robert N M Watson