diff options
| author | 2026-08-02 17:18:57 +0200 | |
|---|---|---|
| committer | 2026-08-02 17:18:57 +0200 | |
| commit | eefe4c73484d39ffd0856ed446df1a76e5f69e0c (patch) | |
| tree | 3e24db210b34a47ea6a6037b998951d7f5a3ca35 /src/main/java | |
| parent | 261839fb33c937633ba39c47611cfa11a41f0c7b (diff) | |
Fixed Scanner hanging long on strg+c
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/Scan.java | 1 | ||||
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/Scanner.java | 8 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/Scan.java b/src/main/java/com/it_jaros/jscanner/Scan.java index d276fd2..d58e8d0 100644 --- a/src/main/java/com/it_jaros/jscanner/Scan.java +++ b/src/main/java/com/it_jaros/jscanner/Scan.java @@ -8,6 +8,7 @@ import java.nio.file.Path; import java.util.List; import java.util.stream.Stream; +// todo object/data asymmetry /** * Object holder for stateful volatile data during scan */ diff --git a/src/main/java/com/it_jaros/jscanner/Scanner.java b/src/main/java/com/it_jaros/jscanner/Scanner.java index 337f5ed..b35161f 100644 --- a/src/main/java/com/it_jaros/jscanner/Scanner.java +++ b/src/main/java/com/it_jaros/jscanner/Scanner.java @@ -316,6 +316,9 @@ public class Scanner implements AutoCloseable { return; } synchronized (lock) { + if (cancelled) { + return; + } long now = System.nanoTime(); if (nextAllowedTime > now) { Thread.sleep(Duration.ofNanos(nextAllowedTime - now)); @@ -343,9 +346,9 @@ public class Scanner implements AutoCloseable { public PortResult call() throws Exception { try { scan.getThreadCounter().inc(); - portScanRateLimiter.apply(); // per-host serial pacing + portScanRateLimiter.apply(); if (cancelled) { - return null; + return new PortResult(); } return checkPort(); } finally { @@ -361,7 +364,6 @@ public class Scanner implements AutoCloseable { // don't allow more sockets then specified socketLimit.acquire(); // count how many ports are concurrently checked - // todo object/data asymmetry scan.getSocketCounter().inc(); try (Socket socket = new Socket()) { socket.connect(new InetSocketAddress(host, port), timeoutInMillis); |
