From f170baab3f97cbbbfeaf15198007b191a8f48416 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 30 Oct 2010 15:30:14 +0000
Subject: [PATCH] - Delay during StopAll so we don't close the tunnel before
 the   stopped announces go out and reopen it - Logging tweaks

---
 apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java       | 3 +++
 apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java      | 2 +-
 .../i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java | 2 ++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
index 3c1cad5356..8edc92fdf3 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
@@ -152,6 +152,9 @@ public class I2PSnarkUtil {
      */
     synchronized public boolean connect() {
         if (_manager == null) {
+            // try to find why reconnecting after stop
+            if (_log.shouldLog(Log.DEBUG))
+                _log.debug("Connecting to I2P", new Exception("I did it"));
             Properties opts = new Properties();
             if (_opts != null) {
                 for (Iterator iter = _opts.keySet().iterator(); iter.hasNext(); ) {
diff --git a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java
index 331bd770ba..e3cc8ae9f0 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/TrackerClient.java
@@ -268,7 +268,7 @@ public class TrackerClient extends I2PAppThread
                         List ordered = new ArrayList(peers);
                         Collections.shuffle(ordered, r);
                         Iterator it = ordered.iterator();
-                        while (it.hasNext()) {
+                        while ((!stop) && it.hasNext()) {
                           Peer cur = (Peer)it.next();
                           // FIXME if id == us || dest == us continue;
                           // only delay if we actually make an attempt to add peer
diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index 8a2f9a269b..e284cc1721 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -530,6 +530,8 @@ public class I2PSnarkServlet extends Default {
                     _manager.stopTorrent(snark.torrent, false);
             }
             if (_manager.util().connected()) {
+                // Give the stopped announces time to get out
+                try { Thread.sleep(2000); } catch (InterruptedException ie) {}
                 _manager.util().disconnect();
                 _manager.addMessage(_("I2P tunnel closed."));
             }
-- 
GitLab