aboutsummaryrefslogtreecommitdiff
path: root/migration-tcp.c
diff options
context:
space:
mode:
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-06 15:30:22 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-06 15:30:22 +0000
commit825a4929dac5d991c384bd9ee18c693458f7f055 (patch)
tree0025fe98e76dcc283aafa2471da82ca251706a89 /migration-tcp.c
parent978d5d73edeea8d5c725c43b7bd23fd897cac7fa (diff)
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.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/migration-tcp.c b/migration-tcp.c
index 698cd05d97..f13dc0da7d 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;
}