> > From: Jonathon Jongsma <jjongsma@xxxxxxxxxx> > > --- > server/reds-private.h | 1 + > server/reds.c | 32 +++++++++++++++----------------- > 2 files changed, 16 insertions(+), 17 deletions(-) > > diff --git a/server/reds-private.h b/server/reds-private.h > index 4d620ec..6ce02f9 100644 > --- a/server/reds-private.h > +++ b/server/reds-private.h > @@ -201,6 +201,7 @@ struct RedsState { > int spice_port; > int spice_secure_port; > SpiceCharDeviceInstance *vdagent; > + SpiceMigrateInstance *migration_interface; > }; > > #endif > diff --git a/server/reds.c b/server/reds.c > index c81efc9..ad4eb94 100644 > --- a/server/reds.c > +++ b/server/reds.c > @@ -129,8 +129,6 @@ static SpiceCoreInterfaceInternal core_interface_adapter > = { > .channel_event = adapter_channel_event, > }; > > -static SpiceMigrateInstance *migration_interface = NULL; > - > /* Debugging only variable: allow multiple client connections to the spice > * server */ > #define SPICE_DEBUG_ALLOW_MC_ENV "SPICE_DEBUG_ALLOW_MC" > @@ -402,13 +400,13 @@ static void reds_mig_cleanup(RedsState *reds) > > if (reds->mig_wait_connect || reds->mig_wait_disconnect) { > SpiceMigrateInterface *sif; > - spice_assert(migration_interface); > - sif = SPICE_CONTAINEROF(migration_interface->base.sif, > SpiceMigrateInterface, base); > + spice_assert(reds->migration_interface); > + sif = SPICE_CONTAINEROF(reds->migration_interface->base.sif, > SpiceMigrateInterface, base); > if (reds->mig_wait_connect) { > - sif->migrate_connect_complete(migration_interface); > + sif->migrate_connect_complete(reds->migration_interface); > } else { > if (sif->migrate_end_complete) { > - sif->migrate_end_complete(migration_interface); > + sif->migrate_end_complete(reds->migration_interface); > } > } > } > @@ -3270,7 +3268,7 @@ SPICE_GNUC_VISIBLE int > spice_server_add_interface(SpiceServer *reds, > > } else if (strcmp(interface->type, SPICE_INTERFACE_MIGRATION) == 0) { > spice_info("SPICE_INTERFACE_MIGRATION"); > - if (migration_interface) { > + if (reds->migration_interface) { > spice_warning("already have migration"); > return -1; > } > @@ -3280,8 +3278,8 @@ SPICE_GNUC_VISIBLE int > spice_server_add_interface(SpiceServer *reds, > spice_warning("unsupported migration interface"); > return -1; > } > - migration_interface = SPICE_CONTAINEROF(sin, SpiceMigrateInstance, > base); > - migration_interface->st = spice_new0(SpiceMigrateState, 1); > + reds->migration_interface = SPICE_CONTAINEROF(sin, > SpiceMigrateInstance, base); > + reds->migration_interface->st = spice_new0(SpiceMigrateState, 1); > } > > return 0; > @@ -3869,7 +3867,7 @@ SPICE_GNUC_VISIBLE int > spice_server_migrate_connect(SpiceServer *s, const char* > int try_seamless; > > spice_info(NULL); > - spice_assert(migration_interface); > + spice_assert(s->migration_interface); > spice_assert(reds == s); > > if (reds->expect_migrate) { > @@ -3877,10 +3875,10 @@ SPICE_GNUC_VISIBLE int > spice_server_migrate_connect(SpiceServer *s, const char* > main_channel_migrate_src_complete(reds->main_channel, FALSE); > } > > - sif = SPICE_CONTAINEROF(migration_interface->base.sif, > SpiceMigrateInterface, base); > + sif = SPICE_CONTAINEROF(s->migration_interface->base.sif, > SpiceMigrateInterface, base); > > if (!reds_set_migration_dest_info(dest, port, secure_port, > cert_subject)) { > - sif->migrate_connect_complete(migration_interface); > + sif->migrate_connect_complete(s->migration_interface); > return -1; > } > > @@ -3906,7 +3904,7 @@ SPICE_GNUC_VISIBLE int > spice_server_migrate_connect(SpiceServer *s, const char* > reds_mig_release(reds); > spice_info("no client connected"); > } > - sif->migrate_connect_complete(migration_interface); > + sif->migrate_connect_complete(s->migration_interface); > } > > return 0; > @@ -3917,7 +3915,7 @@ SPICE_GNUC_VISIBLE int > spice_server_migrate_info(SpiceServer *s, const char* des > const char* cert_subject) > { > spice_info(NULL); > - spice_assert(!migration_interface); > + spice_assert(!s->migration_interface); > spice_assert(reds == s); > > if (!reds_set_migration_dest_info(dest, port, secure_port, > cert_subject)) { > @@ -3943,10 +3941,10 @@ SPICE_GNUC_VISIBLE int > spice_server_migrate_end(SpiceServer *s, int completed) > > spice_info(NULL); > > - spice_assert(migration_interface); > + spice_assert(s->migration_interface); > spice_assert(reds == s); > > - sif = SPICE_CONTAINEROF(migration_interface->base.sif, > SpiceMigrateInterface, base); > + sif = SPICE_CONTAINEROF(s->migration_interface->base.sif, > SpiceMigrateInterface, base); > if (completed && !reds->expect_migrate && reds->num_clients) { > spice_warning("spice_server_migrate_info was not called, > disconnecting clients"); > reds_disconnect(reds); > @@ -3963,7 +3961,7 @@ SPICE_GNUC_VISIBLE int > spice_server_migrate_end(SpiceServer *s, int completed) > return 0; > complete: > if (sif->migrate_end_complete) { > - sif->migrate_end_complete(migration_interface); > + sif->migrate_end_complete(s->migration_interface); > } > return ret; > } Acked-by: Frediano Ziglio <fziglio@xxxxxxxxxx> Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel