aboutsummaryrefslogtreecommitdiff
path: root/monitor.c
diff options
context:
space:
mode:
authorLuiz Capitulino <lcapitulino@redhat.com>2010-04-06 18:55:54 -0300
committerLuiz Capitulino <lcapitulino@redhat.com>2010-04-26 16:36:01 -0300
commit0e8d2b5575938b8876a3c4bb66ee13c5d306fb6d (patch)
treecd646883393e059e29c83e434a7cb9055d3441c3 /monitor.c
parent04f8c053cca9c329eebb761f3a1ffef3d349b84c (diff)
downloadqemu-0e8d2b5575938b8876a3c4bb66ee13c5d306fb6d.zip
qemu-0e8d2b5575938b8876a3c4bb66ee13c5d306fb6d.tar.gz
qemu-0e8d2b5575938b8876a3c4bb66ee13c5d306fb6d.tar.bz2
Monitor: Return before exiting with 'quit'
The 'quit' Monitor command (implemented by do_quit()) calls exit() directly, this is problematic under QMP because QEMU exits before having a chance to send the ok response. Clients don't know if QEMU exited because of a problem or because the 'quit' command has been executed. This commit fixes that by moving the exit() call to the main loop, so that do_quit() requests the system to quit, instead of calling exit() directly. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Diffstat (limited to 'monitor.c')
-rw-r--r--monitor.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/monitor.c b/monitor.c
index ef84298..0dc24a2 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1017,7 +1017,8 @@ static void do_info_cpu_stats(Monitor *mon)
*/
static int do_quit(Monitor *mon, const QDict *qdict, QObject **ret_data)
{
- exit(0);
+ monitor_suspend(mon);
+ qemu_system_exit_request();
return 0;
}