[Spice-devel] [spice-gtk v1 2/3] main: migration: check return value to count channels
Victor Toso
victortoso at redhat.com
Thu Sep 5 07:58:12 UTC 2019
Hi,
On Thu, Sep 05, 2019 at 03:51:40AM -0400, Frediano Ziglio wrote:
> >
> > From: Victor Toso <me at victortoso.com>
> >
> > 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 <victortoso at redhat.com>
> > ---
> > 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 <fziglio at redhat.com>
Thanks,
>
> 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.
In such case, in the migration part, we should catch
SpiceChannel::channel-event with error, which would abort
migration and free the related resources..
The leak you mention could also be a hang, that is, waiting
nchannels reach to 0
> At least I would expect that if I attempt to disconnect it the
> object is freed.
Note that this is more of code inspection kinda change, makes no
sense to nchannels++ if spice_channel_connect() failed early for
whatever reason. Didn't hit an issue with this code path.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20190905/2cf87c2d/attachment.sig>
More information about the Spice-devel
mailing list