[virt-viewer] Stop polling after reconnecting to libvirtd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When the connection to libvirtd is lost, virt-viewer starts polling for
libvirtd to come back. The polling mechanism is also used when
connecting to very old libvirtd which don't support
virConnectDomainEventDeregisterAny().

Currently, once we could reconnect to libvirtd, virt-viewer will keep
polling, thus behaving as if the libvirtd connection does not support
virConnectDomainEventDeregisterAny(). This commit makes sure we stop
polling once the new libvirtd connection is established.
---
 src/virt-viewer.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/virt-viewer.c b/src/virt-viewer.c
index 851c83d..ca264c8 100644
--- a/src/virt-viewer.c
+++ b/src/virt-viewer.c
@@ -151,6 +151,20 @@ virt_viewer_start_reconnect_poll(VirtViewer *self)
 }
 
 static void
+virt_viewer_stop_reconnect_poll(VirtViewer *self)
+{
+    VirtViewerPrivate *priv = self->priv;
+
+    g_debug("reconnect_poll: %d", priv->reconnect_poll);
+
+    if (priv->reconnect_poll == 0)
+        return;
+
+    g_source_remove(priv->reconnect_poll);
+    priv->reconnect_poll = 0;
+}
+
+static void
 virt_viewer_deactivated(VirtViewerApp *app, gboolean connect_error)
 {
     VirtViewer *self = VIRT_VIEWER(app);
@@ -951,6 +965,10 @@ virt_viewer_connect(VirtViewerApp *app, GError **err)
         !virt_viewer_app_is_active(app)) {
         g_debug("No domain events, falling back to polling");
         virt_viewer_start_reconnect_poll(self);
+    } else {
+        /* we may be polling if we lost the libvirt connection and are trying
+         * to reconnect */
+        virt_viewer_stop_reconnect_poll(self);
     }
 
     if (virConnectRegisterCloseCallback(priv->conn,
-- 
2.5.0

_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list



[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux