From 0ed88c5686a58af9ed79450ae32fc61715369cd5 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 16 Jan 2011 15:30:41 +0000 Subject: [PATCH] * UDP: Prevent rare startup NPE --- .../router/transport/udp/UDPTransport.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index b55d845adc..b7b6f28da2 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -52,16 +52,16 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private PacketHandler _handler; private EstablishmentManager _establisher; private final MessageQueue _outboundMessages; - private OutboundMessageFragments _fragments; + private final OutboundMessageFragments _fragments; private final OutboundMessageFragments.ActiveThrottle _activeThrottle; private OutboundRefiller _refiller; private PacketPusher _pusher; - private InboundMessageFragments _inboundFragments; + private final InboundMessageFragments _inboundFragments; private UDPFlooder _flooder; private PeerTestManager _testManager; private final IntroductionManager _introManager; - private ExpirePeerEvent _expireEvent; - private PeerTestEvent _testEvent; + private final ExpirePeerEvent _expireEvent; + private final PeerTestEvent _testEvent; private short _reachabilityStatus; private long _reachabilityStatusLastUpdated; private long _introducersSelectedOn; @@ -227,8 +227,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } public void startup() { - if (_fragments != null) - _fragments.shutdown(); + _fragments.shutdown(); if (_pusher != null) _pusher.shutdown(); if (_handler != null) @@ -239,8 +238,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _establisher.shutdown(); if (_refiller != null) _refiller.shutdown(); - if (_inboundFragments != null) - _inboundFragments.shutdown(); + _inboundFragments.shutdown(); if (_flooder != null) _flooder.shutdown(); _introManager.reset(); @@ -345,14 +343,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _refiller.shutdown(); if (_handler != null) _handler.shutdown(); - if (_fragments != null) - _fragments.shutdown(); + _fragments.shutdown(); if (_pusher != null) _pusher.shutdown(); if (_establisher != null) _establisher.shutdown(); - if (_inboundFragments != null) - _inboundFragments.shutdown(); + _inboundFragments.shutdown(); _expireEvent.setIsAlive(false); _testEvent.setIsAlive(false); } @@ -1116,7 +1112,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (msg == null) return; if (msg.getTarget() == null) return; if (msg.getTarget().getIdentity() == null) return; - + if (_establisher == null) { + failed(msg, "UDP not up yet"); + return; + } + msg.timestamp("sending on UDP transport"); Hash to = msg.getTarget().getIdentity().calculateHash(); PeerState peer = getPeerState(to); @@ -1443,11 +1443,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (_log.shouldLog(Log.INFO)) _log.info("Sending message failed: " + msg, new Exception("failed from")); - if (!_context.messageHistory().getDoLog()) + if (_context.messageHistory().getDoLog()) _context.messageHistory().sendMessage(msg.getMessageType(), msg.getMessageId(), msg.getExpiration(), msg.getTarget().getIdentity().calculateHash(), false, reason); super.afterSend(msg, false); } + public void succeeded(OutboundMessageState msg) { if (msg == null) return; if (_log.shouldLog(Log.DEBUG)) -- GitLab