Use a separate list and mutex for loggers.
[strongswan.git] / src / libcharon / bus / listeners / listener.h
index f04b20f..a567305 100644 (file)
@@ -35,8 +35,16 @@ struct listener_t {
         *
         * The implementing signal function returns TRUE to stay registered
         * to the bus, or FALSE to unregister itself.
-        * Calling bus_t.log() inside of a registered listener is possible,
-        * but the bus does not invoke listeners recursively.
+        *
+        * Calling bus_t.log() inside of a registered listener is possible
+        * from all listener_t callbacks, but recursive calls from log() itself
+        * are ignored.
+        *
+        * Note that calls to bus_t.log() are handled seperately from calls to
+        * other functions, thus this callback may be called concurrently with
+        * some of the others. Because of this unregistering from this callback
+        * does not happen in sync with the other callbacks, thus, one of the other
+        * callbacks might be called before the listener is finally unregistered.
         *
         * @param group         kind of the signal (up, down, rekeyed, ...)
         * @param level         verbosity level of the signal