mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 17:23:56 -06:00
qmp: De-duplicate error response building
All callers of qmp_build_error_object() duplicate the code to wrap it in a response object. Replace it by qmp_error_response() that captures the duplicated code, including error_free(). Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20180703085358.13941-23-armbru@redhat.com>
This commit is contained in:
parent
a193352ff9
commit
cee32796ca
4 changed files with 15 additions and 22 deletions
|
@ -141,11 +141,15 @@ static QObject *do_qmp_dispatch(QmpCommandList *cmds, QObject *request,
|
|||
return ret;
|
||||
}
|
||||
|
||||
QObject *qmp_build_error_object(Error *err)
|
||||
QDict *qmp_error_response(Error *err)
|
||||
{
|
||||
return qobject_from_jsonf("{ 'class': %s, 'desc': %s }",
|
||||
QapiErrorClass_str(error_get_class(err)),
|
||||
error_get_pretty(err));
|
||||
QDict *rsp;
|
||||
|
||||
rsp = qdict_from_jsonf_nofail("{ 'error': { 'class': %s, 'desc': %s } }",
|
||||
QapiErrorClass_str(error_get_class(err)),
|
||||
error_get_pretty(err));
|
||||
error_free(err);
|
||||
return rsp;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -166,15 +170,13 @@ QObject *qmp_dispatch(QmpCommandList *cmds, QObject *request,
|
|||
|
||||
ret = do_qmp_dispatch(cmds, request, allow_oob, &err);
|
||||
|
||||
rsp = qdict_new();
|
||||
if (err) {
|
||||
qdict_put_obj(rsp, "error", qmp_build_error_object(err));
|
||||
error_free(err);
|
||||
rsp = qmp_error_response(err);
|
||||
} else if (ret) {
|
||||
rsp = qdict_new();
|
||||
qdict_put_obj(rsp, "return", ret);
|
||||
} else {
|
||||
qobject_unref(rsp);
|
||||
return NULL;
|
||||
rsp = NULL;
|
||||
}
|
||||
|
||||
return QOBJECT(rsp);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue