summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/it_jaros/jscanner/Scan.java1
-rw-r--r--src/main/java/com/it_jaros/jscanner/Scanner.java8
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);