--- Changes since v3: - change _peek_migration_target() to _get_migration_target() - add separate 'success' argument to _on_migrate_connected() - revert to using asserts server/main-channel-client.c | 6 +++--- server/main-channel.c | 12 +++++++----- server/main-channel.h | 4 ++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/server/main-channel-client.c b/server/main-channel-client.c index 28d2839..b47b1e0 100644 --- a/server/main-channel-client.c +++ b/server/main-channel-client.c @@ -439,7 +439,7 @@ void main_channel_client_handle_migrate_connected(MainChannelClient *mcc, mcc->priv->mig_wait_connect = FALSE; mcc->priv->mig_connect_ok = success; - main_channel_on_migrate_connected(main_channel, seamless && success); + main_channel_on_migrate_connected(main_channel, success, seamless); } else { if (success) { spice_printerr("client %p MIGRATE_CANCEL", client); @@ -872,7 +872,7 @@ static void main_channel_marshall_notify(RedChannelClient *rcc, static void main_channel_fill_migrate_dst_info(MainChannel *main_channel, SpiceMigrationDstInfo *dst_info) { - const RedsMigSpice *mig_dst = main_channel_peek_migration_target(main_channel); + const RedsMigSpice *mig_dst = main_channel_get_migration_target(main_channel); dst_info->port = mig_dst->port; dst_info->sport = mig_dst->sport; dst_info->host_size = strlen(mig_dst->host) + 1; @@ -936,7 +936,7 @@ static void main_channel_marshall_migrate_switch(SpiceMarshaller *m, RedChannelC spice_printerr(""); red_channel_client_init_send_data(rcc, SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST, item); main_ch = SPICE_CONTAINEROF(channel, MainChannel, base); - mig_target = main_channel_peek_migration_target(main_ch); + mig_target = main_channel_get_migration_target(main_ch); migrate.port = mig_target->port; migrate.sport = mig_target->sport; migrate.host_size = strlen(mig_target->host) + 1; diff --git a/server/main-channel.c b/server/main-channel.c index 2d2783d..0b90c32 100644 --- a/server/main-channel.c +++ b/server/main-channel.c @@ -420,17 +420,19 @@ int main_channel_migrate_src_complete(MainChannel *main_chan, int success) return semi_seamless_count; } -void main_channel_on_migrate_connected(MainChannel *main_channel, gboolean seamless) +void main_channel_on_migrate_connected(MainChannel *main_channel, + gboolean success, + gboolean seamless) { - g_return_if_fail(main_channel->num_clients_mig_wait); - g_warn_if_fail(!seamless || main_channel->num_clients_mig_wait == 1); + spice_assert(main_channel->num_clients_mig_wait); + spice_assert(!seamless || main_channel->num_clients_mig_wait == 1); if (!--main_channel->num_clients_mig_wait) { reds_on_main_migrate_connected(red_channel_get_server(RED_CHANNEL(main_channel)), - seamless); + seamless && success); } } -const RedsMigSpice* main_channel_peek_migration_target(MainChannel *main_chan) +const RedsMigSpice* main_channel_get_migration_target(MainChannel *main_chan) { return &main_chan->mig_target; } diff --git a/server/main-channel.h b/server/main-channel.h index 529e7be..99022c7 100644 --- a/server/main-channel.h +++ b/server/main-channel.h @@ -78,9 +78,9 @@ void main_channel_migrate_switch(MainChannel *main_chan, RedsMigSpice *mig_targe int main_channel_migrate_connect(MainChannel *main_channel, RedsMigSpice *mig_target, int try_seamless); void main_channel_migrate_cancel_wait(MainChannel *main_chan); -const RedsMigSpice* main_channel_peek_migration_target(MainChannel *main_chan); +const RedsMigSpice* main_channel_get_migration_target(MainChannel *main_chan); /* returns the number of clients for which SPICE_MSG_MAIN_MIGRATE_END was sent*/ int main_channel_migrate_src_complete(MainChannel *main_chan, int success); -void main_channel_on_migrate_connected(MainChannel *main_channel, gboolean seamless); +void main_channel_on_migrate_connected(MainChannel *main_channel, gboolean success, gboolean seamless); #endif -- 2.7.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel