SNMP4J 3.6.4 Release

SNMP4J 3.6.4 has been released 2021-12-14T23:00:00Z to fix a DTLS regression and improve TLS NIO operations.
This version includes some fixes that are important when using SNMP4J with SNMP4J-Agent and SNMP4J-Agent-DB with persistent storage of USM keys. All version 3.x users should consider upgrading to at least this or later releases.

CHANGES

[2021-12-15] Version 3.6.4:

  • Fixed: Possible busy looping for ready read and write keys in TLSTM caused by half-closed TLS connections and Java runtimes that report NEED_WRAP status from SSLEngine instead of FINISHED after processing CLOSED TLS warnings (i.e., after half-closing the connection).
  • Fixed: Possible write key busy looping in TLSTM caused when NEED_TASK is returned by SSLEngine.wrap on writing a queued message.
  • Fixed: Bug in DTLSTM.HandshakeTask.run() which caused DTLSTM handshake not to finish within timeout causing connect to fail or to be slow.
  • Fixed: Possible race condition in AbstractSocketEntry.nextBusyLoop.
  • Improved: JavaDoc.

[2021-12-04] Version 3.6.3:

  • Fixed: Clean TLS session closing with TLSTM.SocketEntry.closeSession() (regression since 3.0.6) and improved INFO logging when session is closed.
  • Fixed: NPE in DefaultTlsTmSecurityCallback if local fingerprint is null.
  • Fixed: Possible NPE when sending TLS message without tmStateReference.
  • Fixed: Deprecated warnings regarding X500 certificates getSubjectDN and getIssuerDN.
  • Fixed: Corrected accepted issuer DN for sendMessageWithPDUDnsCertPathVerification test.
  • Added: UsmUserEntry.setOwnerReference and UsmUserEntry.getOwnerReference to fix [AS-24].
  • Added: Unit test TLSTMTest.testCloseSession() to test session close and correct TransportStateEvent firing.
  • Added: UsmUserEntry.setOwnerReference(Object) and UsmUserEntry.getOwnerReference(Object) to mark the origin of UsmUserEntry instances during creation and event processing to avoid cyclic event processing.
  • Improved: Removed busy wait in DTLSTM.SocketEntry.
  • Improved: Transport state event sending for closed connections that are closed via TLS messages but not (yet) via closed TCP connections.

[2021-11-23] Version 3.6.2:

  • Fixed: Split up TLSTM unit test in two independent tests for testing with and without certificate revocation checks enabled or not.

[2021-11-15] Version 3.6.1:

  • Fixed [SFJ-244]: Removed secret information (keys and passwords) from any log output (by default). To re-activate log output, use SNMP4JSettings.setSecretLoggingEnabled(true).
  • Added: Default non-printable character support for OctetString.toString().
  • Added: Global OctetString non-printable character escaping using
    SNMP4JSettings.setDefaultNonPrintableEscapeCharacter(Character).
  • Improved: USM.addUser without localEngineID parameter now uses the localisation engine ID of the provided UsmUser (if the user is localized) instead using an empty engine ID (which had broken the user credentials if used so far).