d20be3fa28
If a vici client registered for (control-)log events, but a vici read/write operation fails, this may result in a deadlock. The attempt to write to the bus results in a vici log message, which in turn tries to acquire the lock for the entry currently held. While a recursive lock could help as well for a single thread, there is still a risk of inter-thread races if there is more than one thread listening for events and/or having read/write errors. We instead log to a local buffer, and write to the bus not before the connection entry has been released. Additionally, we mark the connection entry as unusable to avoid writing to the failed socket again, potentially triggering an error loop. |
||
---|---|---|
.. | ||
attributes | ||
bus | ||
config | ||
control | ||
encoding | ||
kernel | ||
network | ||
plugins | ||
processing/jobs | ||
sa | ||
tests | ||
Android.mk | ||
Makefile.am | ||
daemon.c | ||
daemon.h | ||
debug |