qmp qemu-ga: Fix qemu-ga not to accept "control"

Commit cf869d5317 "qmp: support out-of-band (oob) execution"
accidentally made qemu-ga accept and ignore "control".  Fix that.

Out-of-band execution in a monitor that doesn't support it now fails
with

    {"error": {"class": "GenericError", "desc": "QMP input member 'control' is unexpected"}}

instead of

    {"error": {"class": "GenericError", "desc": "Please enable out-of-band first for the session during capabilities negotiation"}}

The old description is suboptimal when out-of-band cannot not be
enabled, or the command doesn't support out-of-band execution.

The new description is a bit unspecific, but it'll do.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20180703085358.13941-12-armbru@redhat.com>
This commit is contained in:
Markus Armbruster 2018-07-03 10:53:37 +02:00
parent d4d7ed731c
commit 674ed7228f
6 changed files with 24 additions and 24 deletions

View file

@ -245,16 +245,17 @@ static void test_qga_invalid_id(gconstpointer fix)
static void test_qga_invalid_oob(gconstpointer fix)
{
/* FIXME "control" is ignored; it should be rejected */
const TestFixture *fixture = fix;
QDict *ret;
QDict *ret, *error;
const char *class;
ret = qmp_fd(fixture->fd, "{'execute': 'guest-ping',"
" 'control': {'run-oob': true}}");
g_assert_nonnull(ret);
qmp_assert_no_error(ret);
qdict_get_qdict(ret, "return");
error = qdict_get_qdict(ret, "error");
class = qdict_get_try_str(error, "class");
g_assert_cmpstr(class, ==, "GenericError");
qobject_unref(ret);
}