Restart on webserver exit to regain memory

This commit is contained in:
jpirnay
2026-05-04 11:07:38 +02:00
parent 3df8ce56de
commit 03fb8e8ce1
2 changed files with 10 additions and 0 deletions
@@ -43,6 +43,7 @@ void CrossPointWebServerActivity::onEnter() {
state = WebServerActivityState::MODE_SELECTION;
networkMode = NetworkMode::JOIN_NETWORK;
isApMode = false;
webServerStarted = false;
connectedIP.clear();
connectedSSID.clear();
lastHandleClientTime = 0;
@@ -97,6 +98,11 @@ void CrossPointWebServerActivity::onExit() {
LOG_DBG("WEBACT", "Free heap at onExit end: %d bytes", ESP.getFreeHeap());
requestUpdate();
if (webServerStarted) {
LOG_DBG("WEBACT", "Restarting device after webserver exit to regain heap...");
ESP.restart();
}
}
void CrossPointWebServerActivity::onNetworkModeSelected(const NetworkMode mode) {
@@ -245,6 +251,7 @@ void CrossPointWebServerActivity::startWebServer() {
webServer->begin();
if (webServer->isRunning()) {
webServerStarted = true;
state = WebServerActivityState::SERVER_RUNNING;
if (!isApMode) {
currentRssi = WiFi.RSSI();
@@ -34,6 +34,9 @@ class CrossPointWebServerActivity final : public Activity {
NetworkMode networkMode = NetworkMode::JOIN_NETWORK;
bool isApMode = false;
// Track whether the web server was started during this activity.
bool webServerStarted = false;
// Web server - owned by this activity
std::unique_ptr<CrossPointWebServer> webServer;