mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
qmp: Call monitor_set_cur() only in qmp_dispatch()
The correct way to set the current monitor for a coroutine handler will be different than for a blocking handler, so monitor_set_cur() needs to be called in qmp_dispatch(). Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20201005155855.256490-7-kwolf@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
57d3635e42
commit
41725fa7ed
6 changed files with 20 additions and 13 deletions
|
@ -89,7 +89,7 @@ bool qmp_is_oob(const QDict *dict)
|
|||
}
|
||||
|
||||
QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
|
||||
bool allow_oob)
|
||||
bool allow_oob, Monitor *cur_mon)
|
||||
{
|
||||
Error *err = NULL;
|
||||
bool oob;
|
||||
|
@ -152,7 +152,13 @@ QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
|
|||
args = qdict_get_qdict(dict, "arguments");
|
||||
qobject_ref(args);
|
||||
}
|
||||
|
||||
assert(monitor_cur() == NULL);
|
||||
monitor_set_cur(cur_mon);
|
||||
|
||||
cmd->fn(args, &ret, &err);
|
||||
|
||||
monitor_set_cur(NULL);
|
||||
qobject_unref(args);
|
||||
if (err) {
|
||||
/* or assert(!ret) after reviewing all handlers: */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue