fix(webconfig): read the LAN address after pinning the route

startLanMode() took the caller's IP, read before the route lock. A
Wi-Fi/Ethernet switch in between left WebConfig locked to the new link
while advertising the old link's address. It now reads the selected
link's address after lockSwitching(), as startOTAUpdate() already does.
This commit is contained in:
agessaman committed 2026-09-19 10:53:39 -07:00
1 parent eb39ca59e7
commit 3c39908720
4 files changed
+6 -6

No files matched your search

+3 -1
View File
@@ -301,7 +301,7 @@ bool WebConfigServer::startSetupMode(char reply[]) {
return true;
}
bool WebConfigServer::startLanMode(IPAddress ip, bool initial_setup, char reply[]) {
bool WebConfigServer::startLanMode(bool initial_setup, char reply[]) {
if (_mode != MODE_OFF || _stopping) {
strcpy(reply, "Err: webconfig busy");
return false;
@@ -313,6 +313,8 @@ bool WebConfigServer::startLanMode(IPAddress ip, bool initial_setup, char reply[
}
activeNetworkLink().lockSwitching();
_network_locked = true;
// Read the address only once the route is pinned, so it names the locked link.
const IPAddress ip = activeNetworkLink().localIP();
if (!activeNetworkLink().isConnected() || ip == IPAddress()) {
activeNetworkLink().unlockSwitching();
_network_locked = false;