mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +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 */
|
/* build return data */
|
||||||
memset(&data, 0, sizeof(data));
|
memset(&data, 0, sizeof(data));
|
||||||
data.callbackID = callback->callbackID;
|
|
||||||
make_nonnull_domain(&data.dom, dom);
|
|
||||||
|
|
||||||
if (virTypedParamsSerialize(params, nparams,
|
if (virTypedParamsSerialize(params, nparams,
|
||||||
REMOTE_DOMAIN_EVENT_TUNABLE_MAX,
|
REMOTE_DOMAIN_EVENT_TUNABLE_MAX,
|
||||||
(virTypedParameterRemotePtr *) &data.params.params_val,
|
(virTypedParameterRemotePtr *) &data.params.params_val,
|
||||||
&data.params.params_len,
|
&data.params.params_len,
|
||||||
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
|
VIR_TYPED_PARAM_STRING_OKAY) < 0)
|
||||||
goto error;
|
return -1;
|
||||||
}
|
|
||||||
|
data.callbackID = callback->callbackID;
|
||||||
|
make_nonnull_domain(&data.dom, dom);
|
||||||
|
|
||||||
|
|
||||||
remoteDispatchObjectEventSend(callback->client, remoteProgram,
|
remoteDispatchObjectEventSend(callback->client, remoteProgram,
|
||||||
REMOTE_PROC_DOMAIN_EVENT_CALLBACK_TUNABLE,
|
REMOTE_PROC_DOMAIN_EVENT_CALLBACK_TUNABLE,
|
||||||
@ -1050,11 +1051,6 @@ remoteRelayDomainEventTunable(virConnectPtr conn,
|
|||||||
&data);
|
&data);
|
||||||
|
|
||||||
return 0;
|
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 */
|
/* build return data */
|
||||||
memset(&data, 0, sizeof(data));
|
memset(&data, 0, sizeof(data));
|
||||||
data.callbackID = callback->callbackID;
|
|
||||||
make_nonnull_domain(&data.dom, dom);
|
|
||||||
|
|
||||||
if (virTypedParamsSerialize(params, nparams,
|
if (virTypedParamsSerialize(params, nparams,
|
||||||
REMOTE_DOMAIN_JOB_STATS_MAX,
|
REMOTE_DOMAIN_JOB_STATS_MAX,
|
||||||
(virTypedParameterRemotePtr *) &data.params.params_val,
|
(virTypedParameterRemotePtr *) &data.params.params_val,
|
||||||
&data.params.params_len,
|
&data.params.params_len,
|
||||||
VIR_TYPED_PARAM_STRING_OKAY) < 0) {
|
VIR_TYPED_PARAM_STRING_OKAY) < 0)
|
||||||
goto error;
|
return -1;
|
||||||
}
|
|
||||||
|
data.callbackID = callback->callbackID;
|
||||||
|
make_nonnull_domain(&data.dom, dom);
|
||||||
|
|
||||||
remoteDispatchObjectEventSend(callback->client, remoteProgram,
|
remoteDispatchObjectEventSend(callback->client, remoteProgram,
|
||||||
REMOTE_PROC_DOMAIN_EVENT_CALLBACK_JOB_COMPLETED,
|
REMOTE_PROC_DOMAIN_EVENT_CALLBACK_JOB_COMPLETED,
|
||||||
(xdrproc_t)xdr_remote_domain_event_callback_job_completed_msg,
|
(xdrproc_t)xdr_remote_domain_event_callback_job_completed_msg,
|
||||||
&data);
|
&data);
|
||||||
return 0;
|
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