forked from I2P_Developers/i2p.i2p
* UDP: Prevent rare startup NPE
This commit is contained in:
@@ -52,16 +52,16 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
private PacketHandler _handler;
|
private PacketHandler _handler;
|
||||||
private EstablishmentManager _establisher;
|
private EstablishmentManager _establisher;
|
||||||
private final MessageQueue _outboundMessages;
|
private final MessageQueue _outboundMessages;
|
||||||
private OutboundMessageFragments _fragments;
|
private final OutboundMessageFragments _fragments;
|
||||||
private final OutboundMessageFragments.ActiveThrottle _activeThrottle;
|
private final OutboundMessageFragments.ActiveThrottle _activeThrottle;
|
||||||
private OutboundRefiller _refiller;
|
private OutboundRefiller _refiller;
|
||||||
private PacketPusher _pusher;
|
private PacketPusher _pusher;
|
||||||
private InboundMessageFragments _inboundFragments;
|
private final InboundMessageFragments _inboundFragments;
|
||||||
private UDPFlooder _flooder;
|
private UDPFlooder _flooder;
|
||||||
private PeerTestManager _testManager;
|
private PeerTestManager _testManager;
|
||||||
private final IntroductionManager _introManager;
|
private final IntroductionManager _introManager;
|
||||||
private ExpirePeerEvent _expireEvent;
|
private final ExpirePeerEvent _expireEvent;
|
||||||
private PeerTestEvent _testEvent;
|
private final PeerTestEvent _testEvent;
|
||||||
private short _reachabilityStatus;
|
private short _reachabilityStatus;
|
||||||
private long _reachabilityStatusLastUpdated;
|
private long _reachabilityStatusLastUpdated;
|
||||||
private long _introducersSelectedOn;
|
private long _introducersSelectedOn;
|
||||||
@@ -227,8 +227,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void startup() {
|
public void startup() {
|
||||||
if (_fragments != null)
|
_fragments.shutdown();
|
||||||
_fragments.shutdown();
|
|
||||||
if (_pusher != null)
|
if (_pusher != null)
|
||||||
_pusher.shutdown();
|
_pusher.shutdown();
|
||||||
if (_handler != null)
|
if (_handler != null)
|
||||||
@@ -239,8 +238,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
_establisher.shutdown();
|
_establisher.shutdown();
|
||||||
if (_refiller != null)
|
if (_refiller != null)
|
||||||
_refiller.shutdown();
|
_refiller.shutdown();
|
||||||
if (_inboundFragments != null)
|
_inboundFragments.shutdown();
|
||||||
_inboundFragments.shutdown();
|
|
||||||
if (_flooder != null)
|
if (_flooder != null)
|
||||||
_flooder.shutdown();
|
_flooder.shutdown();
|
||||||
_introManager.reset();
|
_introManager.reset();
|
||||||
@@ -345,14 +343,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
_refiller.shutdown();
|
_refiller.shutdown();
|
||||||
if (_handler != null)
|
if (_handler != null)
|
||||||
_handler.shutdown();
|
_handler.shutdown();
|
||||||
if (_fragments != null)
|
_fragments.shutdown();
|
||||||
_fragments.shutdown();
|
|
||||||
if (_pusher != null)
|
if (_pusher != null)
|
||||||
_pusher.shutdown();
|
_pusher.shutdown();
|
||||||
if (_establisher != null)
|
if (_establisher != null)
|
||||||
_establisher.shutdown();
|
_establisher.shutdown();
|
||||||
if (_inboundFragments != null)
|
_inboundFragments.shutdown();
|
||||||
_inboundFragments.shutdown();
|
|
||||||
_expireEvent.setIsAlive(false);
|
_expireEvent.setIsAlive(false);
|
||||||
_testEvent.setIsAlive(false);
|
_testEvent.setIsAlive(false);
|
||||||
}
|
}
|
||||||
@@ -1116,7 +1112,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
if (msg == null) return;
|
if (msg == null) return;
|
||||||
if (msg.getTarget() == null) return;
|
if (msg.getTarget() == null) return;
|
||||||
if (msg.getTarget().getIdentity() == null) return;
|
if (msg.getTarget().getIdentity() == null) return;
|
||||||
|
if (_establisher == null) {
|
||||||
|
failed(msg, "UDP not up yet");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
msg.timestamp("sending on UDP transport");
|
msg.timestamp("sending on UDP transport");
|
||||||
Hash to = msg.getTarget().getIdentity().calculateHash();
|
Hash to = msg.getTarget().getIdentity().calculateHash();
|
||||||
PeerState peer = getPeerState(to);
|
PeerState peer = getPeerState(to);
|
||||||
@@ -1443,11 +1443,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
|
|||||||
if (_log.shouldLog(Log.INFO))
|
if (_log.shouldLog(Log.INFO))
|
||||||
_log.info("Sending message failed: " + msg, new Exception("failed from"));
|
_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(),
|
_context.messageHistory().sendMessage(msg.getMessageType(), msg.getMessageId(), msg.getExpiration(),
|
||||||
msg.getTarget().getIdentity().calculateHash(), false, reason);
|
msg.getTarget().getIdentity().calculateHash(), false, reason);
|
||||||
super.afterSend(msg, false);
|
super.afterSend(msg, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void succeeded(OutboundMessageState msg) {
|
public void succeeded(OutboundMessageState msg) {
|
||||||
if (msg == null) return;
|
if (msg == null) return;
|
||||||
if (_log.shouldLog(Log.DEBUG))
|
if (_log.shouldLog(Log.DEBUG))
|
||||||
|
Reference in New Issue
Block a user