wrap in namespace
This commit is contained in:
parent
34dbbc5503
commit
2dfecbc8c4
@ -160,7 +160,8 @@ void CrossPointWebServerActivity::loop() {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case WebServerActivityState::SERVER_RUNNING:
|
case WebServerActivityState::SERVER_RUNNING:
|
||||||
// Handle web server requests
|
// Handle web server requests - call handleClient multiple times per loop
|
||||||
|
// to improve responsiveness and upload throughput
|
||||||
if (webServer && webServer->isRunning()) {
|
if (webServer && webServer->isRunning()) {
|
||||||
unsigned long timeSinceLastHandleClient = millis() - lastHandleClientTime;
|
unsigned long timeSinceLastHandleClient = millis() - lastHandleClientTime;
|
||||||
|
|
||||||
@ -170,7 +171,13 @@ void CrossPointWebServerActivity::loop() {
|
|||||||
timeSinceLastHandleClient);
|
timeSinceLastHandleClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
webServer->handleClient();
|
// Call handleClient multiple times to process pending requests faster
|
||||||
|
// This is critical for upload performance - HTTP file uploads send data
|
||||||
|
// in chunks and each handleClient() call processes incoming data
|
||||||
|
constexpr int HANDLE_CLIENT_ITERATIONS = 10;
|
||||||
|
for (int i = 0; i < HANDLE_CLIENT_ITERATIONS && webServer->isRunning(); i++) {
|
||||||
|
webServer->handleClient();
|
||||||
|
}
|
||||||
lastHandleClientTime = millis();
|
lastHandleClientTime = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,13 +10,15 @@
|
|||||||
#include "html/FilesPageHeaderHtml.generated.h"
|
#include "html/FilesPageHeaderHtml.generated.h"
|
||||||
#include "html/HomePageHtml.generated.h"
|
#include "html/HomePageHtml.generated.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
// Folders/files to hide from the web interface file browser
|
// Folders/files to hide from the web interface file browser
|
||||||
// Note: Items starting with "." are automatically hidden
|
// Note: Items starting with "." are automatically hidden
|
||||||
static const char* HIDDEN_ITEMS[] = {"System Volume Information", "XTCache"};
|
const char* HIDDEN_ITEMS[] = {"System Volume Information", "XTCache"};
|
||||||
static const size_t HIDDEN_ITEMS_COUNT = sizeof(HIDDEN_ITEMS) / sizeof(HIDDEN_ITEMS[0]);
|
const size_t HIDDEN_ITEMS_COUNT = sizeof(HIDDEN_ITEMS) / sizeof(HIDDEN_ITEMS[0]);
|
||||||
|
|
||||||
// Helper function to escape HTML special characters to prevent XSS
|
// Helper function to escape HTML special characters to prevent XSS
|
||||||
static String escapeHtml(const String& input) {
|
String escapeHtml(const String& input) {
|
||||||
String output;
|
String output;
|
||||||
output.reserve(input.length() * 1.1); // Pre-allocate with some extra space
|
output.reserve(input.length() * 1.1); // Pre-allocate with some extra space
|
||||||
|
|
||||||
@ -46,6 +48,8 @@ static String escapeHtml(const String& input) {
|
|||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
// File listing page template - now using generated headers:
|
// File listing page template - now using generated headers:
|
||||||
// - HomePageHtml (from html/HomePage.html)
|
// - HomePageHtml (from html/HomePage.html)
|
||||||
// - FilesPageHeaderHtml (from html/FilesPageHeader.html)
|
// - FilesPageHeaderHtml (from html/FilesPageHeader.html)
|
||||||
|
|||||||
17
src/main.cpp
17
src/main.cpp
@ -208,14 +208,6 @@ void loop() {
|
|||||||
|
|
||||||
unsigned long loopStartTime = millis();
|
unsigned long loopStartTime = millis();
|
||||||
|
|
||||||
// Reduce delay when webserver is running to allow faster handleClient() calls
|
|
||||||
// This is critical for upload performance and preventing TCP timeouts
|
|
||||||
if (webServerActivity && webServerActivity->isWebServerRunning()) {
|
|
||||||
delay(1); // Minimal delay to prevent tight loop
|
|
||||||
} else {
|
|
||||||
delay(10); // Normal delay when webserver not active
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned long lastMemPrint = 0;
|
static unsigned long lastMemPrint = 0;
|
||||||
if (Serial && millis() - lastMemPrint >= 10000) {
|
if (Serial && millis() - lastMemPrint >= 10000) {
|
||||||
Serial.printf("[%lu] [MEM] Free: %d bytes, Total: %d bytes, Min Free: %d bytes\n", millis(), ESP.getFreeHeap(),
|
Serial.printf("[%lu] [MEM] Free: %d bytes, Total: %d bytes, Min Free: %d bytes\n", millis(), ESP.getFreeHeap(),
|
||||||
@ -260,4 +252,13 @@ void loop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lastLoopTime = loopStartTime;
|
lastLoopTime = loopStartTime;
|
||||||
|
|
||||||
|
// Add delay at the end of the loop to prevent tight spinning
|
||||||
|
// When webserver is running, use yield() instead of delay for faster response
|
||||||
|
// When webserver is not running, use longer delay to save power
|
||||||
|
if (webServerActivity && webServerActivity->isWebServerRunning()) {
|
||||||
|
yield(); // Give FreeRTOS a chance to run tasks, but return immediately
|
||||||
|
} else {
|
||||||
|
delay(10); // Normal delay when webserver not active
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user