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 1e7fed417ae2ab4382fa183d347647aa6c0b56f9..967ce0458c61c344424d1da5f9b6a9f6bfc61ffd 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -863,7 +863,14 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (_log.shouldLog(Log.DEBUG)) _log.debug("bidding on a message to an unestablished peer: " + to.toBase64()); - if (alwaysPreferUDP()) + + // Try to maintain at least 3 peers so we can determine our IP address and + // we have a selection to run peer tests with. + int count; + synchronized (_peersByIdent) { + count = _peersByIdent.size(); + } + if (alwaysPreferUDP() || count < 3) return _slowPreferredBid; else if (preferUDP()) return _slowBid;