qmp: fix qmp_capabilities error regression
When someone sends a command before QMP handshake, the error used to be like this: {"execute": "query-cpus"} {"error": {"class": "CommandNotFound", "desc": "Expecting capabilities negotiation with 'qmp_capabilities'"}} While aftercf869d5317
it becomes: {"execute": "query-cpus"} {"error": {"class": "CommandNotFound", "desc": "The command query-cpus has not been found"}} Fix it back to the nicer one. Fixes:cf869d5317
("qmp: support out-of-band (oob) execution", 2018-03-19) Reported-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <20180326063901.27425-2-peterx@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> [eblake: commit message grammar tweaks] Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
625eaca9e5
commit
9ddb7456c8
23
monitor.c
23
monitor.c
@ -1203,8 +1203,14 @@ static bool qmp_cmd_oob_check(Monitor *mon, QDict *req, Error **errp)
|
||||
|
||||
cmd = qmp_find_command(mon->qmp.commands, command);
|
||||
if (!cmd) {
|
||||
error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,
|
||||
"The command %s has not been found", command);
|
||||
if (mon->qmp.commands == &qmp_cap_negotiation_commands) {
|
||||
error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,
|
||||
"Expecting capabilities negotiation "
|
||||
"with 'qmp_capabilities'");
|
||||
} else {
|
||||
error_set(errp, ERROR_CLASS_COMMAND_NOT_FOUND,
|
||||
"The command %s has not been found", command);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -4027,7 +4033,6 @@ static void monitor_qmp_dispatch_one(QMPRequest *req_obj)
|
||||
{
|
||||
Monitor *mon, *old_mon;
|
||||
QObject *req, *rsp = NULL, *id;
|
||||
QDict *qdict = NULL;
|
||||
bool need_resume;
|
||||
|
||||
req = req_obj->req;
|
||||
@ -4050,18 +4055,6 @@ static void monitor_qmp_dispatch_one(QMPRequest *req_obj)
|
||||
|
||||
cur_mon = old_mon;
|
||||
|
||||
if (mon->qmp.commands == &qmp_cap_negotiation_commands) {
|
||||
qdict = qdict_get_qdict(qobject_to(QDict, rsp), "error");
|
||||
if (qdict
|
||||
&& !g_strcmp0(qdict_get_try_str(qdict, "class"),
|
||||
QapiErrorClass_str(ERROR_CLASS_COMMAND_NOT_FOUND))) {
|
||||
/* Provide a more useful error message */
|
||||
qdict_del(qdict, "desc");
|
||||
qdict_put_str(qdict, "desc", "Expecting capabilities negotiation"
|
||||
" with 'qmp_capabilities'");
|
||||
}
|
||||
}
|
||||
|
||||
/* Respond if necessary */
|
||||
monitor_qmp_respond(mon, rsp, NULL, id);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user