Repository: mina-sshd Updated Branches: refs/heads/master e767438ae -> 8cf57bc08
[SSHD-720] Run UnknownCommand in separate thread Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/8cf57bc0 Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/8cf57bc0 Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/8cf57bc0 Branch: refs/heads/master Commit: 8cf57bc083b4b1a49abbfd603c937b5a20b94680 Parents: e767438 Author: Lyor Goldstein <lyor.goldst...@gmail.com> Authored: Tue Nov 29 19:45:52 2016 +0200 Committer: Lyor Goldstein <lyor.goldst...@gmail.com> Committed: Fri Dec 2 05:48:02 2016 +0200 ---------------------------------------------------------------------- .../apache/sshd/server/scp/UnknownCommand.java | 25 ++++++++++++++------ .../apache/sshd/git/pack/GitPackCommand.java | 2 +- .../org/apache/sshd/git/pgm/GitPgmCommand.java | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/8cf57bc0/sshd-core/src/main/java/org/apache/sshd/server/scp/UnknownCommand.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/server/scp/UnknownCommand.java b/sshd-core/src/main/java/org/apache/sshd/server/scp/UnknownCommand.java index 416203d..d847291 100644 --- a/sshd-core/src/main/java/org/apache/sshd/server/scp/UnknownCommand.java +++ b/sshd-core/src/main/java/org/apache/sshd/server/scp/UnknownCommand.java @@ -36,7 +36,7 @@ import org.apache.sshd.server.ExitCallback; * * @author <a href="mailto:d...@mina.apache.org">Apache MINA SSHD Project</a> */ -public class UnknownCommand implements Command { +public class UnknownCommand implements Command, Runnable { private final String command; private final String message; @@ -81,21 +81,32 @@ public class UnknownCommand implements Command { } @Override - public void start(Environment env) throws IOException { - Objects.requireNonNull(err, "No error stream"); + public void run() { String errorMessage = getMessage(); try { - err.write(errorMessage.getBytes(StandardCharsets.UTF_8)); - err.write('\n'); - } finally { - err.flush(); + try { + err.write(errorMessage.getBytes(StandardCharsets.UTF_8)); + err.write('\n'); + } finally { + err.flush(); + } + } catch (IOException e) { + // ignored } + if (callback != null) { callback.onExit(1, errorMessage); } } @Override + public void start(Environment env) throws IOException { + Thread thread = new Thread(this); + thread.setDaemon(true); + thread.start(); + } + + @Override public void destroy() { // ignored } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/8cf57bc0/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java ---------------------------------------------------------------------- diff --git a/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java b/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java index 3b92cc2..3bd202b 100644 --- a/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java +++ b/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java @@ -87,7 +87,7 @@ public class GitPackCommand implements Command, Runnable { @Override public void start(Environment env) throws IOException { - Thread thread = new Thread(this); + Thread thread = new Thread(this); thread.setDaemon(true); thread.start(); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/8cf57bc0/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java ---------------------------------------------------------------------- diff --git a/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java b/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java index 225a9d6..ae6ff7c 100644 --- a/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java +++ b/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java @@ -82,7 +82,7 @@ public class GitPgmCommand implements Command, Runnable { @Override public void start(Environment env) throws IOException { - Thread thread = new Thread(this); + Thread thread = new Thread(this); thread.setDaemon(true); thread.start(); }