diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java index 1c4fb2fd5e50a2da8488cbae50aba4335a0d58b1..aa930e140c773e02da725480528af73c0d693a79 100644 --- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java @@ -237,17 +237,32 @@ public class ClientConnectionRunner { _context.jobQueue().addJob(state.getOnGranted()); } + /** + * Send a DisconnectMessage and log with level Log.CRIT. + * This is always bad. + * See ClientMessageEventListener.handleCreateSession() + * for why we don't send a SessionStatusMessage when we do this. + */ void disconnectClient(String reason) { - if (_log.shouldLog(Log.CRIT)) - _log.log(Log.CRIT, "Disconnecting the client (" + disconnectClient(reason, Log.CRIT); + } + + /** + * @param logLevel e.g. Log.WARN + * @since 0.8.2 + */ + void disconnectClient(String reason, int logLevel) { + if (_log.shouldLog(logLevel)) + _log.log(logLevel, "Disconnecting the client (" + _config - + ": " + reason); + + ") : " + reason); DisconnectMessage msg = new DisconnectMessage(); msg.setReason(reason); try { doSend(msg); } catch (I2CPMessageException ime) { - _log.error("Error writing out the disconnect message: " + ime); + if (_log.shouldLog(Log.WARN)) + _log.warn("Error writing out the disconnect message: " + ime); } stopRunning(); } diff --git a/router/java/src/net/i2p/router/client/ClientManager.java b/router/java/src/net/i2p/router/client/ClientManager.java index cf7fbf931336de1a08b5a91847043a19ed45b177..7d866ab0b650e961ecd763be04d41434721291b4 100644 --- a/router/java/src/net/i2p/router/client/ClientManager.java +++ b/router/java/src/net/i2p/router/client/ClientManager.java @@ -113,7 +113,7 @@ public class ClientManager { } for (Iterator<ClientConnectionRunner> iter = runners.iterator(); iter.hasNext(); ) { ClientConnectionRunner runner = iter.next(); - runner.stopRunning(); + runner.disconnectClient("Router shutdown", Log.WARN); } }