diff --git a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java
index 6b454dd5c1aea1934dc0bf204bba64c38ff9bc7d..48a5e082256ffafdf0cec0505b33b5660116a549 100644
--- a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java
+++ b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java
@@ -584,6 +584,13 @@ class PeerTestManager {
                         _log.warn("Too many active tests, droppping from Alice " + Addresses.toString(fromIP, fromPort));
                     return;
                 }
+                if (_transport.getPeerState(from) == null) {
+                    // Require an existing session to start a test,
+                    // as a way of preventing trouble
+                    if (_log.shouldLog(Log.WARN))
+                        _log.warn("No session, dropping new test from Alice " + Addresses.toString(fromIP, fromPort));
+                    return;
+                }
                 if (_log.shouldLog(Log.DEBUG))
                     _log.debug("test IP/port are blank coming from " + from + ", assuming we are Bob and they are alice");
                 receiveFromAliceAsBob(from, testInfo, nonce, null);