|
|
b87072 |
From 09de02fd5cb12fcda3326e243981750c5358b7b6 Mon Sep 17 00:00:00 2001
|
|
|
b87072 |
From: Victor Toso <victortoso@redhat.com>
|
|
|
b87072 |
Date: Mon, 20 Dec 2021 19:09:37 +0100
|
|
|
b87072 |
Subject: [PATCH 21/21] udscs: udscs_connect: return error to caller
|
|
|
b87072 |
|
|
|
b87072 |
This way we can have the log in one place and avoid flooding the journal.
|
|
|
b87072 |
|
|
|
b87072 |
Signed-off-by: Victor Toso <victortoso@redhat.com>
|
|
|
b87072 |
---
|
|
|
b87072 |
src/udscs.c | 10 ++++------
|
|
|
b87072 |
src/udscs.h | 5 ++++-
|
|
|
b87072 |
src/vdagent/vdagent.c | 12 +++++++++---
|
|
|
b87072 |
3 files changed, 17 insertions(+), 10 deletions(-)
|
|
|
b87072 |
|
|
|
b87072 |
diff --git a/src/udscs.c b/src/udscs.c
|
|
|
b87072 |
index 3df67b3..6c50f76 100644
|
|
|
b87072 |
--- a/src/udscs.c
|
|
|
b87072 |
+++ b/src/udscs.c
|
|
|
b87072 |
@@ -107,16 +107,14 @@ static void udscs_connection_class_init(UdscsConnectionClass *klass)
|
|
|
b87072 |
UdscsConnection *udscs_connect(const char *socketname,
|
|
|
b87072 |
udscs_read_callback read_callback,
|
|
|
b87072 |
VDAgentConnErrorCb error_cb,
|
|
|
b87072 |
- int debug)
|
|
|
b87072 |
+ int debug,
|
|
|
b87072 |
+ GError **err)
|
|
|
b87072 |
{
|
|
|
b87072 |
GIOStream *io_stream;
|
|
|
b87072 |
UdscsConnection *conn;
|
|
|
b87072 |
- GError *err = NULL;
|
|
|
b87072 |
|
|
|
b87072 |
- io_stream = vdagent_socket_connect(socketname, &err;;
|
|
|
b87072 |
- if (err) {
|
|
|
b87072 |
- syslog(LOG_ERR, "%s: %s", __func__, err->message);
|
|
|
b87072 |
- g_error_free(err);
|
|
|
b87072 |
+ io_stream = vdagent_socket_connect(socketname, err);
|
|
|
b87072 |
+ if (*err) {
|
|
|
b87072 |
return NULL;
|
|
|
b87072 |
}
|
|
|
b87072 |
|
|
|
b87072 |
diff --git a/src/udscs.h b/src/udscs.h
|
|
|
b87072 |
index 4f7ea36..0d4197b 100644
|
|
|
b87072 |
--- a/src/udscs.h
|
|
|
b87072 |
+++ b/src/udscs.h
|
|
|
b87072 |
@@ -53,11 +53,14 @@ typedef void (*udscs_read_callback)(UdscsConnection *conn,
|
|
|
b87072 |
*
|
|
|
b87072 |
* If debug is true then the events on this connection will be traced.
|
|
|
b87072 |
* This includes the incoming and outgoing message names.
|
|
|
b87072 |
+ *
|
|
|
b87072 |
+ * In case of failure, returns NULL and set @err with reason.
|
|
|
b87072 |
*/
|
|
|
b87072 |
UdscsConnection *udscs_connect(const char *socketname,
|
|
|
b87072 |
udscs_read_callback read_callback,
|
|
|
b87072 |
VDAgentConnErrorCb error_cb,
|
|
|
b87072 |
- int debug);
|
|
|
b87072 |
+ int debug,
|
|
|
b87072 |
+ GError **err);
|
|
|
b87072 |
|
|
|
b87072 |
/* Queue a message for delivery to the client connected through conn.
|
|
|
b87072 |
*/
|
|
|
b87072 |
diff --git a/src/vdagent/vdagent.c b/src/vdagent/vdagent.c
|
|
|
b87072 |
index 0d3945e..05d1a8f 100644
|
|
|
b87072 |
--- a/src/vdagent/vdagent.c
|
|
|
b87072 |
+++ b/src/vdagent/vdagent.c
|
|
|
b87072 |
@@ -376,22 +376,28 @@ static void vdagent_destroy(VDAgent *agent)
|
|
|
b87072 |
static gboolean vdagent_init_async_cb(gpointer user_data)
|
|
|
b87072 |
{
|
|
|
b87072 |
VDAgent *agent = user_data;
|
|
|
b87072 |
+ GError *err = NULL;
|
|
|
b87072 |
|
|
|
b87072 |
agent->conn = udscs_connect(vdagentd_socket,
|
|
|
b87072 |
- daemon_read_complete, daemon_error_cb,
|
|
|
b87072 |
- debug);
|
|
|
b87072 |
+ daemon_read_complete,
|
|
|
b87072 |
+ daemon_error_cb,
|
|
|
b87072 |
+ debug,
|
|
|
b87072 |
+ &err;;
|
|
|
b87072 |
if (agent->conn == NULL) {
|
|
|
b87072 |
if (agent->udscs_num_retry == MAX_RETRY_CONNECT_SYSTEM_AGENT) {
|
|
|
b87072 |
syslog(LOG_WARNING,
|
|
|
b87072 |
"Failed to connect to spice-vdagentd at %s (tried %d times)",
|
|
|
b87072 |
vdagentd_socket, agent->udscs_num_retry);
|
|
|
b87072 |
+ g_error_free(err);
|
|
|
b87072 |
goto err_init;
|
|
|
b87072 |
}
|
|
|
b87072 |
if (agent->udscs_num_retry == 0) {
|
|
|
b87072 |
/* Log only when it fails and at the end */
|
|
|
b87072 |
syslog(LOG_DEBUG,
|
|
|
b87072 |
- "Failed to connect with spice-vdagentd. Trying again in 1s");
|
|
|
b87072 |
+ "Failed to connect with spice-vdagentd due '%s'. Trying again in 1s",
|
|
|
b87072 |
+ err->message);
|
|
|
b87072 |
}
|
|
|
b87072 |
+ g_error_free(err);
|
|
|
b87072 |
agent->udscs_num_retry++;
|
|
|
b87072 |
g_timeout_add_seconds(1, vdagent_init_async_cb, agent);
|
|
|
b87072 |
return G_SOURCE_REMOVE;
|
|
|
b87072 |
--
|
|
|
b87072 |
2.33.1
|
|
|
b87072 |
|