Repository navigation
0.7.1
SCTP reliability fixes and Go 1.26 minimum
Known issues confirmed by the 2026-10-30 audit:
- After a peer abort, reads can keep waiting if a Write has already consumed ECONNRESET.
- Concurrent listeners sharing a wildcard SCTPAddr can race because the library modifies the caller's address.
See the 0.7.1 audit and reproduction and v0.7.2 release goals. These defects remain present in this release.
Go 1.26 or later is now required. CI and release validation cover Go 1.26 and Go 1.27.
Changes:
- Preserve a single Read timeout budget while processing SCTP notifications, including wrapped reads.
- Fix socklen_t handling on big-endian architectures and remove the incorrect s390x pointer rewrite.
- Decode unaligned wrapped headers safely, return zero bytes on failed sends, and preserve complete-frame retries after timeouts.
- Use host byte order consistently for default-send PPID parameters.
- Decode mixed IPv4/IPv6 address lists with bounds checks and handle Linux's different local/peer address length conventions.
- Set CLOEXEC on peeled sockets, with a fork-safe fallback for older kernels.
- Support numeric IPv6 zone indexes while giving existing interface names precedence, including numeric names.
- Normalize the empty network name to sctp and reject unsupported names before opening a socket.
- Modernize binary encoding/decoding, native byte order, atomics, goroutine accounting, and examples for Go 1.26.
- Handle restricted user namespaces in tests and require isolated numeric-interface regression coverage in CI.
Validation:
- Repeated full race tests on Go 1.26 and Go 1.27, plus strict checkptr and low-GOGC checks.
- Regression tests for notification deadlines, descriptors, PPID, mixed addresses, interface-name/index conflicts, alignment, and truncated ancillary data.
- Release publication requires three isolated numeric-interface regression runs per Go version and ten full race-test runs on each Go version and ABI/codec regressions on ARM, ARM64, MIPS, MIPS64, PPC64, and s390x under QEMU.