Date: Sat, 25 Mar 2006 17:38:15 +0000 (GMT) From: Robert Watson <rwatson@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/netipx ipx_pcb.c ipx_pcb.h ipx_usrreq.c spx_usrreq.c Message-ID: <20060325173712.R88377@fledge.watson.org> In-Reply-To: <200603251728.k2PHSgjO015091@repoman.freebsd.org> References: <200603251728.k2PHSgjO015091@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060325173712.R88377>