diff --git a/router/java/src/net/i2p/router/client/LookupDestJob.java b/router/java/src/net/i2p/router/client/LookupDestJob.java
index 68edbcaa06f5a7a85e269121d265f522b1bf62fe..7db546e91a11489fbe951781eb9c9e8451d36a4f 100644
--- a/router/java/src/net/i2p/router/client/LookupDestJob.java
+++ b/router/java/src/net/i2p/router/client/LookupDestJob.java
@@ -28,7 +28,8 @@ class LookupDestJob extends JobImpl {
     public String getName() { return "LeaseSet Lookup for Client"; }
     public void runJob() {
         DoneJob done = new DoneJob(getContext());
-        getContext().netDb().lookupLeaseSet(_hash, done, done, 10*1000);
+        // TODO add support for specifying the timeout in the lookup message
+        getContext().netDb().lookupLeaseSet(_hash, done, done, 15*1000);
     }
 
     private class DoneJob extends JobImpl {
@@ -41,7 +42,7 @@ class LookupDestJob extends JobImpl {
             if (ls != null)
                 returnDest(ls.getDestination());
             else
-                returnDest(null);
+                returnHash(_hash);
         }
     }
 
@@ -51,4 +52,15 @@ class LookupDestJob extends JobImpl {
             _runner.doSend(msg);
         } catch (I2CPMessageException ime) {}
     }
+
+    /**
+     *  Return the failed hash so the client can correlate replies with requests
+     *  @since 0.8.3
+     */
+    private void returnHash(Hash h) {
+        DestReplyMessage msg = new DestReplyMessage(h);
+        try {
+            _runner.doSend(msg);
+        } catch (I2CPMessageException ime) {}
+    }
 }