diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageHandler.java
index 1e90ce951f7dd2c06661a867123d6eb130014589..8829a0bff37c71cb2fbe7f4e2513f3d66be8c2ad 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageHandler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageHandler.java
@@ -2,6 +2,7 @@ package net.i2p.client.streaming.impl;
 
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import net.i2p.I2PAppContext;
 import net.i2p.client.I2PSession;
@@ -22,7 +23,7 @@ class MessageHandler implements I2PSessionMuxedListener {
     private final I2PAppContext _context;
     private final Log _log;
     private final Set<I2PSocketManager.DisconnectListener> _listeners;
-    private boolean _restartPending;
+    private final AtomicBoolean _restartPending = new AtomicBoolean();
     
     public MessageHandler(I2PAppContext ctx, ConnectionManager mgr) {
         _manager = mgr;
@@ -109,9 +110,8 @@ class MessageHandler implements I2PSessionMuxedListener {
             _log.warn("I2PSession disconnected");
         _manager.disconnectAllHard();
         // kill anybody waiting in accept()
-        if (_restartPending) {
+        if (_restartPending.compareAndSet(true, false)) {
             _manager.getConnectionHandler().setRestartPending();
-            _restartPending = false;
         } else {
             _manager.getConnectionHandler().setActive(false);
         }
@@ -130,7 +130,7 @@ class MessageHandler implements I2PSessionMuxedListener {
      * @param error the actual error
      */
     public void errorOccurred(I2PSession session, String message, Throwable error) {
-        _restartPending = message.contains("restart");
+        _restartPending.set(message.contains("restart"));
         if (_log.shouldLog(Log.WARN))
             _log.warn("error occurred: " + message, error); 
         //_manager.disconnectAllHard();