On Fri, Oct 03, 2014 at 06:47:18PM +0100, Dr. David Alan Gilbert (git) wrote: > From: Cristian Klein <cristian.kl...@cs.umu.se>
This patch really, really requires a rationale in the commit message. The reason it's necessary is certainly not obvious. > > Signed-off-by: Cristian Klein <cristian.kl...@cs.umu.se> > --- > migration-fd.c | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/migration-fd.c b/migration-fd.c > index d2e523a..129da99 100644 > --- a/migration-fd.c > +++ b/migration-fd.c > @@ -31,13 +31,29 @@ > do { } while (0) > #endif > > +static bool fd_is_socket(int fd) > +{ > + struct stat stat; > + int ret = fstat(fd, &stat); > + if (ret == -1) { > + /* When in doubt say no */ > + return false; > + } > + return S_ISSOCK(stat.st_mode); > +} > + > void fd_start_outgoing_migration(MigrationState *s, const char *fdname, > Error **errp) > { > int fd = monitor_get_fd(cur_mon, fdname, errp); > if (fd == -1) { > return; > } > - s->file = qemu_fdopen(fd, "wb"); > + > + if (fd_is_socket(fd)) { > + s->file = qemu_fopen_socket(fd, "wb"); > + } else { > + s->file = qemu_fdopen(fd, "wb"); > + } > > migrate_fd_connect(s); > } > @@ -58,7 +74,11 @@ void fd_start_incoming_migration(const char *infd, Error > **errp) > DPRINTF("Attempting to start an incoming migration via fd\n"); > > fd = strtol(infd, NULL, 0); > - f = qemu_fdopen(fd, "rb"); > + if (fd_is_socket(fd)) { > + f = qemu_fopen_socket(fd, "rb"); > + } else { > + f = qemu_fdopen(fd, "rb"); > + } > if(f == NULL) { > error_setg_errno(errp, errno, "failed to open the source > descriptor"); > return; -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
pgpvEc2jrX_Jv.pgp
Description: PGP signature