From 581b9157486820410e9bee8b16b9b24a8353490c Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 14 Nov 2010 14:53:30 +0000 Subject: [PATCH] Call session.propogateError() on reception of SessionStatusMessage with bad status or DisconnectMessage --- .../net/i2p/client/DisconnectMessageHandler.java | 7 +++++-- .../src/net/i2p/client/I2PSessionListener.java | 2 +- .../i2p/client/SessionStatusMessageHandler.java | 14 ++++++++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/core/java/src/net/i2p/client/DisconnectMessageHandler.java b/core/java/src/net/i2p/client/DisconnectMessageHandler.java index c7b58a19fa..56ad3fa38a 100644 --- a/core/java/src/net/i2p/client/DisconnectMessageHandler.java +++ b/core/java/src/net/i2p/client/DisconnectMessageHandler.java @@ -12,6 +12,7 @@ package net.i2p.client; import net.i2p.I2PAppContext; import net.i2p.data.i2cp.DisconnectMessage; import net.i2p.data.i2cp.I2CPMessage; +import net.i2p.util.Log; /** * Handle I2CP disconnect messages from the router @@ -24,7 +25,9 @@ class DisconnectMessageHandler extends HandlerImpl { } public void handleMessage(I2CPMessage message, I2PSessionImpl session) { - _log.debug("Handle message " + message); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Handle message " + message); + session.propogateError(((DisconnectMessage)message).getReason(), new I2PSessionException("Disconnect Message received")); session.destroySession(false); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/client/I2PSessionListener.java b/core/java/src/net/i2p/client/I2PSessionListener.java index 740ebeeab3..6e01d994f1 100644 --- a/core/java/src/net/i2p/client/I2PSessionListener.java +++ b/core/java/src/net/i2p/client/I2PSessionListener.java @@ -39,7 +39,7 @@ public interface I2PSessionListener { /** * Notify the client that some error occurred - * + * @param null can be null? or not? */ void errorOccurred(I2PSession session, String message, Throwable error); } diff --git a/core/java/src/net/i2p/client/SessionStatusMessageHandler.java b/core/java/src/net/i2p/client/SessionStatusMessageHandler.java index d6f875424e..92bd7db82a 100644 --- a/core/java/src/net/i2p/client/SessionStatusMessageHandler.java +++ b/core/java/src/net/i2p/client/SessionStatusMessageHandler.java @@ -12,6 +12,7 @@ package net.i2p.client; import net.i2p.I2PAppContext; import net.i2p.data.i2cp.I2CPMessage; import net.i2p.data.i2cp.SessionStatusMessage; +import net.i2p.util.Log; /** * Handle I2CP SessionStatusMessagese from the router, updating the session as @@ -25,7 +26,8 @@ class SessionStatusMessageHandler extends HandlerImpl { } public void handleMessage(I2CPMessage message, I2PSessionImpl session) { - _log.debug("Handle message " + message); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Handle message " + message); SessionStatusMessage msg = (SessionStatusMessage) message; session.setSessionId(msg.getSessionId()); switch (msg.getStatus()) { @@ -33,19 +35,23 @@ class SessionStatusMessageHandler extends HandlerImpl { _log.info("Session created successfully"); break; case SessionStatusMessage.STATUS_DESTROYED: - _log.info("Session destroyed"); + _log.warn("Session destroyed"); + session.propogateError("Destroyed", new I2PSessionException("Session Status Message received")); //session.destroySession(); session.reconnect(); // la la la break; case SessionStatusMessage.STATUS_INVALID: + _log.warn("Session invalid"); + session.propogateError("Invalid", new I2PSessionException("Session Status Message received")); session.destroySession(); // ok, honor this destroy message, because we're b0rked break; case SessionStatusMessage.STATUS_UPDATED: _log.info("Session status updated"); break; default: - _log.warn("Unknown session status sent: " + msg.getStatus()); + if (_log.shouldLog(Log.WARN)) + _log.warn("Unknown session status sent: " + msg.getStatus()); } return; } -} \ No newline at end of file +} -- GitLab