From d47dcddb9b7913226f1d683ff65f664e99f574f2 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 14 Nov 2010 14:47:43 +0000 Subject: [PATCH] send I2CP DisconnectMessage at router shutdown --- .../router/client/ClientConnectionRunner.java | 23 +++++++++++++++---- .../net/i2p/router/client/ClientManager.java | 2 +- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java index 1c4fb2fd5e..aa930e140c 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 cf7fbf9313..7d866ab0b6 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); } } -- GitLab