Event implementations need to be registered before a connection to the Hypervisor is opened, otherwise event handling can be impaired (e.g. delayed messages). This fact is referenced in an e-mail [1], but should also be noted in the documentation of the registration functions. [1] https://www.redhat.com/archives/libvirt-users/2014-April/msg00011.html --- src/util/virevent.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/util/virevent.c b/src/util/virevent.c index 54b6396..e0fd35e 100644 --- a/src/util/virevent.c +++ b/src/util/virevent.c @@ -204,6 +204,9 @@ virEventRemoveTimeout(int timer) * to integrate with the libglib2 event loop, or libevent * or the QT event loop. * + * For proper event handling, it is important that the event implementation + * is registered before a connection to the Hypervisor is opened. + * * Use of the virEventAddHandle() and similar APIs require that the * corresponding handler is registered. Use of the * virConnectDomainEventRegisterAny() and similar APIs requires that @@ -247,6 +250,9 @@ void virEventRegisterImpl(virEventAddHandleFunc addHandle, * not have a need to integrate with an external event * loop impl. * + * For proper event handling, it is important that the event implementation + * is registered before a connection to the Hypervisor is opened. + * * Once registered, the application has to invoke virEventRunDefaultImpl() in * a loop to process events. Failure to do so may result in connections being * closed unexpectedly as a result of keepalive timeout. The default -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list