Commit Graph
4 Commits
Author SHA1 Message Date
mikecarper 1f9ebbbd80 Commit WiFi OTA only after the complete upload request 2026-10-06 17:14:48 -07:00
mikecarper 2aef03aa8f Preserve multipart OTA MD5 after Update initialization
Arduino-ESP32 2.0.17 UpdateClass::begin() clears _target_md5 before
initializing the digest builder (Updater.cpp:123-126). The installed pinned
framework package is 3.20017.241212+sha.dcc1105b. Setting the multipart
digest before begin therefore skipped the final comparison in end(),
which only compares a nonempty _target_md5 (Updater.cpp:303-308).

Set the supplied MD5 after Update.begin succeeds. If the digest is rejected,
abort the begun update, release upload admission, and return HTTP 400 before
assigning an owner or extending its receive timeout.

Model the pinned begin-clears-digest behavior in the host fixture using
independent digest vectors. Verify malformed and mismatched digests, actual
byte corruption, disconnect cleanup, and later valid admission. Negative
controls restore the original ordering and remove abort/busy cleanup.

Validation: python3 -B test/test_async_web_lifecycle.py -v passed 4/4,
including C++ ASan/UBSan execution and negative controls. No PlatformIO or
hardware validation was run in this worktree.
2026-10-06 14:42:20 -07:00
mikecarper b81da36a00 Keep admitted WiFi OTA uploads alive through receive gaps 2026-10-05 21:45:06 -07:00
mikecarper 47f4581056 Complete browser OTA responses before reboot and allow HTTP restarts 2026-10-05 11:52:24 -07:00