From 394903a8f07ddfef4875948bea60d39dea834d38 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 29 Mar 2010 21:14:35 +0000 Subject: [PATCH] - Implement destroy() in i2psnark to prevent dups --- .../java/src/org/klomp/snark/SnarkManager.java | 15 ++++++++++++--- .../src/org/klomp/snark/web/I2PSnarkServlet.java | 6 ++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index c909a112f0..d0d9a3bd84 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -40,6 +40,8 @@ public class SnarkManager implements Snark.CompleteListener { private I2PSnarkUtil _util; private PeerCoordinatorSet _peerCoordinatorSet; private ConnectionAcceptor _connectionAcceptor; + private Thread _monitor; + private boolean _running; public static final String PROP_I2CP_HOST = "i2psnark.i2cpHost"; public static final String PROP_I2CP_PORT = "i2psnark.i2cpPort"; @@ -78,15 +80,22 @@ public class SnarkManager implements Snark.CompleteListener { * for i2cp host/port or i2psnark.dir */ public void start() { + _running = true; _peerCoordinatorSet = new PeerCoordinatorSet(); _connectionAcceptor = new ConnectionAcceptor(_util); int minutes = getStartupDelayMinutes(); _messages.add(_("Adding torrents in {0} minutes", minutes)); - I2PAppThread monitor = new I2PAppThread(new DirMonitor(), "Snark DirMonitor"); - monitor.setDaemon(true); - monitor.start(); + _monitor = new I2PAppThread(new DirMonitor(), "Snark DirMonitor", true); + _monitor.start(); _context.addShutdownTask(new SnarkManagerShutdown()); } + + public void stop() { + _running = false; + _monitor.interrupt(); + _connectionAcceptor.halt(); + (new SnarkManagerShutdown()).run(); + } /** hook to I2PSnarkUtil for the servlet */ public I2PSnarkUtil util() { return _util; } 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 013d70a94c..2a11305131 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -59,6 +59,12 @@ public class I2PSnarkServlet extends HttpServlet { _manager.start(); } + @Override + public void destroy() { + _manager.stop(); + super.destroy(); + } + @Override public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); -- GitLab