[SNMP4J] Two Snmp, one TransportMapping cause IOException

Robert Mycek robert.mycek at gmail.com
Wed Oct 14 10:31:42 CEST 2009


Hi,

asyncMsgProcessingSupported is true by default (AbstractTransportMapping:44)

Problem is in AbstractTransportMapping.fireProcessMessage(Address,
ByteBuffer):83
After first iteration buffer buf is in wrong state (processMessage
read from buf and change it position)
I change this line to:
l.processMessage(this, address, buf.duplicate());
and after recompilation it works.

rm

On Tue, Oct 13, 2009 at 9:47 PM, Frank Fock <fock at agentpp.com> wrote:
> Hi Robert,
>
> Although this is an unusual use case (normally you would use
> a single Snmp instance with one or more transport mappings),
> it should work. Prerequisite is that you set
>
> transport.setAsyncMsgProcessingSupported(true);
>
> before you call
>
> transport.listen();
>
> Best regards,
> Frank
>
> Robert Mycek wrote:
>>
>> Hi,
>>
>> QUESTION:
>> Is it OK to put one transportMapping to many Snmp object?
>>
>> PROBLEM:
>> I create 2 Snmp objects and one TransportMapping (UDP).
>>
>> TransportMapping transport = new DefaultUdpTransportMapping(address);
>> transport.listen();
>> Snmp snmp1 = new Snmp(transport);
>> Snmp snmp2 = new Snmp(transport);
>>
>> Simultaneously in separate threads do request (Set, Get, etc) on snmp1
>> and snmp2.
>>
>> This cause:
>> java.io.IOException: Unexpected end of input stream at position 87
>>       at org.snmp4j.asn1.BERInputStream.read(BERInputStream.java:59)
>>       at org.snmp4j.asn1.BER.decodeHeader(BER.java:578)
>>       at
>> org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:327)
>>       at
>> org.snmp4j.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:309)
>>       at
>> org.snmp4j.transport.AbstractTransportMapping.fireProcessMessage(AbstractTransportMapping.java:83)
>>       at
>> org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread.run(DefaultUdpTransportMapping.java:364)
>>       at java.lang.Thread.run(Thread.java:595)
>>       at
>> org.snmp4j.util.DefaultThreadFactory$WorkerThread.run(DefaultThreadFactory.java:65)
>>
>> snmp4j: 1.10.1
>>
>> RM
>> _______________________________________________
>> SNMP4J mailing list
>> SNMP4J at agentpp.org
>> http://lists.agentpp.org/mailman/listinfo/snmp4j
>
> --
> AGENT++
> http://www.agentpp.com
> http://www.snmp4j.com
> http://www.mibexplorer.com
> http://www.mibdesigner.com
>
>



More information about the SNMP4J mailing list