diff --git a/migration.c b/migration.c index 2c939514234de204ef6e5004f77c38d929b159a3..62e030487d5512f63ca318e5508d9abf72eee9f7 100644 --- a/migration.c +++ b/migration.c @@ -287,10 +287,11 @@ static void migrate_fd_completed(MigrationState *s) static void migrate_fd_put_notify(void *opaque) { MigrationState *s = opaque; + int ret; qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL); - qemu_file_put_notify(s->file); - if (s->file && qemu_file_get_error(s->file)) { + ret = qemu_file_put_notify(s->file); + if (ret) { migrate_fd_error(s); } } diff --git a/qemu-file.h b/qemu-file.h index 8dd920790c28c98bbf40bafe4e0f17f8b1f72338..9c8985b61018132473e9327886d378a33617fea2 100644 --- a/qemu-file.h +++ b/qemu-file.h @@ -107,7 +107,7 @@ int qemu_file_get_error(QEMUFile *f); /* Try to send any outstanding data. This function is useful when output is * halted due to rate limiting or EAGAIN errors occur as it can be used to * resume output. */ -void qemu_file_put_notify(QEMUFile *f); +int qemu_file_put_notify(QEMUFile *f); static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv) { diff --git a/savevm.c b/savevm.c index dee689998bff6f8bb19017c005307e3e04b96a63..b080d3725881e68560706e61ac875cfbcf2d01bf 100644 --- a/savevm.c +++ b/savevm.c @@ -523,9 +523,9 @@ int qemu_fclose(QEMUFile *f) return ret; } -void qemu_file_put_notify(QEMUFile *f) +int qemu_file_put_notify(QEMUFile *f) { - f->put_buffer(f->opaque, NULL, 0, 0); + return f->put_buffer(f->opaque, NULL, 0, 0); } void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size)