From c5435410bac5cb1fd0eda1de84063b576d56620b Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 24 Mar 2020 19:14:28 +0000 Subject: [PATCH] atomic --- .../src/net/i2p/client/streaming/impl/MessageHandler.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 1e90ce951f..8829a0bff3 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(); -- GitLab