Restart on webserver exit to regain memory
This commit is contained in:
@@ -43,6 +43,7 @@ void CrossPointWebServerActivity::onEnter() {
|
|||||||
state = WebServerActivityState::MODE_SELECTION;
|
state = WebServerActivityState::MODE_SELECTION;
|
||||||
networkMode = NetworkMode::JOIN_NETWORK;
|
networkMode = NetworkMode::JOIN_NETWORK;
|
||||||
isApMode = false;
|
isApMode = false;
|
||||||
|
webServerStarted = false;
|
||||||
connectedIP.clear();
|
connectedIP.clear();
|
||||||
connectedSSID.clear();
|
connectedSSID.clear();
|
||||||
lastHandleClientTime = 0;
|
lastHandleClientTime = 0;
|
||||||
@@ -97,6 +98,11 @@ void CrossPointWebServerActivity::onExit() {
|
|||||||
|
|
||||||
LOG_DBG("WEBACT", "Free heap at onExit end: %d bytes", ESP.getFreeHeap());
|
LOG_DBG("WEBACT", "Free heap at onExit end: %d bytes", ESP.getFreeHeap());
|
||||||
requestUpdate();
|
requestUpdate();
|
||||||
|
|
||||||
|
if (webServerStarted) {
|
||||||
|
LOG_DBG("WEBACT", "Restarting device after webserver exit to regain heap...");
|
||||||
|
ESP.restart();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CrossPointWebServerActivity::onNetworkModeSelected(const NetworkMode mode) {
|
void CrossPointWebServerActivity::onNetworkModeSelected(const NetworkMode mode) {
|
||||||
@@ -245,6 +251,7 @@ void CrossPointWebServerActivity::startWebServer() {
|
|||||||
webServer->begin();
|
webServer->begin();
|
||||||
|
|
||||||
if (webServer->isRunning()) {
|
if (webServer->isRunning()) {
|
||||||
|
webServerStarted = true;
|
||||||
state = WebServerActivityState::SERVER_RUNNING;
|
state = WebServerActivityState::SERVER_RUNNING;
|
||||||
if (!isApMode) {
|
if (!isApMode) {
|
||||||
currentRssi = WiFi.RSSI();
|
currentRssi = WiFi.RSSI();
|
||||||
|
|||||||
@@ -34,6 +34,9 @@ class CrossPointWebServerActivity final : public Activity {
|
|||||||
NetworkMode networkMode = NetworkMode::JOIN_NETWORK;
|
NetworkMode networkMode = NetworkMode::JOIN_NETWORK;
|
||||||
bool isApMode = false;
|
bool isApMode = false;
|
||||||
|
|
||||||
|
// Track whether the web server was started during this activity.
|
||||||
|
bool webServerStarted = false;
|
||||||
|
|
||||||
// Web server - owned by this activity
|
// Web server - owned by this activity
|
||||||
std::unique_ptr<CrossPointWebServer> webServer;
|
std::unique_ptr<CrossPointWebServer> webServer;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user