[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 22/34] qapi: Simplify how qmp_dispatch() deals with QCO_NO_SUC
From: |
Markus Armbruster |
Subject: |
[PATCH v3 22/34] qapi: Simplify how qmp_dispatch() deals with QCO_NO_SUCCESS_RESP |
Date: |
Sun, 15 Mar 2020 15:46:41 +0100 |
Signed-off-by: Markus Armbruster <address@hidden>
---
qapi/qmp-dispatch.c | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
index a588072523..550d1fe8d2 100644
--- a/qapi/qmp-dispatch.c
+++ b/qapi/qmp-dispatch.c
@@ -106,7 +106,7 @@ QDict *qmp_dispatch(QmpCommandList *cmds, QObject *request,
QDict *dict = qobject_to(QDict, request);
QObject *id = dict ? qdict_get(dict, "id") : NULL;
QObject *ret = NULL;
- QDict *rsp;
+ QDict *rsp = NULL;
dict = qmp_dispatch_check_obj(request, allow_oob, &err);
if (!dict) {
@@ -151,31 +151,32 @@ QDict *qmp_dispatch(QmpCommandList *cmds, QObject
*request,
args = qdict_get_qdict(dict, "arguments");
qobject_ref(args);
}
-
cmd->fn(args, &ret, &err);
+ qobject_unref(args);
if (err) {
- ;
- } else if (cmd->options & QCO_NO_SUCCESS_RESP) {
+ goto out;
+ }
+
+ if (cmd->options & QCO_NO_SUCCESS_RESP) {
g_assert(!ret);
+ return NULL;
} else if (!ret) {
/* TODO turn into assertion */
ret = QOBJECT(qdict_new());
}
- qobject_unref(args);
+ rsp = qdict_new();
+ qdict_put_obj(rsp, "return", ret);
out:
if (err) {
+ assert(!rsp);
rsp = qmp_error_response(err);
- } else if (ret) {
- rsp = qdict_new();
- qdict_put_obj(rsp, "return", ret);
- } else {
- /* Can only happen for commands with QCO_NO_SUCCESS_RESP */
- rsp = NULL;
}
- if (rsp && id) {
+ assert(rsp);
+
+ if (id) {
qdict_put_obj(rsp, "id", qobject_ref(id));
}
--
2.21.1
- Re: [PATCH v3 11/34] qapi/schema: Clean up around QAPISchemaEntity.connect_doc(), (continued)
- [PATCH v3 01/34] qemu-doc: Belatedly document QMP command arg & result deprecation, Markus Armbruster, 2020/03/15
- [PATCH v3 17/34] qapi/schema: Reorder classes so related ones are together, Markus Armbruster, 2020/03/15
- [PATCH v3 19/34] qapi/schema: Call QAPIDoc.connect_member() in just one place, Markus Armbruster, 2020/03/15
- [PATCH v3 22/34] qapi: Simplify how qmp_dispatch() deals with QCO_NO_SUCCESS_RESP,
Markus Armbruster <=
- [PATCH v3 25/34] qapi: New special feature flag "deprecated", Markus Armbruster, 2020/03/15
- [PATCH v3 13/34] qapi: Consistently put @features parameter right after @ifcond, Markus Armbruster, 2020/03/15
- [PATCH v3 12/34] qapi: Add feature flags to remaining definitions, Markus Armbruster, 2020/03/15