Upgrades 3.7.5 and 2.8.16 of SNMP4J have been released 2023-03-05T23:00:00Z to fix an issue with TLS inbound processing when several TLS packets are received in a single TCP packet. In addition, these release contain smaller fixes and improvements.
CHANGES
Version 3.7.5:
- Fixed:
TLSTM.readMessage
did not read messages in the incoming net buffer all at-once when there are more than one TLS message sent in a single TCP packet. - Fixed:
SnmpConstants.snmp4jStatsRequestWaitTime
incorrectly computed if request needs an engine ID discovery. - Improved: Possible race condition in
AbstractTransportServerThread.doServer
, when agent response is returned faster than SNMP4J activates OP_READ key selector after the confirmed message sending. This issue has never been seen to be relevant in practise because Java NIO needs to report an incorrect 0 key update count then. - Added:
ResponseEventFactory
now allows central processing of responses and their requests. - Improved:
MPv3.Cache
logging. - Improved: Request and response debug logging including request duration in nanoseconds.
- Improved: A
WARN
log will be emitted if the activeLogFactory
is overwritten (reset) by a new one usingLogFactory.setFactory
.
Version 2.8.16:
- Fixed:
TLSTM.readMessage
did not read messages in the incoming net buffer all at-once when there are more than one message sent in a single TCP packet. - Fixed: Race-condition in
TLSTM.writeMesage
that might register the read key after the response already arrived, which will suppress the processing of the response until is timed out. - Fixed: NIO key
Selector
might not count updated keys correctly (maybe race conditions inside NIO, but API contract does not guarantee it anyway). To mitigate this possible issue of ignoring available data on TCP channels, the code has changed to ignore the “updated channels” return value of theselect()
call. - Improved: Back ported SNMP4J 3.x
ConsoleAdapter
logger to 2.8.x to support timestamped logging. - Improved:
MPv3.Cache
logging. - Improved: A
WARN
log will be emitted if the activeLogFactory
is overwritten (reset) by a new one usingLogFactory.setFactory
.