Make sure to resume the monitor only after flushing out outstanding
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 6 Nov 2008 15:30:22 +0000 (15:30 +0000)
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 6 Nov 2008 15:30:22 +0000 (15:30 +0000)
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

migration-tcp.c

index 698cd05..f13dc0d 100644 (file)
@@ -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;
 }