Skip to content

pmd-pytcp 0.3.1

Choose a tag to compare

@doronz88 doronz88 released this 10 Aug 18:34
· 28 commits to main since this release

Bugfix release

tcp: SysCall.ABORT was silently dropped by every FSM state — aborted sessions leaked their local ports (#7, thanks @vToMy)

No FSM state handler implemented SysCall.ABORT, and five states (FIN_WAIT_1, FIN_WAIT_2, CLOSING, LAST_ACK, TIME_WAIT) installed no syscall handler at all — so dispatch_syscall() silently no-op'd an ABORT in every state. The address-removal teardown cascade (stack.address.remove, the ip addr del path) relied on that dispatch: sessions bound to a removed address were never torn down (no RST, no CLOSED transition), stayed registered in stack.sockets forever, and each permanently consumed one ephemeral port. Long-running processes that add and remove interfaces drained the pool until connect() raised EADDRINUSE.

All eleven state handlers now implement ABORT per RFC 9293 §3.9.1, delegating to TcpSession.abort() — RST at SND.NXT for synchronized states, silent TCB deletion otherwise, always reaching the terminal CLOSED transition that unregisters the socket and releases its port.

Only pmd-pytcp bumps (0.3.0 → 0.3.1); pmd-net-addr / pmd-net-proto stay at 0.0.3.