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