#include "HttpFileStreamer.h" #include #include namespace { constexpr size_t DOWNLOAD_CHUNK_SIZE = 4096; } namespace HttpFileStreamer { bool streamFileToClient(FsFile& file, NetworkClient& client) { auto* buffer = static_cast(malloc(DOWNLOAD_CHUNK_SIZE)); if (!buffer) { LOG_ERR("HTTP", "malloc failed: %zu bytes", DOWNLOAD_CHUNK_SIZE); return false; } bool ok = true; while (ok) { esp_task_wdt_reset(); int result = file.read(buffer, DOWNLOAD_CHUNK_SIZE); if (result < 0) { ok = false; break; } if (result == 0) break; size_t bytesRead = static_cast(result); size_t totalWritten = 0; while (totalWritten < bytesRead) { esp_task_wdt_reset(); size_t wrote = client.write(buffer + totalWritten, bytesRead - totalWritten); if (wrote == 0) { ok = false; break; } totalWritten += wrote; } } free(buffer); return ok; } } // namespace HttpFileStreamer