Restart on webserver exit to regain memory
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user