cvs commit: src/sys/netipx ipx_pcb.c ipx_pcb.h ipx_usrreq.c
spx_usrreq.c
Robert Watson
rwatson at FreeBSD.org
Sat Mar 25 17:38:22 UTC 2006
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
More information about the cvs-src
mailing list