diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java
index fb899bcbd27e6216a7a803bf133683951ef9a402..bf6059d4393e584a956ae7b2ffc436dd47143aac 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java
@@ -893,11 +893,16 @@ public class TrackerClient implements Runnable {
     } catch (URISyntaxException use) {
         return false;
     }
+    String path = url.getPath();
+    if (path == null || !path.startsWith("/"))
+        return false;
     return "http".equals(url.getScheme()) && url.getHost() != null &&
            (url.getHost().endsWith(".i2p") || url.getHost().equals("i2p"));
   }
 
   /**
+   *  This also validates the URL.
+   *
    *  @param ann an announce URL non-null
    *  @return a Hash for i2p hosts only, null otherwise
    *  @since 0.9.5
@@ -914,8 +919,12 @@ public class TrackerClient implements Runnable {
     String host = url.getHost();
     if (host == null)
         return null;
-    if (host.endsWith(".i2p"))
+    if (host.endsWith(".i2p")) {
+        String path = url.getPath();
+        if (path == null || !path.startsWith("/"))
+            return null;
         return ConvertToHash.getHash(host);
+    }
     if (host.equals("i2p")) {
         String path = url.getPath();
         if (path == null || path.length() < 517 ||
@@ -941,6 +950,10 @@ public class TrackerClient implements Runnable {
       int consecutiveFails;
       int seenPeers;
 
+      /**
+       *  @param a must be a valid http URL with a path
+       *  @param p true if primary
+       */
       public TCTracker(String a, boolean p)
       {
           announce = a;