From 634dbd936b6c872ccb1f6858a22d41b1175f31f0 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 22 Oct 2019 14:57:55 +0200 Subject: [PATCH] remote: Serialize typed parameters earlier Move calls to virTypedParamsSerialize earlier in the event dispatch functions so that we don't have to call 'xdr_free' afterwards. This is possible as virTypedParamsSerialize cleans up after itself if it fails. Signed-off-by: Peter Krempa ACKed-by: Eric Blake --- src/remote/remote_daemon_dispatch.c | 31 ++++++++++------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon_dispatch.c index 63f7496fb9..be20556128 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -1033,16 +1033,17 @@ remoteRelayDomainEventTunable(virConnectPtr conn, /* build return data */ memset(&data, 0, sizeof(data)); - data.callbackID = callback->callbackID; - make_nonnull_domain(&data.dom, dom); if (virTypedParamsSerialize(params, nparams, REMOTE_DOMAIN_EVENT_TUNABLE_MAX, (virTypedParameterRemotePtr *) &data.params.params_val, &data.params.params_len, - VIR_TYPED_PARAM_STRING_OKAY) < 0) { - goto error; - } + VIR_TYPED_PARAM_STRING_OKAY) < 0) + return -1; + + data.callbackID = callback->callbackID; + make_nonnull_domain(&data.dom, dom); + remoteDispatchObjectEventSend(callback->client, remoteProgram, REMOTE_PROC_DOMAIN_EVENT_CALLBACK_TUNABLE, @@ -1050,11 +1051,6 @@ remoteRelayDomainEventTunable(virConnectPtr conn, &data); return 0; - - error: - xdr_free((xdrproc_t)xdr_remote_domain_event_callback_tunable_msg, - (char *) &data); - return -1; } @@ -1177,27 +1173,22 @@ remoteRelayDomainEventJobCompleted(virConnectPtr conn, /* build return data */ memset(&data, 0, sizeof(data)); - data.callbackID = callback->callbackID; - make_nonnull_domain(&data.dom, dom); if (virTypedParamsSerialize(params, nparams, REMOTE_DOMAIN_JOB_STATS_MAX, (virTypedParameterRemotePtr *) &data.params.params_val, &data.params.params_len, - VIR_TYPED_PARAM_STRING_OKAY) < 0) { - goto error; - } + VIR_TYPED_PARAM_STRING_OKAY) < 0) + return -1; + + data.callbackID = callback->callbackID; + make_nonnull_domain(&data.dom, dom); remoteDispatchObjectEventSend(callback->client, remoteProgram, REMOTE_PROC_DOMAIN_EVENT_CALLBACK_JOB_COMPLETED, (xdrproc_t)xdr_remote_domain_event_callback_job_completed_msg, &data); return 0; - - error: - xdr_free((xdrproc_t)xdr_remote_domain_event_callback_job_completed_msg, - (char *) &data); - return -1; } -- GitLab