Signed-off-by: Rafael Fonseca <r4f4rfs(a)gmail.com>
---
src/admin/admin_remote.c | 10 +++----
src/locking/lock_driver_lockd.c | 23 ++++++++-------
src/logging/log_manager.c | 17 ++++++-----
src/lxc/lxc_monitor.c | 3 +-
src/remote/remote_driver.c | 52 +++++++++++++++++----------------
src/rpc/virnetclient.c | 4 +--
src/rpc/virnetclientprogram.c | 29 +++++++++---------
src/rpc/virnetclientprogram.h | 10 +++++--
src/rpc/virnetclientstream.c | 5 ++--
9 files changed, 82 insertions(+), 71 deletions(-)
diff --git a/src/admin/admin_remote.c b/src/admin/admin_remote.c
index ca5e0c9fe4..da90939e49 100644
--- a/src/admin/admin_remote.c
+++ b/src/admin/admin_remote.c
@@ -41,7 +41,8 @@ remoteAdminPrivDispose(void *opaque)
{
remoteAdminPrivPtr priv = opaque;
- virObjectUnref(priv->program);
+ if (priv->program)
+ g_object_unref(priv->program);
virObjectUnref(priv->client);
}
@@ -227,10 +228,9 @@ remoteAdminPrivNew(const char *sock_path)
if (!(priv->client = virNetClientNewUNIX(sock_path, false, NULL)))
goto error;
- if (!(priv->program = virNetClientProgramNew(ADMIN_PROGRAM,
- ADMIN_PROTOCOL_VERSION,
- NULL, 0, NULL)))
- goto error;
+ priv->program = virNetClientProgramNew(ADMIN_PROGRAM,
+ ADMIN_PROTOCOL_VERSION,
+ NULL, 0, NULL);
if (virNetClientAddProgram(priv->client, priv->program) < 0)
goto error;
diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c
index bec98dd05f..7520545dc0 100644
--- a/src/locking/lock_driver_lockd.c
+++ b/src/locking/lock_driver_lockd.c
@@ -213,12 +213,11 @@ static virNetClientPtr virLockManagerLockDaemonConnectionNew(bool
privileged,
daemonPath)))
goto error;
- if (!(*prog = virNetClientProgramNew(VIR_LOCK_SPACE_PROTOCOL_PROGRAM,
- VIR_LOCK_SPACE_PROTOCOL_PROGRAM_VERSION,
- NULL,
- 0,
- NULL)))
- goto error;
+ *prog = virNetClientProgramNew(VIR_LOCK_SPACE_PROTOCOL_PROGRAM,
+ VIR_LOCK_SPACE_PROTOCOL_PROGRAM_VERSION,
+ NULL,
+ 0,
+ NULL);
if (virNetClientAddProgram(client, *prog) < 0)
goto error;
@@ -233,7 +232,8 @@ static virNetClientPtr virLockManagerLockDaemonConnectionNew(bool
privileged,
VIR_FREE(lockdpath);
virNetClientClose(client);
virObjectUnref(client);
- virObjectUnref(*prog);
+ if (*prog)
+ g_object_unref(*prog);
return NULL;
}
@@ -296,7 +296,8 @@ static int virLockManagerLockDaemonSetupLockspace(const char *path)
rv = 0;
cleanup:
- virObjectUnref(program);
+ if (program)
+ g_object_unref(program);
virNetClientClose(client);
virObjectUnref(client);
return rv;
@@ -660,7 +661,8 @@ static int virLockManagerLockDaemonAcquire(virLockManagerPtr lock,
VIR_FORCE_CLOSE(*fd);
virNetClientClose(client);
virObjectUnref(client);
- virObjectUnref(program);
+ if (program)
+ g_object_unref(program);
return rv;
}
@@ -713,7 +715,8 @@ static int virLockManagerLockDaemonRelease(virLockManagerPtr lock,
cleanup:
virNetClientClose(client);
virObjectUnref(client);
- virObjectUnref(program);
+ if (program)
+ g_object_unref(program);
return rv;
}
diff --git a/src/logging/log_manager.c b/src/logging/log_manager.c
index fd7c2922b3..dee5307e56 100644
--- a/src/logging/log_manager.c
+++ b/src/logging/log_manager.c
@@ -83,12 +83,11 @@ virLogManagerConnect(bool privileged,
daemonPath)))
goto error;
- if (!(*prog = virNetClientProgramNew(VIR_LOG_MANAGER_PROTOCOL_PROGRAM,
- VIR_LOG_MANAGER_PROTOCOL_PROGRAM_VERSION,
- NULL,
- 0,
- NULL)))
- goto error;
+ *prog = virNetClientProgramNew(VIR_LOG_MANAGER_PROTOCOL_PROGRAM,
+ VIR_LOG_MANAGER_PROTOCOL_PROGRAM_VERSION,
+ NULL,
+ 0,
+ NULL);
if (virNetClientAddProgram(client, *prog) < 0)
goto error;
@@ -103,7 +102,8 @@ virLogManagerConnect(bool privileged,
VIR_FREE(logdpath);
virNetClientClose(client);
virObjectUnref(client);
- virObjectUnref(*prog);
+ if (*prog)
+ g_object_unref(*prog);
return NULL;
}
@@ -135,7 +135,8 @@ virLogManagerFree(virLogManagerPtr mgr)
if (mgr->client)
virNetClientClose(mgr->client);
- virObjectUnref(mgr->program);
+ if (mgr->program)
+ g_object_unref(mgr->program);
virObjectUnref(mgr->client);
VIR_FREE(mgr);
diff --git a/src/lxc/lxc_monitor.c b/src/lxc/lxc_monitor.c
index 479125374b..923a0a5a2f 100644
--- a/src/lxc/lxc_monitor.c
+++ b/src/lxc/lxc_monitor.c
@@ -198,7 +198,8 @@ static void virLXCMonitorDispose(void *opaque)
VIR_DEBUG("mon=%p", mon);
if (mon->cb.destroy)
(mon->cb.destroy)(mon, mon->vm);
- virObjectUnref(mon->program);
+ if (mon->program)
+ g_object_unref(mon->program);
virObjectUnref(mon->vm);
}
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 7bae0c2514..5051c583d7 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -1280,24 +1280,21 @@ doRemoteOpen(virConnectPtr conn,
remoteClientCloseFunc,
priv->closeCallback, virObjectFreeCallback);
- if (!(priv->remoteProgram = virNetClientProgramNew(REMOTE_PROGRAM,
- REMOTE_PROTOCOL_VERSION,
- remoteEvents,
- G_N_ELEMENTS(remoteEvents),
- conn)))
- goto failed;
- if (!(priv->lxcProgram = virNetClientProgramNew(LXC_PROGRAM,
- LXC_PROTOCOL_VERSION,
- NULL,
- 0,
- NULL)))
- goto failed;
- if (!(priv->qemuProgram = virNetClientProgramNew(QEMU_PROGRAM,
- QEMU_PROTOCOL_VERSION,
- qemuEvents,
- G_N_ELEMENTS(qemuEvents),
- conn)))
- goto failed;
+ priv->remoteProgram = virNetClientProgramNew(REMOTE_PROGRAM,
+ REMOTE_PROTOCOL_VERSION,
+ remoteEvents,
+ G_N_ELEMENTS(remoteEvents),
+ conn);
+ priv->lxcProgram = virNetClientProgramNew(LXC_PROGRAM,
+ LXC_PROTOCOL_VERSION,
+ NULL,
+ 0,
+ NULL);
+ priv->qemuProgram = virNetClientProgramNew(QEMU_PROGRAM,
+ QEMU_PROTOCOL_VERSION,
+ qemuEvents,
+ G_N_ELEMENTS(qemuEvents),
+ conn);
if (virNetClientAddProgram(priv->client, priv->remoteProgram) < 0 ||
virNetClientAddProgram(priv->client, priv->lxcProgram) < 0 ||
@@ -1369,9 +1366,12 @@ doRemoteOpen(virConnectPtr conn,
return VIR_DRV_OPEN_SUCCESS;
failed:
- virObjectUnref(priv->remoteProgram);
- virObjectUnref(priv->lxcProgram);
- virObjectUnref(priv->qemuProgram);
+ if (priv->remoteProgram)
+ g_object_unref(priv->remoteProgram);
+ if (priv->lxcProgram)
+ g_object_unref(priv->lxcProgram);
+ if (priv->qemuProgram)
+ g_object_unref(priv->qemuProgram);
virNetClientClose(priv->client);
virObjectUnref(priv->client);
priv->client = NULL;
@@ -1532,10 +1532,12 @@ doRemoteClose(virConnectPtr conn, struct private_data *priv)
priv->client = NULL;
virObjectUnref(priv->closeCallback);
priv->closeCallback = NULL;
- virObjectUnref(priv->remoteProgram);
- virObjectUnref(priv->lxcProgram);
- virObjectUnref(priv->qemuProgram);
- priv->remoteProgram = priv->qemuProgram = priv->lxcProgram = NULL;
+ if (priv->remoteProgram)
+ g_clear_object(&priv->remoteProgram);
+ if (priv->lxcProgram)
+ g_clear_object(&priv->lxcProgram);
+ if (priv->qemuProgram)
+ g_clear_object(&priv->qemuProgram);
/* Free hostname copy */
VIR_FREE(priv->hostname);
diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c
index 1c5bef86a1..f940bed84e 100644
--- a/src/rpc/virnetclient.c
+++ b/src/rpc/virnetclient.c
@@ -685,7 +685,7 @@ void virNetClientDispose(void *obj)
client->closeFf(client->closeOpaque);
for (i = 0; i < client->nprograms; i++)
- virObjectUnref(client->programs[i]);
+ g_object_unref(client->programs[i]);
VIR_FREE(client->programs);
g_main_loop_unref(client->eventLoop);
@@ -1010,7 +1010,7 @@ int virNetClientAddProgram(virNetClientPtr client,
if (VIR_EXPAND_N(client->programs, client->nprograms, 1) < 0)
goto error;
- client->programs[client->nprograms-1] = virObjectRef(prog);
+ client->programs[client->nprograms-1] = g_object_ref(prog);
virObjectUnlock(client);
return 0;
diff --git a/src/rpc/virnetclientprogram.c b/src/rpc/virnetclientprogram.c
index 4d1a2bc28b..38625e7ad1 100644
--- a/src/rpc/virnetclientprogram.c
+++ b/src/rpc/virnetclientprogram.c
@@ -38,7 +38,7 @@
VIR_LOG_INIT("rpc.netclientprogram");
struct _virNetClientProgram {
- virObject parent;
+ GObject parent;
unsigned program;
unsigned version;
@@ -47,19 +47,19 @@ struct _virNetClientProgram {
void *eventOpaque;
};
-static virClassPtr virNetClientProgramClass;
-static void virNetClientProgramDispose(void *obj);
+G_DEFINE_TYPE(virNetClientProgram, vir_net_client_program, G_TYPE_OBJECT);
+static void virNetClientProgramFinalize(GObject *obj);
-static int virNetClientProgramOnceInit(void)
+static void vir_net_client_program_init(virNetClientProgram *prg G_GNUC_UNUSED)
{
- if (!VIR_CLASS_NEW(virNetClientProgram, virClassForObject()))
- return -1;
-
- return 0;
}
-VIR_ONCE_GLOBAL_INIT(virNetClientProgram);
+static void vir_net_client_program_class_init(virNetClientProgramClass *klass)
+{
+ GObjectClass *obj = G_OBJECT_CLASS(klass);
+ obj->finalize = virNetClientProgramFinalize;
+}
virNetClientProgramPtr virNetClientProgramNew(unsigned program,
unsigned version,
@@ -67,13 +67,9 @@ virNetClientProgramPtr virNetClientProgramNew(unsigned program,
size_t nevents,
void *eventOpaque)
{
- virNetClientProgramPtr prog;
-
- if (virNetClientProgramInitialize() < 0)
- return NULL;
+ virNetClientProgramPtr prog =
+ VIR_NET_CLIENT_PROGRAM(g_object_new(VIR_TYPE_NET_CLIENT_PROGRAM, NULL));
- if (!(prog = virObjectNew(virNetClientProgramClass)))
- return NULL;
prog->program = program;
prog->version = version;
@@ -85,8 +81,9 @@ virNetClientProgramPtr virNetClientProgramNew(unsigned program,
}
-void virNetClientProgramDispose(void *obj G_GNUC_UNUSED)
+void virNetClientProgramFinalize(GObject *obj)
{
+ G_OBJECT_CLASS(vir_net_client_program_parent_class)->finalize(obj);
}
diff --git a/src/rpc/virnetclientprogram.h b/src/rpc/virnetclientprogram.h
index 1ac0f30023..1f7006d462 100644
--- a/src/rpc/virnetclientprogram.h
+++ b/src/rpc/virnetclientprogram.h
@@ -24,12 +24,18 @@
#include <rpc/xdr.h>
#include "virnetmessage.h"
-#include "virobject.h"
+#include "internal.h"
+#include <glib-object.h>
typedef struct _virNetClient virNetClient;
typedef virNetClient *virNetClientPtr;
-typedef struct _virNetClientProgram virNetClientProgram;
+#define VIR_TYPE_NET_CLIENT_PROGRAM vir_net_client_program_get_type()
+G_DECLARE_FINAL_TYPE(virNetClientProgram,
+ vir_net_client_program,
+ VIR,
+ NET_CLIENT_PROGRAM,
+ GObject);
typedef virNetClientProgram *virNetClientProgramPtr;
typedef struct _virNetClientProgramEvent virNetClientProgramEvent;
diff --git a/src/rpc/virnetclientstream.c b/src/rpc/virnetclientstream.c
index f904eaba31..355739892e 100644
--- a/src/rpc/virnetclientstream.c
+++ b/src/rpc/virnetclientstream.c
@@ -145,7 +145,7 @@ virNetClientStreamPtr virNetClientStreamNew(virNetClientProgramPtr
prog,
if (!(st = virObjectLockableNew(virNetClientStreamClass)))
return NULL;
- st->prog = virObjectRef(prog);
+ st->prog = g_object_ref(prog);
st->proc = proc;
st->serial = serial;
st->allowSkip = allowSkip;
@@ -163,7 +163,8 @@ void virNetClientStreamDispose(void *obj)
virNetMessageQueueServe(&st->rx);
virNetMessageFree(msg);
}
- virObjectUnref(st->prog);
+ if (st->prog)
+ g_object_unref(st->prog);
}
bool virNetClientStreamMatches(virNetClientStreamPtr st,
--
2.25.1