From dd181a90e1f10f84a1e265c75dc7294f00f3ea19 Mon Sep 17 00:00:00 2001 From: zab2 <zab2@mail.i2p> Date: Thu, 25 Jul 2013 20:07:12 +0000 Subject: [PATCH] Fix NPE when cancelling PacketLocal's --- .../src/net/i2p/client/streaming/PacketLocal.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/streaming/java/src/net/i2p/client/streaming/PacketLocal.java b/apps/streaming/java/src/net/i2p/client/streaming/PacketLocal.java index 31c008c48b..7a9d78f680 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/PacketLocal.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/PacketLocal.java @@ -32,7 +32,7 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus { private long _cancelledOn; private final AtomicInteger _nackCount = new AtomicInteger(0); private volatile boolean _retransmitted; - private SimpleTimer2.TimedEvent _resendEvent; + private volatile SimpleTimer2.TimedEvent _resendEvent; /** not bound to a connection */ public PacketLocal(I2PAppContext ctx, Destination to) { @@ -112,6 +112,13 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus { _numSends++; _lastSend = _context.clock().now(); } + + private void cancelResend() { + SimpleTimer2.TimedEvent ev = _resendEvent; + if (ev != null) + ev.cancel(); + } + public void ackReceived() { final long now = _context.clock().now(); synchronized (this) { @@ -120,15 +127,16 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus { releasePayload(); notifyAll(); } - _resendEvent.cancel(); + cancelResend(); } + public void cancelled() { synchronized (this) { _cancelledOn = _context.clock().now(); releasePayload(); notifyAll(); } - _resendEvent.cancel(); + cancelResend(); if (_log.shouldLog(Log.DEBUG)) _log.debug("Cancelled! " + toString(), new Exception("cancelled")); } -- GitLab