mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
Add developer documentation on the netmgr callbacks
Extra care must be taken when executing the callbacks to prevent the deadlocks on the caller's side. Add a paragraph that addresses when we can and when we cannot call the callbacks directly.
This commit is contained in:
parent
173c352452
commit
b4a43bf2f2
@ -104,3 +104,13 @@ functions MUST be called from the thread that created the network manager
|
|||||||
socket.
|
socket.
|
||||||
|
|
||||||
The ``isc_nm_listen*()`` functions MUST be called from the ``main`` loop.
|
The ``isc_nm_listen*()`` functions MUST be called from the ``main`` loop.
|
||||||
|
|
||||||
|
The general design of Network Manager is based on callbacks. An extra care must
|
||||||
|
be taken when implementing new functions because the callbacks MUST be called
|
||||||
|
asynchronously because the caller might be inside a lock and the same lock must
|
||||||
|
be acquired in the callback. This doesn't mean that the callback must be always
|
||||||
|
called asynchronously, because sometimes we are already in the libuv callback
|
||||||
|
and thus we can just call the callback directly, but in other places, especially
|
||||||
|
when returning an error, the control hasn't been returned to the caller yet and
|
||||||
|
in such case, the callback must be scheduled onto the event loop instead of
|
||||||
|
executing it directly.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user