[Spice-devel] [PATCH] channel: support multiple clients for red_channel_is_waiting_for_migrate_data
Marc-André Lureau
mlureau at redhat.com
Thu Dec 10 13:44:41 PST 2015
Hi
Did you test this?
I thought only a single client was handling server migration data. At least intuitively, that's what I think it should do.
----- Original Message -----
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
> server/red-channel.c | 21 ++++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/server/red-channel.c b/server/red-channel.c
> index 7dfb9bf..18f890f 100644
> --- a/server/red-channel.c
> +++ b/server/red-channel.c
> @@ -963,20 +963,27 @@ int
> red_channel_client_is_waiting_for_migrate_data(RedChannelClient *rcc)
> return rcc->wait_migrate_data;
> }
>
> +/**
> + * Returns TRUE is at least one client is waiting for migration data
> + */
> int red_channel_is_waiting_for_migrate_data(RedChannel *channel)
> {
> - RedChannelClient *rcc;
> + RingItem *link, *next;
>
> - if (!red_channel_is_connected(channel)) {
> + if (!channel) {
> return FALSE;
> }
>
> - if (channel->clients_num > 1) {
> - return FALSE;
> + RING_FOREACH_SAFE(link, next, &channel->clients) {
> + RedChannelClient *rcc;
> +
> + rcc = SPICE_CONTAINEROF(link, RedChannelClient, channel_link);
> + if (red_channel_client_is_waiting_for_migrate_data(rcc)) {
> + return TRUE;
> + }
> }
> - spice_assert(channel->clients_num == 1);
> - rcc = SPICE_CONTAINEROF(ring_get_head(&channel->clients),
> RedChannelClient, channel_link);
> - return red_channel_client_is_waiting_for_migrate_data(rcc);
> +
> + return FALSE;
> }
>
> static void red_channel_client_default_connect(RedChannel *channel,
> RedClient *client,
> --
> 2.4.3
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>
More information about the Spice-devel
mailing list