Skip site navigation (1)Skip section navigation (2)
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>