diff options
author | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-11-06 15:30:22 +0000 |
---|---|---|
committer | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-11-06 15:30:22 +0000 |
commit | 825a4929dac5d991c384bd9ee18c693458f7f055 (patch) | |
tree | 0025fe98e76dcc283aafa2471da82ca251706a89 /migration-tcp.c | |
parent | 978d5d73edeea8d5c725c43b7bd23fd897cac7fa (diff) | |
download | qemu-825a4929dac5d991c384bd9ee18c693458f7f055.zip qemu-825a4929dac5d991c384bd9ee18c693458f7f055.tar.gz qemu-825a4929dac5d991c384bd9ee18c693458f7f055.tar.bz2 |
Make sure to resume the monitor only after flushing out outstanding
network traffic.
This was bug was reported by Chris Lalancette.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5640 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'migration-tcp.c')
-rw-r--r-- | migration-tcp.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/migration-tcp.c b/migration-tcp.c index 698cd05..f13dc0d 100644 --- a/migration-tcp.c +++ b/migration-tcp.c @@ -40,19 +40,11 @@ typedef struct FdMigrationState do { } while (0) #endif -int debug_me = 0; - static void tcp_cleanup(FdMigrationState *s) { - if (s->detach == 2) { - monitor_resume(); - s->detach = 0; - } - qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL); if (s->file) { - debug_me = 1; dprintf("closing file\n"); qemu_fclose(s->file); } @@ -60,6 +52,12 @@ static void tcp_cleanup(FdMigrationState *s) if (s->fd != -1) close(s->fd); + /* Don't resume monitor until we've flushed all of the buffers */ + if (s->detach == 2) { + monitor_resume(); + s->detach = 0; + } + s->fd = -1; } |