diff options
| author | 2026-08-23 15:39:42 +0200 | |
|---|---|---|
| committer | 2026-08-23 15:39:42 +0200 | |
| commit | 1486609f8f67ca1103989302fd60e4741458b152 (patch) | |
| tree | 369e5fa42da57cf54dec7152442c563111a43130 /src/main | |
| parent | 958fe8c0cd886726c641e7b3af96769f7cdb6a7f (diff) | |
Added helper to filter out Rejected and Interrupt exceptions
Diffstat (limited to 'src/main')
3 files changed, 18 insertions, 3 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 82707d6..9e84c80 100644 --- a/src/main/java/com/it_jaros/jns/scan/Scanner.java +++ b/src/main/java/com/it_jaros/jns/scan/Scanner.java @@ -71,16 +71,32 @@ public class Scanner implements AutoCloseable { } if (error instanceof ScanHostException e) { - if (e.getCause() instanceof RejectedExecutionException) { + if (isCauseChainInstanceOf(e, RejectedExecutionException.class, InterruptedException.class)) { // see comment above return Optional.empty(); } + return Optional.of(ScanResult.from(e)); } return Optional.of(ScanResult.from(error)); } + private boolean isCauseChainInstanceOf(Throwable e, Class<?> ...classesToCheckFor) { + Throwable causeToCheckFor = e.getCause(); + if (causeToCheckFor == null) { + return false; + } + + for (Class<?> clazz : classesToCheckFor) { + if (clazz.isInstance(causeToCheckFor)) { + return true; + } + } + + return isCauseChainInstanceOf(causeToCheckFor, classesToCheckFor); + } + public boolean awaitTermination(Duration duration) throws InterruptedException { return executor.awaitTermination(duration.toMillis(), TimeUnit.MILLISECONDS); } diff --git a/src/main/java/com/it_jaros/jns/scan/engine/ScanPortException.java b/src/main/java/com/it_jaros/jns/scan/engine/ScanPortException.java index 5c5389f..446bce7 100644 --- a/src/main/java/com/it_jaros/jns/scan/engine/ScanPortException.java +++ b/src/main/java/com/it_jaros/jns/scan/engine/ScanPortException.java @@ -1,6 +1,6 @@ package com.it_jaros.jns.scan.engine; -public class ScanPortException extends RuntimeException { +public class ScanPortException extends Exception { public ScanPortException(int port, Exception e) { super(String.valueOf(port), e); } 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 64d3298..926bffc 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 @@ -57,7 +57,6 @@ public class ScanPortTask implements Callable<PortResult> { socketLimit.release(); } } catch (Exception e) { - // think about how to handle that throw new ScanPortException(port, e); } } |
