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/3now closes its private socket from anafterblock.- 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.Walkerbulk 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.