mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-06 06:27:41 -07:00
qmp: Make "id" optional again even in "oob" monitors
Commitcf869d5317"qmp: support out-of-band (oob) execution" made "id" mandatory for all commands when the client accepted capability "oob". This is rather onerous when you play with QMP by hand, and unnecessarily so: only out-of-band commands need an ID for reliable matching of response to command. Revert that part of commitcf869d5317for now, but have documentation advise on the need to use "id" with out-of-band commands. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20180703085358.13941-8-armbru@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
2970b4461f
commit
80cd93bd96
2 changed files with 7 additions and 13 deletions
|
|
@ -103,16 +103,13 @@ The format for command execution is:
|
|||
required. Each command documents what contents will be considered
|
||||
valid when handling the json-argument
|
||||
- The "id" member is a transaction identification associated with the
|
||||
command execution. It is required for all commands if the OOB -
|
||||
capability was enabled at startup, and optional otherwise. The same
|
||||
"id" field will be part of the response if provided. The "id"
|
||||
member can be any json-value. A json-number incremented for each
|
||||
successive command works fine.
|
||||
command execution, it is optional and will be part of the response
|
||||
if provided. The "id" member can be any json-value. A json-number
|
||||
incremented for each successive command works fine.
|
||||
- The optional "control" member further specifies how the command is
|
||||
to be executed. Currently, its only member is optional "run-oob".
|
||||
See section "2.3.1 Out-of-band execution" for details.
|
||||
|
||||
|
||||
2.3.1 Out-of-band execution
|
||||
---------------------------
|
||||
|
||||
|
|
@ -128,6 +125,10 @@ possibly overtaking prior in-band commands. The client may therefore
|
|||
receive such a command's response before responses from prior in-band
|
||||
commands.
|
||||
|
||||
To be able to match responses back to their commands, the client needs
|
||||
to pass "id" with out-of-band commands. Passing it with all commands
|
||||
is recommended for clients that accept capability "oob".
|
||||
|
||||
To execute a command out-of-band, the client puts "run-oob": true into
|
||||
execute's member "control".
|
||||
|
||||
|
|
|
|||
|
|
@ -4292,13 +4292,6 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
|
|||
|
||||
id = qdict_get(qdict, "id");
|
||||
|
||||
/* When OOB is enabled, the "id" field is mandatory. */
|
||||
if (qmp_oob_enabled(mon) && !id) {
|
||||
error_setg(&err, "Out-of-band capability requires that "
|
||||
"every command contains an 'id' field");
|
||||
goto err;
|
||||
}
|
||||
|
||||
req_obj = g_new0(QMPRequest, 1);
|
||||
req_obj->mon = mon;
|
||||
req_obj->id = qobject_ref(id);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue