From 29f7a2c444d60fa155451d7e7f65cf637a1b7f41 Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Wed, 25 Mar 2026 17:22:28 +0100
Subject: [PATCH] fix: M1 M2 M6 M7 L3 L5 - subnet batching, scroll debounce, error logging, typing timeout, remove unused deps

---
 lib/services/mqtt_service.dart |   29 ++++++++++++++++-------------
 1 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/lib/services/mqtt_service.dart b/lib/services/mqtt_service.dart
index f0c6d21..7625e7b 100644
--- a/lib/services/mqtt_service.dart
+++ b/lib/services/mqtt_service.dart
@@ -228,19 +228,22 @@
           final subnet = '${parts[0]}.${parts[1]}.${parts[2]}';
           _mqttLog('MQTT: scanning $subnet.0/24 on ${iface.name}');
 
-          // Probe all hosts in parallel — 1s timeout each, runs concurrently
-          final futures = <Future<String?>>[];
-          for (int i = 1; i <= 254; i++) {
-            final probe = '$subnet.$i';
-            if (probe == addr.address) continue; // skip self
-            futures.add(_probeHost(probe, config.port));
-          }
-
-          final results = await Future.wait(futures);
-          final found = results.firstWhere((r) => r != null, orElse: () => null);
-          if (found != null) {
-            _mqttLog('MQTT: subnet scan found broker at $found');
-            return found;
+          // Probe in batches of 20 to avoid flooding the network.
+          // Early exit on first hit.
+          for (int batch = 1; batch <= 254; batch += 20) {
+            final end = (batch + 19).clamp(1, 254);
+            final futures = <Future<String?>>[];
+            for (int i = batch; i <= end; i++) {
+              final probe = '$subnet.$i';
+              if (probe == addr.address) continue;
+              futures.add(_probeHost(probe, config.port));
+            }
+            final results = await Future.wait(futures);
+            final found = results.firstWhere((r) => r != null, orElse: () => null);
+            if (found != null) {
+              _mqttLog('MQTT: subnet scan found broker at $found');
+              return found;
+            }
           }
         }
       }

--
Gitblit v1.3.1