mirror of
https://github.com/esphome/esphome.git
synced 2026-07-10 17:05:36 +00:00
ffbd0dcbfcdc13a655f8af890647a3303f49967f
The wake-hook call (esphome_wake_ota_component_any_context / App.wake_ota_component_any_context) was placed AFTER xTaskNotifyGive()/wake_loop_any_context() in both the fast-select callback and the raw-TCP accept callback. That opened a race: the main task could wake, run a full iteration (draining has_pending_enable_loop_requests_), and finish before the flag-set ran — losing the pending-enable request until the next unrelated socket event happened to re-trigger the path. Swap the order so the pending-enable flags are set first, then the main task is woken. The main-loop iteration triggered by the wake is now guaranteed to see the pending request. Note: host's yield_with_select_ path already sets and consumes the flag on the main thread with no cross-task wake in between, so it has no race and is unchanged.
Description
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
Readme
Multiple Licenses
546 MiB
Languages
C++
60.1%
Python
39.3%
C
0.3%
JavaScript
0.2%
