[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 22/34] qapi: Simplify how qmp_dispatch() deals with QCO_NO
From: |
Marc-André Lureau |
Subject: |
Re: [PATCH v3 22/34] qapi: Simplify how qmp_dispatch() deals with QCO_NO_SUCCESS_RESP |
Date: |
Mon, 16 Mar 2020 18:28:25 +0100 |
On Sun, Mar 15, 2020 at 3:51 PM Markus Armbruster <address@hidden> wrote:
>
> Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Marc-André Lureau <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
>
>
--
Marc-André Lureau
- 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, 2020/03/15
- Re: [PATCH v3 22/34] qapi: Simplify how qmp_dispatch() deals with QCO_NO_SUCCESS_RESP,
Marc-André Lureau <=
- [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