From 2880fe2bc0bdaf11b28dddad541041218030694d Mon Sep 17 00:00:00 2001 From: Shikhar Bhushan Date: Mon, 14 Mar 2011 20:36:49 +0000 Subject: [PATCH] Some more cleanups for handling disconnects --- .../net/schmizz/sshj/AbstractService.java | 8 +----- src/main/java/net/schmizz/sshj/Service.java | 4 --- .../sshj/connection/ConnectionImpl.java | 27 ++++++------------- .../schmizz/sshj/transport/TransportImpl.java | 6 +---- 4 files changed, 10 insertions(+), 35 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/AbstractService.java b/src/main/java/net/schmizz/sshj/AbstractService.java index 9bdad59d..268240d6 100644 --- a/src/main/java/net/schmizz/sshj/AbstractService.java +++ b/src/main/java/net/schmizz/sshj/AbstractService.java @@ -57,7 +57,7 @@ public abstract class AbstractService @Override public void notifyError(SSHException error) { - log.debug("Was notified of {}", error.toString()); + log.debug("Notified of {}", error.toString()); } @Override @@ -66,12 +66,6 @@ public abstract class AbstractService throw new SSHException(DisconnectReason.PROTOCOL_ERROR, "Unexpected: SSH_MSG_UNIMPLEMENTED"); } - @Override - public void notifyDisconnect(DisconnectReason reason) - throws SSHException { - log.debug("Was notified of disconnect"); - } - @Override public void request() throws TransportException { diff --git a/src/main/java/net/schmizz/sshj/Service.java b/src/main/java/net/schmizz/sshj/Service.java index f9ee6b47..63610422 100644 --- a/src/main/java/net/schmizz/sshj/Service.java +++ b/src/main/java/net/schmizz/sshj/Service.java @@ -15,7 +15,6 @@ */ package net.schmizz.sshj; -import net.schmizz.sshj.common.DisconnectReason; import net.schmizz.sshj.common.ErrorNotifiable; import net.schmizz.sshj.common.SSHException; import net.schmizz.sshj.common.SSHPacketHandler; @@ -49,7 +48,4 @@ public interface Service void request() throws TransportException; - void notifyDisconnect(DisconnectReason reason) - throws SSHException; - } \ No newline at end of file diff --git a/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java b/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java index 23bfb4f5..d1ab25f1 100644 --- a/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java +++ b/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java @@ -140,19 +140,6 @@ public class ConnectionImpl super.handle(msg, buf); } - @Override - public void notifyError(SSHException error) { - super.notifyError(error); - - synchronized (globalReqFutures) { - FutureUtils.alertAll(error, globalReqFutures); - globalReqFutures.clear(); - } - - ErrorNotifiable.Util.alertAll(error, channels.values()); - channels.clear(); - } - @Override public int getMaxPacketSize() { return maxPacketSize; @@ -246,12 +233,14 @@ public class ConnectionImpl } @Override - public void notifyDisconnect(DisconnectReason reason) - throws SSHException { - super.notifyDisconnect(reason); - final ConnectionException ex = new ConnectionException("Disconnected"); - FutureUtils.alertAll(ex, globalReqFutures); - ErrorNotifiable.Util.alertAll(ex, new HashSet(channels.values())); + public void notifyError(SSHException error) { + super.notifyError(error); + synchronized (globalReqFutures) { + FutureUtils.alertAll(error, globalReqFutures); + globalReqFutures.clear(); + } + ErrorNotifiable.Util.alertAll(error, channels.values()); + channels.clear(); } } \ No newline at end of file diff --git a/src/main/java/net/schmizz/sshj/transport/TransportImpl.java b/src/main/java/net/schmizz/sshj/transport/TransportImpl.java index fbcca625..ee232956 100644 --- a/src/main/java/net/schmizz/sshj/transport/TransportImpl.java +++ b/src/main/java/net/schmizz/sshj/transport/TransportImpl.java @@ -380,11 +380,7 @@ public final class TransportImpl close.lock(); try { disconnectListener.notifyDisconnect(reason); - try { - service.notifyDisconnect(reason); - } catch (SSHException logged) { - log.warn("{} did not handle disconnect cleanly: {}", service, logged); - } + getService().notifyError(new TransportException(reason, "Disconnected")); if (!close.isSet()) { sendDisconnect(reason, message); finishOff();