FELIX-2237: ^C should interrupt the thread
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@927756 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java b/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
index 4f1ca87..a6f392f 100644
--- a/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
+++ b/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
@@ -73,6 +73,7 @@
private InputStream in;
private PrintStream out;
private PrintStream err;
+ private Thread thread;
public Console(CommandProcessor processor,
InputStream in,
@@ -134,6 +135,7 @@
public void run()
{
+ thread = Thread.currentThread();
running = true;
pipe.start();
welcome();
@@ -165,6 +167,7 @@
}
while (running) {
try {
+ checkInterrupt();
String line = reader.readLine(getPrompt());
if (line == null)
{
@@ -280,7 +283,7 @@
}
private void checkInterrupt() throws IOException {
- if (interrupt) {
+ if (Thread.interrupted() || interrupt) {
interrupt = false;
throw new InterruptedIOException("Keyboard interruption");
}
@@ -288,6 +291,7 @@
private void interrupt() {
interrupt = true;
+ thread.interrupt();
}
private class ConsoleInputStream extends InputStream