Return-Path: X-Original-To: apmail-karaf-commits-archive@minotaur.apache.org Delivered-To: apmail-karaf-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0AC2E17B96 for ; Thu, 16 Apr 2015 09:34:31 +0000 (UTC) Received: (qmail 50524 invoked by uid 500); 16 Apr 2015 09:34:24 -0000 Delivered-To: apmail-karaf-commits-archive@karaf.apache.org Received: (qmail 50497 invoked by uid 500); 16 Apr 2015 09:34:24 -0000 Mailing-List: contact commits-help@karaf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@karaf.apache.org Delivered-To: mailing list commits@karaf.apache.org Received: (qmail 50488 invoked by uid 99); 16 Apr 2015 09:34:24 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 16 Apr 2015 09:34:24 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 9B702E103E; Thu, 16 Apr 2015 09:34:24 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: gnodet@apache.org To: commits@karaf.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: karaf git commit: [KARAF-3656] SSH message channel closed too early Date: Thu, 16 Apr 2015 09:34:24 +0000 (UTC) Repository: karaf Updated Branches: refs/heads/karaf-2.x 85e42c589 -> cda2721a2 [KARAF-3656] SSH message channel closed too early Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/cda2721a Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/cda2721a Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/cda2721a Branch: refs/heads/karaf-2.x Commit: cda2721a2306d3ef7373b557b452f12a62cfeb92 Parents: 85e42c5 Author: Guillaume Nodet Authored: Thu Apr 16 11:11:35 2015 +0200 Committer: Guillaume Nodet Committed: Thu Apr 16 11:34:19 2015 +0200 ---------------------------------------------------------------------- .../org/apache/karaf/shell/ssh/ShellCommandFactory.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/cda2721a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java ---------------------------------------------------------------------- diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java index 43d3a49..2f227fc 100644 --- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java +++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java @@ -64,7 +64,7 @@ public class ShellCommandFactory implements CommandFactory { return new ShellCommand(command); } - public class ShellCommand implements Command, SessionAware { + public class ShellCommand implements Command, Runnable, SessionAware { private String command; private InputStream in; @@ -72,6 +72,7 @@ public class ShellCommandFactory implements CommandFactory { private OutputStream err; private ExitCallback callback; private ServerSession session; + private Environment env; public ShellCommand(String command) { this.command = command; @@ -98,6 +99,11 @@ public class ShellCommandFactory implements CommandFactory { } public void start(final Environment env) throws IOException { + this.env = env; + new Thread(this).start(); + } + + public void run() { int exitStatus = 0; final CommandSession commandSession = commandProcessor.createSession(in, new PrintStream(out), new PrintStream(err)); try { @@ -171,7 +177,7 @@ public class ShellCommandFactory implements CommandFactory { } } catch (Exception e) { exitStatus = 1; - throw (IOException) new IOException("Unable to start shell").initCause(e); + LOGGER.error("Unable to start shell", e); } finally { close(in, out, err); commandSession.close();