diff --git a/router/java/src/net/i2p/router/message/BuildTestMessageJob.java b/router/java/src/net/i2p/router/message/BuildTestMessageJob.java
index dc7d911375e2dd342af1101ba0d9579f4b92849a..6b0163865a9b13a255620a4be193ea2b03dde9f7 100644
--- a/router/java/src/net/i2p/router/message/BuildTestMessageJob.java
+++ b/router/java/src/net/i2p/router/message/BuildTestMessageJob.java
@@ -26,6 +26,7 @@ import net.i2p.router.MessageSelector;
 import net.i2p.router.ReplyJob;
 import net.i2p.router.Router;
 import net.i2p.router.RouterContext;
+import net.i2p.router.peermanager.PeerProfile;
 import net.i2p.util.Log;
 
 /**
@@ -69,6 +70,11 @@ public class BuildTestMessageJob extends JobImpl {
     public String getName() { return "Build Test Message"; }
     
     public void runJob() {
+        if (alreadyKnownReachable()) {
+            getContext().jobQueue().addJob(_onSend);
+            return;
+        }
+        
         // This is a test message - build a garlic with a DeliveryStatusMessage that
         // first goes to the peer then back to us.
         if (_log.shouldLog(Log.DEBUG))
@@ -81,6 +87,14 @@ public class BuildTestMessageJob extends JobImpl {
         getContext().jobQueue().addJob(job);
     }
     
+    private boolean alreadyKnownReachable() {
+        PeerProfile profile = getContext().profileOrganizer().getProfile(_target.getIdentity().getHash());
+        if ( (profile == null) || (!profile.getIsActive()) )
+            return false;
+        else
+            return true;
+    }
+    
     private MessageSelector buildMessageSelector() {
         return new TestMessageSelector(_testMessageKey, _timeoutMs + getContext().clock().now());
     }