summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-22 09:10:27 +0200
committerGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-22 09:10:27 +0200
commitb0ce84cb9ec840d80b3e596961dac4154114584f (patch)
treea1c9c6c67aad25bf93e13a6fd3484aecaf171323
parent30d80956be8ef7b65628cb388b7c9730e5f26f33 (diff)
End scanner immediatetly on cancellation on both the scanner and
ScanHostTask
-rw-r--r--src/main/java/com/it_jaros/jns/scan/Scanner.java2
-rw-r--r--src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/main/java/com/it_jaros/jns/scan/Scanner.java b/src/main/java/com/it_jaros/jns/scan/Scanner.java
index 6608ee7..d9dfe47 100644
--- a/src/main/java/com/it_jaros/jns/scan/Scanner.java
+++ b/src/main/java/com/it_jaros/jns/scan/Scanner.java
@@ -61,7 +61,7 @@ public class Scanner implements AutoCloseable {
* with whatever is there already
*/
private void runConsumerLoop(ProducerState<ScanResult> state, Consumer<ScanResult> consumer) {
- while (state.running().get() || state.inPipeline().get() > 0) {
+ while (!cancelledToken.isCancelled() && (state.running().get() || state.inPipeline().get() > 0)) {
PollState<ScanResult> poll = getPollStateOfScanResult(state);
switch (poll) {
case PollState.Success<ScanResult>(ScanResult value) -> consumer.accept(value);
diff --git a/src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java b/src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java
index 61add13..086a864 100644
--- a/src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java
+++ b/src/main/java/com/it_jaros/jns/scan/engine/ScanHostTask.java
@@ -98,7 +98,7 @@ public class ScanHostTask implements Callable<ScanResult> {
* ONLY exception is when cancelled is set
*/
private void runConsumerLoop(ProducerState<PortResult> state) {
- while (state.running().get() || state.inPipeline().get() > 0) {
+ while (!context.cancelledToken().isCancelled() && (state.running().get() || state.inPipeline().get() > 0)) {
PollState<PortResult> poll = getPortResult(state);
switch (poll) {
case PollState.Success<PortResult>(PortResult value) -> accumulator.add(value);