Make migration_connect_set_error() take ownership of the error always. Paving way for making migrate_set_error() to take ownership.
When at it, renaming it to migration_connect_error_propagate(), following Error API, to imply the Error object ownership transition. NOTE: this patch also makes migration_connect() to take ownership of the Error passed in. Signed-off-by: Peter Xu <[email protected]> --- migration/channel.c | 1 - migration/migration.c | 9 +++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/migration/channel.c b/migration/channel.c index 462cc183e1..92435fa7f7 100644 --- a/migration/channel.c +++ b/migration/channel.c @@ -95,7 +95,6 @@ void migration_channel_connect(MigrationState *s, } } migration_connect(s, error); - error_free(error); } diff --git a/migration/migration.c b/migration/migration.c index b316ee01ab..0ff8b31a88 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1575,7 +1575,7 @@ static void migrate_error_free(MigrationState *s) } } -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; @@ -1602,6 +1602,7 @@ static void migration_connect_set_error(MigrationState *s, const Error *error) migrate_set_state(&s->state, current, next); migrate_set_error(s, error); + error_free(error); } void migration_cancel(void) @@ -2292,7 +2293,7 @@ void qmp_migrate(const char *uri, bool has_channels, 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); } } @@ -2337,7 +2338,7 @@ static void qmp_migrate_finish(MigrationAddress *addr, bool resume_requested, 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; } @@ -4039,7 +4040,7 @@ void migration_connect(MigrationState *s, Error *error_in) 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 -- 2.50.1
