fix: delay WebServer startup to mitigate stack overflow (#797)

This commit is contained in:
laride
2025-06-11 12:12:39 +08:00
committed by GitHub
parent 968ed1fae3
commit c9dec29d73
2 changed files with 24 additions and 12 deletions

View File

@@ -28,7 +28,8 @@
"CONFIG_MMAP_FILE_NAME_LENGTH=25", "CONFIG_MMAP_FILE_NAME_LENGTH=25",
"CONFIG_ESP_CONSOLE_NONE=y", "CONFIG_ESP_CONSOLE_NONE=y",
"CONFIG_USE_ESP_WAKE_WORD=y", "CONFIG_USE_ESP_WAKE_WORD=y",
"CONFIG_IOT_PROTOCOL_MCP=y" "CONFIG_IOT_PROTOCOL_MCP=y",
"CONFIG_COMPILER_OPTIMIZATION_SIZE=y"
] ]
} }
] ]

View File

@@ -85,17 +85,28 @@ private:
int32_t event_id, void* event_data) int32_t event_id, void* event_data)
{ {
if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_CONNECTED) { if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_CONNECTED) {
EspHi* instance = static_cast<EspHi*>(arg);
if (!instance->web_server_initialized_) { xTaskCreate(
ESP_LOGI(TAG, "WiFi connected, init web control server"); [](void* arg) {
esp_err_t err = esp_hi_web_control_server_init(); EspHi* instance = static_cast<EspHi*>(arg);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Failed to initialize web control server: %d", err); vTaskDelay(5000 / portTICK_PERIOD_MS);
} else {
ESP_LOGI(TAG, "Web control server initialized"); if (!instance->web_server_initialized_) {
instance->web_server_initialized_ = true; ESP_LOGI(TAG, "WiFi connected, init web control server");
} esp_err_t err = esp_hi_web_control_server_init();
} if (err != ESP_OK) {
ESP_LOGE(TAG, "Failed to initialize web control server: %d", err);
} else {
ESP_LOGI(TAG, "Web control server initialized");
instance->web_server_initialized_ = true;
}
}
vTaskDelete(NULL);
},
"web_server_init",
1024 * 10, arg, 5, nullptr);
} }
} }
#endif //CONFIG_ESP_HI_WEB_CONTROL_ENABLED #endif //CONFIG_ESP_HI_WEB_CONTROL_ENABLED