diff --git a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java index 3f9e5acfc4535ab29512d41be748203101fec86c..89c12250c4e4a5d39a517425ba943c8916546f7c 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java @@ -31,7 +31,7 @@ import net.i2p.util.Log; public class EventPumper implements Runnable { private RouterContext _context; private Log _log; - private boolean _alive; + private volatile boolean _alive; private Selector _selector; private final List _bufCache; private final List _wantsRead = new ArrayList(16); @@ -64,7 +64,7 @@ public class EventPumper implements Runnable { _expireIdleWriteTime = MAX_EXPIRE_IDLE_TIME; } - public void startPumping() { + public synchronized void startPumping() { if (_log.shouldLog(Log.INFO)) _log.info("Starting pumper"); // _wantsRead = new ArrayList(16); @@ -83,7 +83,7 @@ public class EventPumper implements Runnable { } } - public void stopPumping() { + public synchronized void stopPumping() { _alive = false; if (_selector != null && _selector.isOpen()) _selector.wakeup(); diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java index 9f6b8e7ca4c10195d1bf607cd638b57fbf1d8362..84cd7673212bbc6395618cadb7479e7160cd35c4 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -416,7 +416,7 @@ public class NTCPTransport extends TransportImpl { private static final int NUM_CONCURRENT_READERS = 3; private static final int NUM_CONCURRENT_WRITERS = 3; - public RouterAddress startListening() { + public synchronized RouterAddress startListening() { if (_log.shouldLog(Log.DEBUG)) _log.debug("Starting ntcp transport listening"); _finisher.start(); _pumper.startPumping(); @@ -428,7 +428,7 @@ public class NTCPTransport extends TransportImpl { return bindAddress(); } - public RouterAddress restartListening(RouterAddress addr) { + public synchronized RouterAddress restartListening(RouterAddress addr) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Restarting ntcp transport listening"); _finisher.start(); _pumper.startPumping(); @@ -602,7 +602,7 @@ public class NTCPTransport extends TransportImpl { * This doesn't (completely) block, caller should check isAlive() * before calling startListening() or restartListening() */ - public void stopListening() { + public synchronized void stopListening() { if (_log.shouldLog(Log.DEBUG)) _log.debug("Stopping ntcp transport"); _pumper.stopPumping(); _writer.stopWriting();