mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
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 <pkrempa@redhat.com> ACKed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
6fc8504293
commit
634dbd936b
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user