}
}
-static void migration_connect_set_error(MigrationState *s, const Error *error)
+static void migration_connect_error_propagate(MigrationState *s, Error *error)
{
MigrationStatus current = s->state;
MigrationStatus next;
migrate_set_state(&s->state, current, next);
migrate_set_error(s, error);
+ error_free(error);
}
void migration_cancel(void)
out:
if (local_err) {
- migration_connect_set_error(s, local_err);
+ migration_connect_error_propagate(s, error_copy(local_err));
error_propagate(errp, local_err);
}
}
if (!resume_requested) {
yank_unregister_instance(MIGRATION_YANK_INSTANCE);
}
- migration_connect_set_error(s, local_err);
+ migration_connect_error_propagate(s, error_copy(local_err));
error_propagate(errp, local_err);
return;
}
s->expected_downtime = migrate_downtime_limit();
if (error_in) {
- migration_connect_set_error(s, error_in);
+ migration_connect_error_propagate(s, error_in);
if (resume) {
/*
* Don't do cleanup for resume if channel is invalid, but only dump