diff --git a/history.txt b/history.txt index df2d610ee3..407332ec61 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2014-10-30 zzz + * Router: Fix rare NPE building garlic message (ticket #1403) + 2014-10-26 zzz * SSU: Fix ACK Sender thread dying on corrupt packet diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 421ff4f630..098e16d499 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 = 16; + public final static long BUILD = 17; /** for example "-test" */ public final static String EXTRA = "-rc"; diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java b/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java index 08c001e222..bb7cb83a87 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java @@ -220,6 +220,11 @@ class OutboundClientMessageJobHelper { ackClove.setId(ctx.random().nextLong(I2NPMessage.MAX_ID_VALUE)); DeliveryStatusMessage dsm = buildDSM(ctx, replyToken); GarlicMessage msg = wrapDSM(ctx, skm, dsm); + if (msg == null) { + if (log.shouldLog(Log.WARN)) + log.warn("Failed to wrap ack clove"); + return null; + } ackClove.setPayload(msg); // this does nothing, the clove is not separately encrypted //ackClove.setRecipient(ctx.router().getRouterInfo());