Skip to content

v0.7.2

Latest

Choose a tag to compare

@github-actions github-actions released this 31 Oct 03:28
· 1 commit to master since this release
5359b44

SCTP stability fixes and portable resource ownership

v0.7.2 addresses all 14 confirmed defects/input-validation gaps tracked in
#1, #2, #4–#12 and #14–#16. It also implements the non-blocking #13 consistency
improvement. Go 1.26 remains the minimum; public signatures are preserved.

  • Stop waiting after a single association terminates and another I/O consumes
    its reset. Preserve live endpoints, peeled connections, buffered data, normal
    shutdown, notification timeout budgets and Close wakeups. This fixes a
    regression introduced in 0.5, not by the Go 1.26 migration.
  • Empty reads no longer discard data; header-only wrapped reads return EINVAL.
    Reset/error reads never return negative counts or fictitious headers.
  • Initialize the full wrapper header, including zero metadata for notifications;
    preserve existing subscriptions when enabling DATA_IO and surface setup errors.
  • Use actual zero-payload sendmsg for empty writes, retaining kernel control
    semantics without injecting a byte. Correct SCTP_EOF to the Linux 0x200 value.
  • Copy address inputs, reject invalid ports and nil remote addresses before
    socket/Control side effects, and reject empty multihoming host segments.
  • Query complete address lists with bounded ENOMEM growth from 4 KiB to a
    documented 1 MiB address-area budget; never return partial failed queries.
  • Export ErrUnsupported consistently and provide Listener.SyscallConn stubs.
    Failed unsupported constructors immediately release owned sockets with Unix
    close or Windows closesocket, including fd=0, without later closing reused fds.
  • Return a nil net.Conn interface when Accept fails, preserving the original error.

Release publication requires all native Linux 1.26/1.27 × two-kernel jobs,
independent ten-process race/shuffle rounds, vet/checkptr/low-GOGC/fuzz checks,
three actual numeric-interface namespace tests per matrix cell, five-target
external consumers, README examples, Linux/386 and native Windows ownership
checks, and six-architecture QEMU ABI tests. QEMU checks do not claim full SCTP
protocol validation. The annotated canonical v0.7.2 tag preserves all old tags.

The library still exposes unsupported standard deadline methods and no new
ReadMsg or DialContext API. See README for socket timeouts, framing limitations,
empty operations, query budgets, and platform support.