SnmpKit v1.3.23 Release Notes

Release Date: May 2026 Version: 1.3.23 Previous Version: 1.3.22

Overview

This patch release hardens SNMP UDP response correlation and socket ownership across the classic manager, shared-socket V2 engine, and lower-level walker. It focuses on correctness under timeout, retry, and concurrent polling conditions while preserving the public API.

Highlights

  • Classic manager operations now accept only UDP responses from the expected target endpoint with the expected SNMP request id.
  • Delayed or stale UDP responses are ignored until the current per-PDU timeout expires, preventing response mix-ups on reused sockets and retries.
  • V2 shared-socket request registration is now synchronous before send, closing a race where very fast responses could be dropped as unknown.
  • get_multi/3 now closes its private socket from an after block.
  • Documented local_port: support now works for manager and walker socket creation.
  • Target connectivity validation now performs an SNMP probe instead of a TCP connect check.
  • The lower-level SnmpLib.Walker bulk and streaming paths now reuse one UDP socket per walk.

API Compatibility

This release is backward compatible:

  • No public function signatures were removed or changed.
  • Existing timeout and retry options keep their per-PDU semantics.
  • local_port: remains optional and defaults to ephemeral source ports.
  • Existing walker return shapes are unchanged.

User-Visible Fixes

Response Correlation

Classic GET, GETBULK, SET, GETNEXT, and socket-reused multi-get paths no longer decode the first UDP packet that arrives blindly. Responses must now match both the expected target endpoint and request id.

Shared-Socket Polling

The high-concurrency V2 engine registers each request before the packet can be sent, avoiding fast-response drops under local simulator or low-latency network conditions.

Socket Reuse

Lower-level bulk walkers now avoid opening and closing a socket for each GETBULK page, matching the regular walk behavior introduced in v1.3.22.

Validation

Validated with:

  • focused manager, transport, walker, and V2 timeout tests
  • stale UDP response regression coverage
  • explicit local source port binding coverage
  • full test suite

The full suite passed with 76 doctests and 1394 tests.