From a877ec1448174a512c001556ad59709002060e3a Mon Sep 17 00:00:00 2001 From: Shikhar Bhushan Date: Wed, 6 Jun 2012 22:55:35 +0100 Subject: [PATCH] AbstractChannel#close() should be no-op if already closed. Fixes #53. --- .../sshj/connection/channel/AbstractChannel.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java index 09209950..92a43332 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java @@ -258,13 +258,15 @@ public abstract class AbstractChannel throws ConnectionException, TransportException { openCloseLock.lock(); try { - try { - sendClose(); - } catch (TransportException e) { - if (!closeEvent.inError()) - throw e; + if (isOpen()) { + try { + sendClose(); + } catch (TransportException e) { + if (!closeEvent.inError()) + throw e; + } + closeEvent.await(conn.getTimeout(), TimeUnit.SECONDS); } - closeEvent.await(conn.getTimeout(), TimeUnit.SECONDS); } finally { openCloseLock.unlock(); }