From 8480a204eafb3bda1ae9e4d3070b4a4357943ca6 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 13 May 2014 18:45:54 +0000 Subject: [PATCH] * BOB, SAM, i2psnark: Fix datagram NPE (ticket #1275) This could only happen on an extremely overloaded router. --- apps/BOB/src/net/i2p/BOB/UDPIOthread.java | 6 ++++-- apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java | 2 ++ apps/sam/java/src/net/i2p/sam/SAMMessageSession.java | 2 ++ history.txt | 4 ++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/BOB/src/net/i2p/BOB/UDPIOthread.java b/apps/BOB/src/net/i2p/BOB/UDPIOthread.java index e5c753f5e..1b6f4249d 100644 --- a/apps/BOB/src/net/i2p/BOB/UDPIOthread.java +++ b/apps/BOB/src/net/i2p/BOB/UDPIOthread.java @@ -106,8 +106,10 @@ public class UDPIOthread implements I2PSessionListener, Runnable { // _log.debug("Message available: id = " + msgId + " size = " + size); try { byte msg[] = session.receiveMessage(msgId); - out.write(msg); - out.flush(); + if (msg != null) { + out.write(msg); + out.flush(); + } } catch (I2PSessionException ise) { up = false; } catch (IOException ioe) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java b/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java index 1ea2c9917..0d4e1bafc 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java +++ b/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java @@ -1536,6 +1536,8 @@ public class KRPC implements I2PSessionMuxedListener, DHT { // TODO throttle try { byte[] payload = session.receiveMessage(msgId); + if (payload == null) + return; _rxPkts.incrementAndGet(); _rxBytes.addAndGet(payload.length); if (toPort == _qPort) { diff --git a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java index c83c81a2a..64895c9c6 100644 --- a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java +++ b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java @@ -234,6 +234,8 @@ public abstract class SAMMessageSession { } try { byte msg[] = session.receiveMessage(msgId); + if (msg == null) + return; if (_log.shouldLog(Log.DEBUG)) { _log.debug("Content of message " + msgId + ":\n" + HexDump.dump(msg)); diff --git a/history.txt b/history.txt index 5c83f3289..f9278ae82 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,7 @@ +2014-05-13 zzz + * BOB, SAM, i2psnark: Fix datagram NPE (ticket #1275) + * SusiMail: Fix AIOOBE (ticket #1269) + 2014-05-10 zzz * NTCP: Fix NPE (ticket #996) * SusiMail: Remove deleted mails from memory diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 098e16d49..14408f1ed 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 17; + public final static long BUILD = 18; /** for example "-test" */ public final static String EXTRA = "-rc";