> 
> From: Victor Toso <[email protected]>
> 
> Although spice_channel_connect() works in idle, if it returns false
> it'll not emit any signal further and we would be counting a
> 'connected' channel that wouldn't be emitting anything.
> 
> As other callbacks take this in consideration, we should only
> increment the counter if we reached spice-channel::connect_delayed()
> callback.
> 
> Signed-off-by: Victor Toso <[email protected]>
> ---
>  src/channel-main.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/src/channel-main.c b/src/channel-main.c
> index a1e5498..3d1b1b5 100644
> --- a/src/channel-main.c
> +++ b/src/channel-main.c
> @@ -2174,8 +2174,9 @@ migrate_channel_connect(spice_migrate *mig, int type,
> int id)
>      SPICE_DEBUG("migrate_channel_connect %d:%d", type, id);
>  
>      SpiceChannel *newc = spice_channel_new(mig->session, type, id);
> -    spice_channel_connect(newc);
> -    mig->nchannels++;
> +    if (newc != NULL && spice_channel_connect(newc)) {
> +        mig->nchannels++;
> +    }
>  }
>  
>  /* coroutine context */

Acked-by: Frediano Ziglio <[email protected]>

It makes sense but if spice_channel_connect for any reason fails the channel
will go to unconnected state and we will "forget" the pointer so basically
looks like a leak.
At least I would expect that if I attempt to disconnect it the object
is freed.

Frediano
_______________________________________________
Spice-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to