summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/it_jaros/jns/CliPrinter.java4
-rw-r--r--src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/com/it_jaros/jns/CliPrinter.java b/src/main/java/com/it_jaros/jns/CliPrinter.java
index fa2929d..e3ced2f 100644
--- a/src/main/java/com/it_jaros/jns/CliPrinter.java
+++ b/src/main/java/com/it_jaros/jns/CliPrinter.java
@@ -149,7 +149,9 @@ public class CliPrinter {
public void stop() {
ui.shutdown();
try {
- ui.awaitTermination(1, TimeUnit.SECONDS);
+ if (!ui.awaitTermination(1, TimeUnit.SECONDS)) {
+ ui.shutdownNow();
+ }
} catch (InterruptedException ignored) {
Thread.currentThread().interrupt();
}
diff --git a/src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java b/src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java
index 2dfedf5..252a246 100644
--- a/src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java
+++ b/src/main/java/com/it_jaros/jns/scan/engine/CompletionConsumer.java
@@ -26,7 +26,11 @@ public class CompletionConsumer<T> {
*/
public void runConsumerLoop(Consumer<PollState<T>> consumer) {
while (!cancelledToken.isCancelled() && (state.running().get() || state.inPipeline().get() > 0)) {
- consumer.accept(getPollResult());
+ PollState<T> pollResult = getPollResult();
+ if (Thread.currentThread().isInterrupted()) {
+ break;
+ }
+ consumer.accept(pollResult);
}
}