Skip to content

Commit

Permalink
Fix conveying signals through SSH
Browse files Browse the repository at this point in the history
  • Loading branch information
gnodet committed Mar 24, 2017
1 parent 338d756 commit 2c13944
Showing 1 changed file with 29 additions and 2 deletions.
31 changes: 29 additions & 2 deletions remote-ssh/src/main/java/org/jline/builtins/ssh/Ssh.java
Original file line number Diff line number Diff line change
Expand Up @@ -220,18 +220,45 @@ public void ssh(Terminal terminal,
channel.setOut(new NoCloseOutputStream(stdout));
channel.setErr(new NoCloseOutputStream(stderr));
channel.open().verify();
Terminal.SignalHandler prevHandler = terminal.handle(Terminal.Signal.WINCH, signal -> {
Terminal.SignalHandler prevWinchHandler = terminal.handle(Terminal.Signal.WINCH, signal -> {
try {
Size size = terminal.getSize();
channel.sendWindowChange(size.getColumns(), size.getRows());
} catch (IOException e) {
// Ignore
}
});
Terminal.SignalHandler prevQuitHandler = terminal.handle(Terminal.Signal.QUIT, signal -> {
try {
channel.getInvertedIn().write(attributes.getControlChar(Attributes.ControlChar.VQUIT));
channel.getInvertedIn().flush();
} catch (IOException e) {
// Ignore
}
});
Terminal.SignalHandler prevIntHandler = terminal.handle(Terminal.Signal.INT, signal -> {
try {
channel.getInvertedIn().write(attributes.getControlChar(Attributes.ControlChar.VINTR));
channel.getInvertedIn().flush();
} catch (IOException e) {
// Ignore
}
});
Terminal.SignalHandler prevStopHandler = terminal.handle(Terminal.Signal.TSTP, signal -> {
try {
channel.getInvertedIn().write(attributes.getControlChar(Attributes.ControlChar.VDSUSP));
channel.getInvertedIn().flush();
} catch (IOException e) {
// Ignore
}
});
try {
channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED), 0);
} finally {
terminal.handle(Terminal.Signal.WINCH, prevHandler);
terminal.handle(Terminal.Signal.WINCH, prevWinchHandler);
terminal.handle(Terminal.Signal.INT, prevIntHandler);
terminal.handle(Terminal.Signal.TSTP, prevStopHandler);
terminal.handle(Terminal.Signal.QUIT, prevQuitHandler);
}
} finally {
terminal.setAttributes(attributes);
Expand Down

0 comments on commit 2c13944

Please sign in to comment.