Merge fix/mqtt-review-2026-09-09 into feat/abstract-networking
#54 lands first, so the network abstraction is reworked on top of the per-slot client ownership model instead of alongside it. Two resolutions are semantic, not textual: - Link-transition teardown goes through the ownership API. It called softDisconnect() on every started client, which bypassed client_state and ignored the typed result. A slot that is still Starting now gets a real stop: softDisconnect() returns immediately on a client that is not yet connected, so its attempt would otherwise complete against the old route and deliver a CONNECTED event indistinguishable from the new one's (F04). On a medium switch the old route can still be briefly usable, so that is not hypothetical. A connected client keeps the cheap bounded path, and a quarantined one is left alone. - NetworkLink::applyPowerPrefs() adopts WifiPowerSavePolicy. Its local `2 ? MAX : NONE` mapping would have reintroduced F11 and read the new stored value 3 (explicit `min`) as none. It also applies the setting when the link starts already associated, which is the case the bridge used to cover. The NTP probe from #54 keeps its validation and its one-attempt-per-server bound, but resolves and gates on the selected link rather than on WiFi, so it works on an Ethernet-preferred node.
This commit is contained in:
commit
7f28231b25
30 files changed
+3075
-451
No files matched your search
@@ -17,6 +17,7 @@
|
||||
#include <helpers/MQTTPacketFilter.h>
|
||||
#include <helpers/MQTTPresets.h>
|
||||
#include <helpers/WebConfigKeys.h>
|
||||
#include <helpers/WifiPowerSavePolicy.h>
|
||||
#include <helpers/bridges/MQTTBridge.h>
|
||||
|
||||
#include "HttpPort80Lease.h"
|
||||
@@ -881,8 +882,7 @@ void WebConfigServer::handleConfigGet(AsyncWebServerRequest* req) {
|
||||
JsonObject wifi = doc.createNestedObject("wifi");
|
||||
wifi["ssid"] = (const char*)_obs->wifi_ssid;
|
||||
wifi["pwd"] = _obs->wifi_password[0] ? SECRET_SENTINEL : "";
|
||||
wifi["powersave"] = _obs->wifi_power_save == 0 ? "min"
|
||||
: _obs->wifi_power_save == 2 ? "max" : "none";
|
||||
wifi["powersave"] = WifiPowerSavePolicy::nameFor(_obs->wifi_power_save);
|
||||
|
||||
JsonObject mqtt = doc.createNestedObject("mqtt");
|
||||
mqtt["origin"] = (const char*)_obs->mqtt_origin;
|
||||
|
||||
Reference in new issue
Block a user