diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/InternalSocketRunner.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/InternalSocketRunner.java
index edb1434fe27efa3b83a373e1645ebeeff74f22dd..a3f2f1717be0e27a4cfca72dabfe2ccfe011aa22 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/InternalSocketRunner.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/InternalSocketRunner.java
@@ -15,11 +15,10 @@ import net.i2p.util.Log;
  * @since 0.7.9
  */
 class InternalSocketRunner implements Runnable {
-    private I2PTunnelClientBase client;
-    private int port;
+    private final I2PTunnelClientBase client;
+    private final int port;
     private ServerSocket ss;
-    private boolean open;
-    private static final Log _log = new Log(InternalSocketRunner.class);
+    private volatile boolean open;
 
     /** starts the runner */
     InternalSocketRunner(I2PTunnelClientBase client) {
@@ -33,13 +32,14 @@ class InternalSocketRunner implements Runnable {
         try {
             this.ss = new InternalServerSocket(this.port);
             this.open = true;
-            while (true) {
+            while (this.open) {
                 Socket s = this.ss.accept();
                 this.client.manageConnection(s);
             }
         } catch (IOException ex) {
             if (this.open) {
-                _log.error("Error listening for internal connections on port " + this.port, ex);
+                Log log = new Log(InternalSocketRunner.class);
+                log.error("Error listening for internal connections on port " + this.port, ex);
             }
             this.open = false;
         }
@@ -47,10 +47,10 @@ class InternalSocketRunner implements Runnable {
 
     void stopRunning() {
         if (this.open) {
+            this.open = false;
             try {
                 this.ss.close();
             } catch (IOException ex) {}
-            this.open = false;
         }
     }
 }