[Spice-devel] [PATCH spice-gtk] usbredir: Don't call spice_usbredir_channel_disconnect on channel reset

Hans de Goede hdegoede at redhat.com
Fri Dec 23 07:39:31 PST 2011

channel_reset gets called from spice_channel_disconnect, and
spice_usbredir_channel_disconnect calls spice_channel_disconnect
(so as to disconnect the channel when a usb device gets disconnected).

So calling spice_usbredir_channel_disconnect from channel_reset leads to
undesirable recursion. More over calling spice_usbredir_channel_disconnect
disconnects / closes both the channel and *the usb device* and closing the
usb device on migration is not what we want.

Note that currently migration of usbredir channels does not work, and this
patch does not fix this, but it does fix a regression when disconnecting
usb devices normally (by unplugging them for example).

Signed-off-by: Hans de Goede <hdegoede at redhat.com>
 gtk/channel-usbredir.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/gtk/channel-usbredir.c b/gtk/channel-usbredir.c
index 28c4003..5f0f409 100644
--- a/gtk/channel-usbredir.c
+++ b/gtk/channel-usbredir.c
@@ -109,8 +109,6 @@ static void spice_usbredir_channel_init(SpiceUsbredirChannel *channel)
 static void spice_usbredir_channel_reset(SpiceChannel *channel, gboolean migrating)
-    spice_usbredir_channel_disconnect(SPICE_USBREDIR_CHANNEL(channel));
     SPICE_CHANNEL_CLASS(spice_usbredir_channel_parent_class)->channel_reset(channel, migrating);

More information about the Spice-devel mailing list