qmp: Don't let malformed in-band commands jump the queue
commit69240fe62d1ae02257bc0694a11c478b10378948
authorMarkus Armbruster <armbru@redhat.com>
Tue, 3 Jul 2018 08:53:43 +0000 (3 10:53 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Tue, 3 Jul 2018 21:18:56 +0000 (3 23:18 +0200)
tree27c70b833e5435b942932de13221b49983e8e1b4
parente8f4a22168f573633f31fad3d6bfcbe5f0259b28
qmp: Don't let malformed in-band commands jump the queue

handle_qmp_command() reports certain errors right away.  This is wrong
when OOB is enabled, because the errors can "jump the queue" then, as
the previous commit demonstrates.

To fix, we need to delay errors until dispatch.  Do that for semantic
errors, mostly by reverting ill-advised parts of commit cf869d53172
"qmp: support out-of-band (oob) execution".  Bonus: doesn't run
qmp_dispatch_check_obj() twice, once in handle_qmp_command(), and
again in do_qmp_dispatch().  That's also due to commit cf869d53172.

The next commit will fix queue jumping for syntax errors.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20180703085358.13941-18-armbru@redhat.com>
include/qapi/qmp/dispatch.h
monitor.c
qapi/qmp-dispatch.c
tests/qmp-test.c