diff options
| author | 2026-08-22 08:35:51 +0200 | |
|---|---|---|
| committer | 2026-08-22 08:35:51 +0200 | |
| commit | 09bf47cf701a5a5190c5f4724457c65de300160b (patch) | |
| tree | c170ae9a2cbe70e5a1769b176bd3410de35feb5b /src/main | |
| parent | 3ed7236834fcca049c7723f1401aa5dfa59ec285 (diff) | |
Do not allocate byte array in case there is no data
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java b/src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java index e9244c2..dc5851e 100644 --- a/src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java +++ b/src/main/java/com/it_jaros/jns/scan/engine/ScanPortTask.java @@ -11,6 +11,7 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; +import java.util.Optional; import java.util.concurrent.Callable; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; @@ -64,7 +65,7 @@ public class ScanPortTask implements Callable<PortResult> { PortState state = getPortState(socketChannel); result.setState(state); if (PortState.OPEN.equals(state) && bannerRecognition) { - result.setBanner(getBanner(socketChannel)); + getBanner(socketChannel).ifPresent(result::setBanner); } } catch (ConnectException ignored) { result.setState(PortState.CLOSED); @@ -101,14 +102,14 @@ public class ScanPortTask implements Callable<PortResult> { return PortState.FILTERED; } - private byte[] getBanner(SocketChannel socketChannel) { + private Optional<byte[]> getBanner(SocketChannel socketChannel) { try { - return tryReadFrom(socketChannel); + return Optional.of(tryReadFrom(socketChannel)); } catch (IOException ignore) { // ignore } - return new byte[0]; + return Optional.empty(); } private byte[] tryReadFrom(SocketChannel socketChannel) throws IOException { |
