提交 634dbd93 编写于 作者: P Peter Krempa

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: NPeter Krempa <pkrempa@redhat.com>
ACKed-by: NEric Blake <eblake@redhat.com>
上级 6fc85042
...@@ -1033,16 +1033,17 @@ remoteRelayDomainEventTunable(virConnectPtr conn, ...@@ -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, ...@@ -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, ...@@ -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;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册