spice/server
Hans de Goede ffc4de01e6 spicevmc: Fix assert when still connected on session disconnect (fdo#43903)
Currently when the main channel disconnects while a spicevmc channel
(such as a usbredir channel) is still connected, qemu will abort with the
following message:
ring_remove: ASSERT item->next != NULL && item->prev != NULL failed

This is caused by red_client_destroy() first calling:
rcc->channel->client_cbs.disconnect(rcc);
And then calling:
red_channel_client_destroy(rcc);

For each channel. This is fine, but the spicevmc disconnect code does a
red_channel_client_destroy(rcc) itself since as usb devices are added
/ removed, the channels carrying their traffic get connected / disconnected
and they get re-used for new devices, which won't work if the old channel is
still there when the new connection comes in.

This patch fixes the double destroy when there are still spicevmc channels
connected by not doing the red_channel_client_destroy from the spicevmc
disconnect code when not just the channel, but the entire client is
disconnecting.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2011-12-18 11:20:12 +01:00
..
tests server: fix function prototypes 2011-09-05 07:52:20 +02:00
.gitignore gitignore: add generated_*, vim temps, pyc 2010-11-08 16:06:55 +02:00
agent-msg-filter.c add #include <config.h> to all source files 2011-05-03 14:44:10 +02:00
agent-msg-filter.h server: add discard all option to agent message filter 2011-04-04 11:30:30 +02:00
char_device.h Rename usbredir channel code to spicevmc 2011-08-25 14:04:27 +02:00
demarshallers.h Add destructor for demarshalled messages 2010-06-22 10:53:24 +02:00
dispatcher.c server/dispatcher: add dispatcher_register_async_done_callback 2011-11-08 16:22:21 +02:00
dispatcher.h server/dispatcher: add dispatcher_register_async_done_callback 2011-11-08 16:22:21 +02:00
glz_encode_match_tmpl.c add #include <config.h> to all source files 2011-05-03 14:44:10 +02:00
glz_encode_tmpl.c add #include <config.h> to all source files 2011-05-03 14:44:10 +02:00
glz_encoder_config.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
glz_encoder_dictionary_protected.h Fix spelling errors in comments and strings 2010-05-21 10:51:28 +02:00
glz_encoder_dictionary.c add #include <config.h> to all source files 2011-05-03 14:44:10 +02:00
glz_encoder_dictionary.h Fix spelling errors in comments and strings 2010-05-21 10:51:28 +02:00
glz_encoder.c add #include <config.h> to all source files 2011-05-03 14:44:10 +02:00
glz_encoder.h Fix spelling errors in comments and strings 2010-05-21 10:51:28 +02:00
inputs_channel.c server: set & test channel capabilities in red_channel 2011-11-02 11:19:48 +02:00
inputs_channel.h server/inputs_channel: remove unused declaration in inputs_channel.h 2010-12-07 21:32:34 +02:00
jpeg_encoder.c fix leak in do_jpeg_encode 2011-08-25 14:48:01 +02:00
jpeg_encoder.h JPEG support: introducing jpeg encoding for spice bitmaps 2010-06-09 11:40:25 +02:00
main_channel.c server/main_channel: fix pointer-to-int-cast error 2011-11-10 16:28:07 +02:00
main_channel.h server: handling semi-seamless migration in the target side 2011-11-02 11:25:59 +02:00
main_dispatcher.c server: introduce dispatcher 2011-11-08 14:59:49 +02:00
main_dispatcher.h [0.8 branch] server: add main_dispatcher 2011-10-31 17:35:54 +02:00
Makefile.am server: Move $(Z_LIBS) from INCLUDES to LIBADD in Makefile.am 2011-11-28 11:05:49 +01:00
mjpeg_encoder.c server/mjpeg_encoder: use size_t * consistently 2011-11-10 16:29:19 +02:00
mjpeg_encoder.h mjpeg_encoder: remove unused functions 2011-07-22 16:53:56 +02:00
red_bitmap_utils.h Fix spelling errors in comments and strings 2010-05-21 10:51:28 +02:00
red_channel.c server: handling semi-seamless migration in the target side 2011-11-02 11:25:59 +02:00
red_channel.h server: handling semi-seamless migration in the target side 2011-11-02 11:25:59 +02:00
red_client_cache.h server/red_worker: multiple client support - base split 2011-08-23 18:01:04 +03:00
red_client_shared_cache.h server/red_worker: multiple client support - base split 2011-08-23 18:01:04 +03:00
red_common.h server/common: introduce common/spice_common.h 2011-03-02 17:27:51 +02:00
red_dispatcher.c server/red_worker: reuse dispatcher 2011-11-08 16:23:10 +02:00
red_dispatcher.h server/red_worker: reuse dispatcher 2011-11-08 16:23:10 +02:00
red_memslots.c add #include <config.h> to all source files 2011-05-03 14:44:10 +02:00
red_memslots.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
red_parse_qxl.c server/red_parse_qxl.h: License should be LGPLv2+ rather then GPLv2+ 2011-12-15 13:12:31 +01:00
red_parse_qxl.h server/red_parse_qxl.h: License should be LGPLv2+ rather then GPLv2+ 2011-12-15 13:12:31 +01:00
red_tunnel_worker.c server: set & test channel capabilities in red_channel 2011-11-02 11:19:48 +02:00
red_tunnel_worker.h server: Unset executable bit of red_tunnel_worker.h 2011-05-05 20:04:49 +03:00
red_worker.c server/red_worker: reuse dispatcher 2011-11-08 16:23:10 +02:00
red_worker.h server/red_worker: reuse dispatcher 2011-11-08 16:23:10 +02:00
reds_gl_canvas.c common,server: use ASSERT from spice_common.h 2011-05-03 14:44:11 +02:00
reds_gl_canvas.h autotools: correctly build canvas-related code 2011-05-03 14:44:10 +02:00
reds_sw_canvas.c common,server: use ASSERT from spice_common.h 2011-05-03 14:44:11 +02:00
reds_sw_canvas.h autotools: correctly build canvas-related code 2011-05-03 14:44:10 +02:00
reds.c server: turn spice_server_migrate_start into a valid call 2011-11-02 11:30:18 +02:00
reds.h server: handling semi-seamless migration in the target side 2011-11-02 11:25:59 +02:00
smartcard.c server: set & test channel capabilities in red_channel 2011-11-02 11:19:48 +02:00
smartcard.h remove unused function 2011-07-19 13:31:10 +02:00
snd_worker.c server: set & test channel capabilities in red_channel 2011-11-02 11:19:48 +02:00
snd_worker.h use foo(void) instead of foo() in prototypes 2011-05-02 11:24:44 +02:00
spice-experimental.h server/spice.h: semi-seamless migration interface, RHBZ #738266 2011-11-02 11:20:08 +02:00
spice-server.syms server/spice-server.syms: fix 0.8 compatibility 2011-11-08 17:10:47 +02:00
spice.h server/spice.h: semi-seamless migration interface, RHBZ #738266 2011-11-02 11:20:08 +02:00
spicevmc.c spicevmc: Fix assert when still connected on session disconnect (fdo#43903) 2011-12-18 11:20:12 +01:00
stat.h Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
zlib_encoder.c add #include <config.h> to all source files 2011-05-03 14:44:10 +02:00
zlib_encoder.h applying zlib compression over glz on WAN connection 2010-06-21 15:05:37 +02:00