Blame SOURCES/0020-vdagent-udscs-limit-retry-to-connect-to-vdagentd.patch

f8004d
From 1aa2c06015e15f707ba9f874d5a5ea49fd450745 Mon Sep 17 00:00:00 2001
f8004d
From: Victor Toso <victortoso@redhat.com>
f8004d
Date: Wed, 1 Dec 2021 20:07:22 +0100
f8004d
Subject: [PATCH 20/21] vdagent: udscs: limit retry to connect to vdagentd
f8004d
f8004d
Related: https://bugzilla.redhat.com/show_bug.cgi?id=2005802
f8004d
Related: https://bugzilla.redhat.com/show_bug.cgi?id=2028013
f8004d
Signed-off-by: Victor Toso <victortoso@redhat.com>
f8004d
---
f8004d
 src/vdagent/vdagent.c | 21 +++++++++++++++++++++
f8004d
 1 file changed, 21 insertions(+)
f8004d
f8004d
diff --git a/src/vdagent/vdagent.c b/src/vdagent/vdagent.c
f8004d
index fd08522..0d3945e 100644
f8004d
--- a/src/vdagent/vdagent.c
f8004d
+++ b/src/vdagent/vdagent.c
f8004d
@@ -42,11 +42,14 @@
f8004d
 #include "clipboard.h"
f8004d
 #include "display.h"
f8004d
 
f8004d
+#define MAX_RETRY_CONNECT_SYSTEM_AGENT 60
f8004d
+
f8004d
 typedef struct VDAgent {
f8004d
     VDAgentClipboards *clipboards;
f8004d
     VDAgentDisplay *display;
f8004d
     struct vdagent_file_xfers *xfers;
f8004d
     UdscsConnection *conn;
f8004d
+    gint udscs_num_retry;
f8004d
 
f8004d
     GMainLoop *loop;
f8004d
 } VDAgent;
f8004d
@@ -378,9 +381,27 @@ static gboolean vdagent_init_async_cb(gpointer user_data)
f8004d
                                 daemon_read_complete, daemon_error_cb,
f8004d
                                 debug);
f8004d
     if (agent->conn == NULL) {
f8004d
+        if (agent->udscs_num_retry == MAX_RETRY_CONNECT_SYSTEM_AGENT) {
f8004d
+            syslog(LOG_WARNING,
f8004d
+                   "Failed to connect to spice-vdagentd at %s (tried %d times)",
f8004d
+                   vdagentd_socket, agent->udscs_num_retry);
f8004d
+            goto err_init;
f8004d
+        }
f8004d
+        if (agent->udscs_num_retry == 0) {
f8004d
+            /* Log only when it fails and at the end */
f8004d
+            syslog(LOG_DEBUG,
f8004d
+                   "Failed to connect with spice-vdagentd. Trying again in 1s");
f8004d
+        }
f8004d
+        agent->udscs_num_retry++;
f8004d
         g_timeout_add_seconds(1, vdagent_init_async_cb, agent);
f8004d
         return G_SOURCE_REMOVE;
f8004d
     }
f8004d
+    if (agent->udscs_num_retry != 0) {
f8004d
+        syslog(LOG_DEBUG,
f8004d
+               "Connected with spice-vdagentd after %d attempts",
f8004d
+               agent->udscs_num_retry);
f8004d
+    }
f8004d
+    agent->udscs_num_retry = 0;
f8004d
     g_object_set_data(G_OBJECT(agent->conn), "agent", agent);
f8004d
 
f8004d
     agent->display = vdagent_display_create(agent->conn, debug, x11_sync);
f8004d
-- 
f8004d
2.33.1
f8004d