]> xenbits.xensource.com Git - xen.git/commitdiff
bitkeeper revision 1.1159.258.35 (42305966D0gCjlR6KGQJ4LZR2FIX3g)
authoriap10@freefall.cl.cam.ac.uk <iap10@freefall.cl.cam.ac.uk>
Thu, 10 Mar 2005 14:27:50 +0000 (14:27 +0000)
committeriap10@freefall.cl.cam.ac.uk <iap10@freefall.cl.cam.ac.uk>
Thu, 10 Mar 2005 14:27:50 +0000 (14:27 +0000)
Fix to xfrd stream handling which was messing up save/restore/migrate on some systems.
Signed-off-by: ian@xensource.com
tools/libxutil/file_stream.c
tools/xfrd/xfrd.c

index 40391f7fa64e1c3373f8d38fd1fc2e0da2aefbda..b5526d84a1485df7e39f4c5d93e67886edd9dd13 100644 (file)
@@ -69,18 +69,28 @@ IOStream *iostdout = &_iostdout;
 /** IOStream for stderr. */
 IOStream *iostderr = &_iostderr;
 
-/** Get the underlying FILE*.
- * 
+/* Get the underlying FILE*.
+ *
  * @param s file stream
  * @return the stream s wraps
  */
 static inline FILE *get_file(IOStream *s){
-    switch((long)s->data){
-    case 1: s->data = stdin; break;
-    case 2: s->data = stdout; break;
-    case 3: s->data = stderr; break;
-    }
-    return (FILE*)s->data;
+     FILE *data = NULL;
+     switch((long)s->data){
+     case 1:
+         data = stdin;
+         break;
+     case 2:
+         data = stdout;
+         break;
+     case 3:
+         data = stderr;
+         break;
+     default:
+         data = (FILE*)s->data;
+         break;
+     }
+     return data;
 }
 
 /** Control buffering on the underlying stream, like setvbuf().
index 656abc0bc4ab81229d43d55ffedfa9eadc0daa0c..bd25ad8cd29ffde490293737fb7d317cddb26196 100644 (file)
@@ -1007,6 +1007,8 @@ int xfrd_accept(Args *args, int sock){
     }
     iprintf("> Accepted connection from %s:%d on %d\n",
             inet_ntoa(peer_in.sin_addr), htons(peer_in.sin_port), sock);
+    fflush(stdout);
+    fflush(stderr);
     pid = fork();
     if(pid > 0){
         // Parent, fork succeeded.