Refactor the code to use virTypedParamList which simplifies cleanup.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/driver.c | 10 +++-------
src/remote/remote_daemon_dispatch.c | 8 +++-----
src/util/viridentity.c | 15 +++++----------
src/util/viridentity.h | 5 ++---
4 files changed, 13 insertions(+), 25 deletions(-)
diff --git a/src/driver.c b/src/driver.c
index d4136c438f..cea74bdf95 100644
--- a/src/driver.c
+++ b/src/driver.c
@@ -160,20 +160,16 @@ virGetConnectGeneric(virThreadLocal *threadPtr, const char *name)
if (conn->driver->connectSetIdentity != NULL) {
g_autoptr(virIdentity) ident = NULL;
- g_autoptr(virTypedParamList) paramlist = NULL;
- virTypedParameterPtr identparams = NULL;
- int nidentparams = 0;
+ g_autoptr(virTypedParamList) identparams = NULL;
VIR_DEBUG("Attempting to delegate current identity");
if (!(ident = virIdentityGetCurrent()))
goto error;
- if (virIdentityGetParameters(ident, &identparams, &nidentparams) <
0)
+ if (!(identparams = virIdentityGetParameters(ident)))
goto error;
- paramlist = virTypedParamListFromParams(&identparams, nidentparams);
-
- if (virConnectSetIdentity(conn, paramlist->par, paramlist->npar, 0)
< 0)
+ if (virConnectSetIdentity(conn, identparams->par, identparams->npar, 0)
< 0)
goto error;
}
}
diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon_dispatch.c
index 2463386e39..39953f46cf 100644
--- a/src/remote/remote_daemon_dispatch.c
+++ b/src/remote/remote_daemon_dispatch.c
@@ -1793,8 +1793,7 @@ remoteOpenConn(const char *uri,
bool preserveIdentity,
virConnectPtr *conn)
{
- virTypedParameterPtr params = NULL;
- int nparams = 0;
+ g_autoptr(virTypedParamList) identparams = NULL;
int ret = -1;
VIR_DEBUG("Getting secondary uri=%s readonly=%d preserveIdent=%d conn=%p",
@@ -1814,7 +1813,7 @@ remoteOpenConn(const char *uri,
if (!(ident = virIdentityGetCurrent()))
return -1;
- if (virIdentityGetParameters(ident, ¶ms, &nparams) < 0)
+ if (!(identparams = virIdentityGetParameters(ident)))
goto error;
}
@@ -1828,7 +1827,7 @@ remoteOpenConn(const char *uri,
VIR_DEBUG("Opened driver %p", *conn);
if (preserveIdentity) {
- if (virConnectSetIdentity(*conn, params, nparams, 0) < 0)
+ if (virConnectSetIdentity(*conn, identparams->par, identparams->npar, 0)
< 0)
goto error;
VIR_DEBUG("Forwarded current identity to secondary driver");
@@ -1836,7 +1835,6 @@ remoteOpenConn(const char *uri,
ret = 0;
cleanup:
- virTypedParamsFree(params, nparams);
return ret;
error:
diff --git a/src/util/viridentity.c b/src/util/viridentity.c
index 70843ecf9f..e3a9cbb661 100644
--- a/src/util/viridentity.c
+++ b/src/util/viridentity.c
@@ -838,17 +838,12 @@ int virIdentitySetParameters(virIdentity *ident,
}
-int virIdentityGetParameters(virIdentity *ident,
- virTypedParameterPtr *params,
- int *nparams)
+virTypedParamList *virIdentityGetParameters(virIdentity *ident)
{
- *params = NULL;
- *nparams = 0;
+ virTypedParameter *tmp = NULL;
- if (virTypedParamsCopy(params, ident->params, ident->nparams) < 0)
- return -1;
-
- *nparams = ident->nparams;
+ if (virTypedParamsCopy(&tmp, ident->params, ident->nparams) < 0)
+ return NULL;
- return 0;
+ return virTypedParamListFromParams(&tmp, ident->nparams);
}
diff --git a/src/util/viridentity.h b/src/util/viridentity.h
index 6da6d0c557..5f87d7268b 100644
--- a/src/util/viridentity.h
+++ b/src/util/viridentity.h
@@ -23,6 +23,7 @@
#include "internal.h"
#include <glib-object.h>
+#include "virtypedparam.h"
#define VIR_TYPE_IDENTITY vir_identity_get_type()
G_DECLARE_FINAL_TYPE(virIdentity, vir_identity, VIR, IDENTITY, GObject);
@@ -88,6 +89,4 @@ int virIdentitySetParameters(virIdentity *ident,
virTypedParameterPtr params,
int nparams);
-int virIdentityGetParameters(virIdentity *ident,
- virTypedParameterPtr *params,
- int *nparams);
+virTypedParamList *virIdentityGetParameters(virIdentity *ident);
--
2.35.3