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;