Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
On esp32, its possible that two threads (async_tcp, looptask) are sending out JSON via AsyncWebServer in parallel - serveJson() responds to json/si, and - updateInterfaces() is sending JSON state info using sendDataWs(). This workaround uses the INTERFACE_UPDATE_COOLDOWN timer to delay the second webSocket send command so it does not (usually) interfere with the first. It looks like the root cause that parts of AsyncWebServer are not thread-safe, and the payloads from a second ->send() call may corrupt the previous one if still being sent out. The problem should be solved properly in AsyncWebServer, however until that happens, this workaround help to reduce the frequency of errors.
- Loading branch information