summaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/it_jaros/jns/scan/engine/ScanUdpPortTask.java27
-rw-r--r--src/main/java/com/it_jaros/jns/scan/engine/platform/linux/LinuxUdpSocketAPI.java1
2 files changed, 11 insertions, 17 deletions
diff --git a/src/main/java/com/it_jaros/jns/scan/engine/ScanUdpPortTask.java b/src/main/java/com/it_jaros/jns/scan/engine/ScanUdpPortTask.java
index 441fd08..828b61e 100644
--- a/src/main/java/com/it_jaros/jns/scan/engine/ScanUdpPortTask.java
+++ b/src/main/java/com/it_jaros/jns/scan/engine/ScanUdpPortTask.java
@@ -83,7 +83,6 @@ public class ScanUdpPortTask implements Callable<PortResult> {
linuxUdpSocketAPI.setNonBlocking(fd);
linuxUdpSocketAPI.connect(fd, destination);
linuxUdpSocketAPI.sendEmptyDatagram(fd);
-
MemorySegment recvBuffer = arena.allocate(RECV_BUFFER_SIZE);
return recvUntilDeadline(linuxUdpSocketAPI, fd, recvBuffer);
} finally {
@@ -106,26 +105,22 @@ public class ScanUdpPortTask implements Callable<PortResult> {
break;
}
- long bytesRead;
try {
- bytesRead = socketAPI.recv(fd, buffer);
- } catch (RawLinuxSocketException e) {
- final int errno = e.errno;
- if (errno == LinuxUdpSocketAPI.ECONNREFUSED) {
- return PortState.CLOSED;
+ long bytesRead = socketAPI.recv(fd, buffer);
+ if (bytesRead >= 0) {
+ return PortState.OPEN;
}
- if (errno == LinuxUdpSocketAPI.EAGAIN || errno == LinuxUdpSocketAPI.EWOULDBLOCK) {
- // no datagram has arrived yet; keep polling
- bytesRead = -1;
- } else {
- throw new IOException("recv() failed: errno=" + errno);
+ } catch (RawLinuxSocketException e) {
+ switch(e.errno) {
+ case LinuxUdpSocketAPI.ECONNREFUSED:
+ return PortState.CLOSED;
+ case LinuxUdpSocketAPI.EAGAIN:
+ break;
+ default:
+ throw new IOException("recv() failed: errno=" + e.errno);
}
}
- if (bytesRead >= 0) {
- return PortState.OPEN;
- }
-
LockSupport.parkNanos(Math.min(waitInNanos, remainingNanos));
}
diff --git a/src/main/java/com/it_jaros/jns/scan/engine/platform/linux/LinuxUdpSocketAPI.java b/src/main/java/com/it_jaros/jns/scan/engine/platform/linux/LinuxUdpSocketAPI.java
index bfe70d4..9996b85 100644
--- a/src/main/java/com/it_jaros/jns/scan/engine/platform/linux/LinuxUdpSocketAPI.java
+++ b/src/main/java/com/it_jaros/jns/scan/engine/platform/linux/LinuxUdpSocketAPI.java
@@ -14,7 +14,6 @@ public class LinuxUdpSocketAPI {
public static final int AF_INET = 2;
public static final int AF_INET6 = 10;
public static final int EAGAIN = 11;
- public static final int EWOULDBLOCK = 11;
public static final int ECONNREFUSED = 111;
public static final int SOCK_DGRAM = 2;
public static final int F_GETFL = 3;