monitor: Wean monitor_protocol_emitter() off mon->error

Move mon->error handling to its caller handle_qmp_command().

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
Markus Armbruster 2015-03-06 10:47:08 +01:00
parent 4086182fcd
commit 70ea0c5899
1 changed files with 7 additions and 6 deletions

View File

@ -407,13 +407,14 @@ static QDict *build_qmp_error_dict(const QError *err)
return qobject_to_qdict(obj);
}
static void monitor_protocol_emitter(Monitor *mon, QObject *data)
static void monitor_protocol_emitter(Monitor *mon, QObject *data,
QError *err)
{
QDict *qmp;
trace_monitor_protocol_emitter(mon);
if (!monitor_has_error(mon)) {
if (!err) {
/* success response */
qmp = qdict_new();
if (data) {
@ -425,9 +426,7 @@ static void monitor_protocol_emitter(Monitor *mon, QObject *data)
}
} else {
/* error response */
qmp = build_qmp_error_dict(mon->error);
QDECREF(mon->error);
mon->error = NULL;
qmp = build_qmp_error_dict(err);
}
if (mon->mc->id) {
@ -5039,8 +5038,10 @@ static void handle_qmp_command(JSONMessageParser *parser, QList *tokens)
}
err_out:
monitor_protocol_emitter(mon, data);
monitor_protocol_emitter(mon, data, mon->error);
qobject_decref(data);
QDECREF(mon->error);
mon->error = NULL;
QDECREF(input);
QDECREF(args);
}