summaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-07 12:11:47 +0200
committerGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-07 12:15:18 +0200
commitd9d3fb576ecc6d25d7b8a79fd79156b84f74ff90 (patch)
tree10faf1a3f27cba16127d3c7839dc71ba1d1ac91e /src/main/java/com
parent97d4fded3bba629fe9597c58db2fbd7f995edc99 (diff)
Moved socketLimit before portRateLimiter because otherwise burst can
happen if sockets reach limit and too many threads accumulate after portRateLimiter
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/it_jaros/jscanner/Scan.java10
-rw-r--r--src/main/java/com/it_jaros/jscanner/Scanner.java9
2 files changed, 4 insertions, 15 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/Scan.java b/src/main/java/com/it_jaros/jscanner/Scan.java
index 6800c5a..3db803f 100644
--- a/src/main/java/com/it_jaros/jscanner/Scan.java
+++ b/src/main/java/com/it_jaros/jscanner/Scan.java
@@ -111,11 +111,13 @@ public class Scan {
public void portStart() {
this.portCounter.inc();
this.threadCounter.inc();
+ this.socketCounter.inc();
}
public void portFinish() {
this.portCounter.dec();
this.threadCounter.dec();
+ this.socketCounter.dec();
}
public void hostStart() {
@@ -128,14 +130,6 @@ public class Scan {
this.hostCounter.dec();
}
- public void socketStart() {
- this.socketCounter.inc();
- }
-
- public void socketFinish() {
- this.socketCounter.dec();
- }
-
public void producerStart() {
this.threadCounter.inc();
}
diff --git a/src/main/java/com/it_jaros/jscanner/Scanner.java b/src/main/java/com/it_jaros/jscanner/Scanner.java
index 659b62b..95f0507 100644
--- a/src/main/java/com/it_jaros/jscanner/Scanner.java
+++ b/src/main/java/com/it_jaros/jscanner/Scanner.java
@@ -337,6 +337,7 @@ public class Scanner implements AutoCloseable {
@Override
public PortResult call() throws Exception {
try {
+ socketLimit.acquire();
scan.portStart();
portScanRateLimiter.apply();
if (cancelled) {
@@ -345,6 +346,7 @@ public class Scanner implements AutoCloseable {
return checkPort();
} finally {
scan.portFinish();
+ socketLimit.release();
}
}
@@ -352,9 +354,6 @@ public class Scanner implements AutoCloseable {
PortResult result = new PortResult();
result.setPort(port);
result.setState(PortState.UNKNOWN);
-
- socketLimit.acquire();
- scan.socketStart();
try(SocketChannel socketChannel = SocketChannel.open()) {
socketChannel.configureBlocking(false);
socketChannel.connect(new InetSocketAddress(host, port));
@@ -391,9 +390,6 @@ public class Scanner implements AutoCloseable {
// Will happen a lot when scanning for open ports, so not needed
} catch (IOException e) {
result.setException(e);
- } finally {
- scan.socketFinish();
- socketLimit.release();
}
return result;
@@ -402,7 +398,6 @@ public class Scanner implements AutoCloseable {
private String getBanner(Socket socket) {
byte[] buffer = new byte[READ_BUFFER_SIZE];
try (InputStream input = socket.getInputStream()) {
- socket.setSoTimeout(timeoutInMillis);
int bytesRead = input.read(buffer);
if (bytesRead <= 0) {
return null;