diff options
author | Jonathon Jongsma <jjongsma@redhat.com> | 2015-01-30 14:35:12 -0600 |
---|---|---|
committer | Fabiano FidĂȘncio <fidencio@redhat.com> | 2015-02-23 23:00:46 +0100 |
commit | 91402d813237ca9d79b4612e0fcd49b98a068d4a (patch) | |
tree | 03ae8b6cc3744bb4971903386bf8515f632f8823 | |
parent | 5e663018df7b1c6494f1d6c270527d36618c6451 (diff) | |
download | spice-91402d813237ca9d79b4612e0fcd49b98a068d4a.tar.gz spice-91402d813237ca9d79b4612e0fcd49b98a068d4a.tar.xz spice-91402d813237ca9d79b4612e0fcd49b98a068d4a.zip |
Store a reference to RedsState in RedsMigTargetClient
This allows RedsMigTargetClient methods to use local variables rather
than the global 'reds' variable
-rw-r--r-- | server/reds-private.h | 1 | ||||
-rw-r--r-- | server/reds.c | 12 |
2 files changed, 7 insertions, 6 deletions
diff --git a/server/reds-private.h b/server/reds-private.h index a2841d23..0fa03ae2 100644 --- a/server/reds-private.h +++ b/server/reds-private.h @@ -99,6 +99,7 @@ typedef struct RedsMigPendingLink { } RedsMigPendingLink; typedef struct RedsMigTargetClient { + RedsState *reds; RingItem link; RedClient *client; Ring pending_links; diff --git a/server/reds.c b/server/reds.c index 7bf4e3b4..922b8d78 100644 --- a/server/reds.c +++ b/server/reds.c @@ -111,7 +111,7 @@ struct ChannelSecurityOptions { static void migrate_timeout(void *opaque); static RedsMigTargetClient* reds_mig_target_client_find(RedsState *reds, RedClient *client); -static void reds_mig_target_client_free(RedsState *reds, RedsMigTargetClient *mig_client); +static void reds_mig_target_client_free(RedsMigTargetClient *mig_client); static void reds_mig_cleanup_wait_disconnect(RedsState *reds); static void reds_mig_remove_wait_disconnect_client(RedsState *reds, RedClient *client); static void reds_char_device_add_state(RedsState *reds, SpiceCharDeviceState *st); @@ -414,7 +414,7 @@ void reds_client_disconnect(RedsState *reds, RedClient *client) mig_client = reds_mig_target_client_find(reds, client); if (mig_client) { - reds_mig_target_client_free(reds, mig_client); + reds_mig_target_client_free(mig_client); } if (reds->mig_wait_disconnect) { @@ -1451,6 +1451,7 @@ static void reds_mig_target_client_add(RedsState *reds, RedClient *client) spice_info(NULL); mig_client = spice_malloc0(sizeof(RedsMigTargetClient)); mig_client->client = client; + mig_client->reds = reds; ring_init(&mig_client->pending_links); ring_add(&reds->mig_target_clients, &mig_client->link); reds->num_mig_target_clients++; @@ -1478,7 +1479,6 @@ static void reds_mig_target_client_add_pending_link(RedsMigTargetClient *client, { RedsMigPendingLink *mig_link; - spice_assert(reds); spice_assert(client); mig_link = spice_malloc0(sizeof(RedsMigPendingLink)); mig_link->link_msg = link_msg; @@ -1487,12 +1487,12 @@ static void reds_mig_target_client_add_pending_link(RedsMigTargetClient *client, ring_add(&client->pending_links, &mig_link->ring_link); } -static void reds_mig_target_client_free(RedsState *reds, RedsMigTargetClient *mig_client) +static void reds_mig_target_client_free(RedsMigTargetClient *mig_client) { RingItem *now, *next; ring_remove(&mig_client->link); - reds->num_mig_target_clients--; + mig_client->reds->num_mig_target_clients--; RING_FOREACH_SAFE(now, next, &mig_client->pending_links) { RedsMigPendingLink *mig_link = SPICE_CONTAINEROF(now, RedsMigPendingLink, ring_link); @@ -1709,7 +1709,7 @@ static int reds_link_mig_target_channels(RedsState *reds, RedClient *client) reds_channel_do_link(channel, client, mig_link->link_msg, mig_link->stream); } - reds_mig_target_client_free(reds, mig_client); + reds_mig_target_client_free(mig_client); return TRUE; } |