> > From: Victor Toso <me@xxxxxxxxxxxxxx> > > The channel_connect() function could fail leading to a spice-channel > existing as zombie (its coroutine return soon after). > > Check if channel_connect() fails and give a proper error signal to > user when that happens. > > Related: https://bugzilla.redhat.com/show_bug.cgi?id=1625550 > Signed-off-by: Victor Toso <victortoso@xxxxxxxxxx> > --- > src/spice-channel.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/src/spice-channel.c b/src/spice-channel.c > index 0a5437c..aa035e1 100644 > --- a/src/spice-channel.c > +++ b/src/spice-channel.c > @@ -2675,11 +2675,15 @@ cleanup: > if (c->state == SPICE_CHANNEL_STATE_RECONNECTING || > c->state == SPICE_CHANNEL_STATE_SWITCHING) { > g_warn_if_fail(c->event == SPICE_CHANNEL_NONE); > - channel_connect(channel, c->tls); > - g_object_unref(channel); > - } else > - g_idle_add(spice_channel_delayed_unref, data); > + if (channel_connect(channel, c->tls)) { > + g_object_unref(channel); > + return NULL; > + } > + > + c->event = SPICE_CHANNEL_ERROR_CONNECT; > + } > > + g_idle_add(spice_channel_delayed_unref, data); > /* Co-routine exits now - the SpiceChannel object may no longer exist, > so don't do anything else now unless you like SEGVs */ Patch is good, this comment is now wrong here, channel (or data) is still valid. Maybe g_idle_add(spice_channel_delayed_unref, channel); is more readable (data == channel). > return NULL; Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel