|
|
542743 |
From ab42be2b00d12d0bc98c6ddea08a7f969e83b2ac Mon Sep 17 00:00:00 2001
|
|
|
542743 |
From: Frediano Ziglio <freddy77@gmail.com>
|
|
|
542743 |
Date: Mon, 10 Aug 2020 15:35:26 +0100
|
|
|
542743 |
Subject: [PATCH 29/31] channel-main: Copy SpiceMigrationDstInfo into
|
|
|
542743 |
spice_migrate
|
|
|
542743 |
|
|
|
542743 |
The message could disappear while the structure is used.
|
|
|
542743 |
|
|
|
542743 |
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
|
|
|
542743 |
Acked-by: Uri Lublin <uril@redhat.com>
|
|
|
542743 |
---
|
|
|
542743 |
src/channel-main.c | 15 +++++++++++----
|
|
|
542743 |
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
|
542743 |
|
|
|
542743 |
diff --git a/src/channel-main.c b/src/channel-main.c
|
|
|
542743 |
index 8caf727..5f81975 100644
|
|
|
542743 |
--- a/src/channel-main.c
|
|
|
542743 |
+++ b/src/channel-main.c
|
|
|
542743 |
@@ -121,7 +121,7 @@ struct _SpiceMainChannelPrivate {
|
|
|
542743 |
|
|
|
542743 |
struct spice_migrate {
|
|
|
542743 |
struct coroutine *from;
|
|
|
542743 |
- SpiceMigrationDstInfo *info;
|
|
|
542743 |
+ SpiceMigrationDstInfo info;
|
|
|
542743 |
SpiceSession *session;
|
|
|
542743 |
int ref_count;
|
|
|
542743 |
guint nchannels;
|
|
|
542743 |
@@ -2258,6 +2258,8 @@ static void
|
|
|
542743 |
spice_migrate_unref(spice_migrate *mig)
|
|
|
542743 |
{
|
|
|
542743 |
if (mig != NULL && --mig->ref_count == 0) {
|
|
|
542743 |
+ g_free(mig->info.host_data);
|
|
|
542743 |
+ g_free(mig->info.cert_subject_data);
|
|
|
542743 |
g_free(mig);
|
|
|
542743 |
}
|
|
|
542743 |
}
|
|
|
542743 |
@@ -2396,7 +2398,6 @@ static gboolean migrate_connect(spice_migrate *mig)
|
|
|
542743 |
const char *host;
|
|
|
542743 |
|
|
|
542743 |
g_return_val_if_fail(mig != NULL, FALSE);
|
|
|
542743 |
- g_return_val_if_fail(mig->info != NULL, FALSE);
|
|
|
542743 |
g_return_val_if_fail(mig->nchannels == 0, FALSE);
|
|
|
542743 |
c = SPICE_CHANNEL(mig->src_channel)->priv;
|
|
|
542743 |
g_return_val_if_fail(c != NULL, FALSE);
|
|
|
542743 |
@@ -2404,7 +2405,7 @@ static gboolean migrate_connect(spice_migrate *mig)
|
|
|
542743 |
|
|
|
542743 |
spice_session_set_migration_state(mig->session, SPICE_SESSION_MIGRATION_CONNECTING);
|
|
|
542743 |
|
|
|
542743 |
- SpiceMigrationDstInfo *info = mig->info;
|
|
|
542743 |
+ SpiceMigrationDstInfo *info = &mig->info;
|
|
|
542743 |
SPICE_DEBUG("migrate_begin %u %s %d %d",
|
|
|
542743 |
info->host_size, info->host_data, info->port, info->sport);
|
|
|
542743 |
port = info->port;
|
|
|
542743 |
@@ -2461,7 +2462,13 @@ static void main_migrate_connect(SpiceChannel *channel,
|
|
|
542743 |
mig = spice_new0(spice_migrate, 1);
|
|
|
542743 |
mig->ref_count = 1;
|
|
|
542743 |
mig->src_channel = channel;
|
|
|
542743 |
- mig->info = dst_info;
|
|
|
542743 |
+ mig->info = *dst_info;
|
|
|
542743 |
+ if (dst_info->host_data) {
|
|
|
542743 |
+ mig->info.host_data = (void *) g_strdup((char*) dst_info->host_data);
|
|
|
542743 |
+ }
|
|
|
542743 |
+ if (dst_info->cert_subject_data) {
|
|
|
542743 |
+ mig->info.cert_subject_data = (void *) g_strdup((char*) dst_info->cert_subject_data);
|
|
|
542743 |
+ }
|
|
|
542743 |
mig->from = coroutine_self();
|
|
|
542743 |
mig->do_seamless = do_seamless;
|
|
|
542743 |
mig->src_mig_version = src_mig_version;
|
|
|
542743 |
--
|
|
|
542743 |
2.28.0
|
|
|
542743 |
|