From c3918e84f7b7e04a512b45127312f8f59f0fe243 Mon Sep 17 00:00:00 2001 From: "iap10@freefall.cl.cam.ac.uk" Date: Thu, 10 Mar 2005 14:27:50 +0000 Subject: [PATCH] bitkeeper revision 1.1159.258.35 (42305966D0gCjlR6KGQJ4LZR2FIX3g) 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 | 26 ++++++++++++++++++-------- tools/xfrd/xfrd.c | 2 ++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/tools/libxutil/file_stream.c b/tools/libxutil/file_stream.c index 40391f7fa6..b5526d84a1 100644 --- a/tools/libxutil/file_stream.c +++ b/tools/libxutil/file_stream.c @@ -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(). diff --git a/tools/xfrd/xfrd.c b/tools/xfrd/xfrd.c index 656abc0bc4..bd25ad8cd2 100644 --- a/tools/xfrd/xfrd.c +++ b/tools/xfrd/xfrd.c @@ -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. -- 2.39.5