[SNMP4J] Bug in snmp4j-1.9.3 on PendingRequest.run()

Iker Almandoz ikeralmandoz.lists at gmail.com
Tue Jul 22 19:24:11 CEST 2008


Hi Frank, 

Thanks a lot for doing the efficiency updates and doing the 1.9.3 release.

I started using the new version immediately and came across the following:

In the PendingRequest.run() method, you have added

      if ((m_key == null) || (m_pdu == null) || (m_target == null) ||
          (m_transport == null) || (m_listener == null)) {
        if (logger.isDebugEnabled()) {
          logger.debug("PendingRequest canceled key="+m_key+", pdu="+m_pdu+
              ", target="+m_target+", transport="+m_transport+", listener="+
              m_listener);
        }
        return;
      }


However, when I use:

  public ResponseEvent send(PDU pdu, Target target) throws IOException {
    return send(pdu, target, null);
  }

Which calls

  public ResponseEvent send(PDU pdu, Target target,
                            TransportMapping transport) throws IOException {
    if (!pdu.isConfirmedPdu()) {
      sendMessage(pdu, target, transport, null);
      return null;
    }
    if (timer == null) {
      createPendingTimer();
    }
    SyncResponseListener syncResponse = new SyncResponseListener();
    PendingRequest retryRequest = null;
    synchronized (syncResponse) {
      PduHandle handle = null;
      PendingRequest request =
          new PendingRequest(syncResponse, target, pdu, target, transport);


Then the PEndingRequest is initialized with m_transport = null

This is somehow creating a problem in my code making it hang when I try a
request that fails, 

Best regards, 
Iker




More information about the SNMP4J mailing list