Revision de253f14 monitor.c
b/monitor.c | ||
---|---|---|
353 | 353 |
QDECREF(json); |
354 | 354 |
} |
355 | 355 |
|
356 |
static QDict *build_qmp_error_dict(const QError *err) |
|
357 |
{ |
|
358 |
QObject *obj; |
|
359 |
|
|
360 |
obj = qobject_from_jsonf("{ 'error': { 'class': %s, 'desc': %p } }", |
|
361 |
ErrorClass_lookup[err->err_class], |
|
362 |
qerror_human(err)); |
|
363 |
|
|
364 |
return qobject_to_qdict(obj); |
|
365 |
} |
|
366 |
|
|
356 | 367 |
static void monitor_protocol_emitter(Monitor *mon, QObject *data) |
357 | 368 |
{ |
358 | 369 |
QDict *qmp; |
359 | 370 |
|
360 | 371 |
trace_monitor_protocol_emitter(mon); |
361 | 372 |
|
362 |
qmp = qdict_new(); |
|
363 |
|
|
364 | 373 |
if (!monitor_has_error(mon)) { |
365 | 374 |
/* success response */ |
375 |
qmp = qdict_new(); |
|
366 | 376 |
if (data) { |
367 | 377 |
qobject_incref(data); |
368 | 378 |
qdict_put_obj(qmp, "return", data); |
... | ... | |
372 | 382 |
} |
373 | 383 |
} else { |
374 | 384 |
/* error response */ |
375 |
qdict_put(mon->error->error, "desc", qerror_human(mon->error)); |
|
376 |
qdict_put(qmp, "error", mon->error->error); |
|
377 |
QINCREF(mon->error->error); |
|
385 |
qmp = build_qmp_error_dict(mon->error); |
|
378 | 386 |
QDECREF(mon->error); |
379 | 387 |
mon->error = NULL; |
380 | 388 |
} |
Also available in: Unified diff