Opened 4 years ago

Last modified 3 years ago

#1562 open defect

Bote ignores session exception

Reported by: zzz Owned by: str4d
Priority: minor Milestone: undecided
Component: apps/plugins Version: 0.9.19
Keywords: bote Cc:
Parent Tickets: Sensitive: no

Description

After getting a session exception, it tries to load a 0-length datagram into the dissector. See I2PPacketDispatcher line 91. Should never get to the 2nd error below.

The fact that it gets to the 3rd error is a bug on the i2p side, it should throw a DFE when it gets an IOE. Fixed in 0dbfa32f838d839398b2d25e896e8178966a3bca to be 0.9.19-17.

05 06 AA:24:49.558 ERROR [ote #7811]: ] te.network.I2PPacketDispatcher: Can't get new message from I2PSession.
         net.i2p.client.I2PSessionException: Error decompressing message
         at net.i2p.client.I2PSessionImpl2.receiveMessage(I2PSessionImpl2.java:297)
         at i2p.bote.network.I2PPacketDispatcher.messageAvailable(I2PPacketDispatcher.java:89)
         at i2p.bote.network.I2PPacketDispatcher.messageAvailable(I2PPacketDispatcher.java:82)
         at net.i2p.client.I2PSessionDemultiplexer.messageAvailable(I2PSessionDemultiplexer.java:39)
         at net.i2p.client.I2PSessionMuxedImpl$MuxedAvailabilityNotifier.run(I2PSessionMuxedImpl.java:369)
         at java.lang.Thread.run(Unknown Source)
         at net.i2p.util.I2PThread.run(I2PThread.java:107)
         Caused by: java.io.IOException: Stream closed
         at java.util.zip.InflaterInputStream.ensureOpen(Unknown Source)
         at java.util.zip.InflaterInputStream.read(Unknown Source)
         at net.i2p.util.ResettableGZIPInputStream.read(ResettableGZIPInputStream.java:100)
         at net.i2p.data.DataHelper.decompress(DataHelper.java:1783)
         at net.i2p.data.DataHelper.decompress(DataHelper.java:1763)
         at net.i2p.client.I2PSessionImpl2.receiveMessage(I2PSessionImpl2.java:295)
         ... 6 more

05 06 AA:24:49.558 ERROR [ote #7811]: ] .datagram.I2PDatagramDissector: Caught IOException - INCONSISTENT STATE!
         java.io.EOFException: Not enough bytes to read the data
         at net.i2p.data.SDSCache.get(SDSCache.java:178)
         at net.i2p.data.PublicKey.create(PublicKey.java:44)
         at net.i2p.data.Destination.create(Destination.java:57)
         at net.i2p.client.datagram.I2PDatagramDissector.loadI2PDatagram(I2PDatagramDissector.java:77)
         at i2p.bote.network.I2PPacketDispatcher.messageAvailable(I2PPacketDispatcher.java:100)
         at i2p.bote.network.I2PPacketDispatcher.messageAvailable(I2PPacketDispatcher.java:82)
         at net.i2p.client.I2PSessionDemultiplexer.messageAvailable(I2PSessionDemultiplexer.java:39)
         at net.i2p.client.I2PSessionMuxedImpl$MuxedAvailabilityNotifier.run(I2PSessionMuxedImpl.java:369)
         at java.lang.Thread.run(Unknown Source)
         at net.i2p.util.I2PThread.run(I2PThread.java:107)

    05 06 AA:24:49.558 ERROR [ote #7811]: ] te.network.I2PPacketDispatcher: Datagram failed verification.
         net.i2p.client.datagram.I2PInvalidDatagramException: Datagram not yet read
         at net.i2p.client.datagram.I2PDatagramDissector.verifySignature(I2PDatagramDissector.java:222)
         at i2p.bote.network.I2PPacketDispatcher.messageAvailable(I2PPacketDispatcher.java:101)
         at i2p.bote.network.I2PPacketDispatcher.messageAvailable(I2PPacketDispatcher.java:82)
         at net.i2p.client.I2PSessionDemultiplexer.messageAvailable(I2PSessionDemultiplexer.java:39)
         at net.i2p.client.I2PSessionMuxedImpl$MuxedAvailabilityNotifier.run(I2PSessionMuxedImpl.java:369)
         at java.lang.Thread.run(Unknown Source)
         at net.i2p.util.I2PThread.run(I2PThread.java:107)

reported by a bote user

Subtickets

Change History (1)

comment:1 Changed 3 years ago by str4d

Status: newopen
Note: See TracTickets for help on using tickets.