diff --git a/apps/backend/src/routes/scan.ts b/apps/backend/src/routes/scan.ts index f1e7bbd..31bc410 100644 --- a/apps/backend/src/routes/scan.ts +++ b/apps/backend/src/routes/scan.ts @@ -391,7 +391,21 @@ export async function scanRoutes(app: FastifyInstance): Promise { return; } try { - const masscanPorts = masscanBatch?.get(device.ip); + // WICHTIG (Bugfix round56): masscanBatch.get(device.ip) liefert + // "undefined" in ZWEI völlig unterschiedlichen Fällen: (a) der + // gesamte masscan-Batch ist fehlgeschlagen (masscanBatch === + // null), ODER (b) der Batch war erfolgreich, aber DIESES + // Gerät hat schlicht KEINE offenen Ports - ein bei Handys/ + // Smart-Geräten völlig normales, gültiges Ergebnis. Der + // bisherige Code hat beide Fälle identisch behandelt und + // damit für JEDES Gerät mit null gefundenen Ports fälschlich + // einen kompletten, langsamen 65535-Port-TCP-Fallback-Scan + // ausgelöst - genau das, was masscan eigentlich vermeiden + // sollte. Ein leeres Array ist in JS truthy (nur undefined/ + // null/0/""/NaN/false sind falsy), daher reicht es, hier statt + // "undefined" bewusst ein leeres Array zu liefern, wenn der + // Batch als Ganzes erfolgreich war. + const masscanPorts = masscanBatch ? masscanBatch.get(device.ip) ?? [] : undefined; const preFetched: PreFetchedScanData = { masscanAttempted: true, masscanPorts,