spice/server
Frediano Ziglio 2e1684eb66 red-client: Avoid stale channel client after disconnection
Disconnecting a single channel from the client caused the server to
keep a stale channel client (RedChannelClient object) till the client
(RedClient object) entirely disconnected, that is the channel client
is disconnected but still in the list preventing new connections.
Calling red_client_remove_channel from red_channel_client_disconnect
fixes this last issue.
An issue was that was not clear how the ownership were managed. When
red_client_destroy was called red_channel_client_destroy was called
which freed the RedChannelClient object so this should imply
ownership.
However same red_channel_client_destroy call was attempted by
RedChannel using its list (red_channel_destroy). Basically the two
pointers (the one from the channel and the one from the client) were
considered as one ownership. To avoid the confusion now the client
list always decrement the counter.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2019-12-11 12:47:46 +00:00
..
tests ci: Fix a typo in comment 2019-11-26 09:22:14 +00:00
.gitignore gitignore: Reuse top-level gitignore 2016-12-14 19:09:21 +00:00
agent-msg-filter.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
agent-msg-filter.h agent-msg-filter: Add some comments to AgentMsgFilter structure 2019-02-11 15:15:59 +00:00
cache-item.h Unify header guards 2017-03-30 18:17:20 +01:00
cache-item.tmpl.c cache-item: Remove unused define 2019-06-21 08:30:56 +01:00
char-device.c event-loop: Change internal core interface 2019-10-10 10:55:52 +01:00
char-device.h char-device: Don't use RedClient API 2019-09-17 12:17:26 +01:00
common-graphics-channel.c common-graphics-channel: Avoid closing server if client send huge messages 2019-06-10 13:44:01 +01:00
common-graphics-channel.h common-graphics-channel: Move "qxl" property to DisplayChannel 2017-09-07 06:42:01 +01:00
cursor-channel-client.c cache-item: Remove only written fields 2019-06-21 08:30:56 +01:00
cursor-channel-client.h Make channel client callbacks virtual functions 2019-03-28 20:20:25 +00:00
cursor-channel.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
cursor-channel.h Make channel client callbacks virtual functions 2019-03-28 20:20:25 +00:00
dcc-private.h cache-item: Remove only written fields 2019-06-21 08:30:56 +01:00
dcc-send.c dcc-send: fix use-after-free 2019-07-11 09:37:34 +01:00
dcc.c red-client: Avoid stale channel client after disconnection 2019-12-11 12:47:46 +00:00
dcc.h Use "base" as pipe item base field name 2018-06-18 13:40:51 +01:00
dispatcher.c dispatcher: Use a new API to handle events 2019-08-02 11:16:57 +01:00
dispatcher.h dispatcher: Use a new API to handle events 2019-08-02 11:16:57 +01:00
display-channel-private.h Move image_compression field from RedWorker to DisplayChannel 2019-03-28 20:20:25 +00:00
display-channel.c streaming: Restart streams on video-codec changes 2019-07-11 09:28:51 +01:00
display-channel.h Move image_compression field from RedWorker to DisplayChannel 2019-03-28 20:20:25 +00:00
display-limits.h Receive the GraphicsDeviceInfo message from the streaming agent 2019-01-29 15:46:54 +01:00
event-loop.c event-loop: Change internal core interface 2019-10-10 10:55:52 +01:00
glib-compat.h Use verify instead of G_STATIC_ASSERT 2017-12-01 22:49:46 +00:00
glz-encode-match.tmpl.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
glz-encode.tmpl.c glz-encode: Remove obsolete reference segment 2019-08-12 10:48:02 +01:00
glz-encoder-dict.c typo: fix the spelling of precede 2019-07-04 10:05:19 +01:00
glz-encoder-dict.h Make various functions static 2017-04-05 12:39:20 +02:00
glz-encoder-priv.h glz-encoder-dict: Remove useless __packed__ attribute 2019-08-02 10:55:20 +01:00
glz-encoder.c glz-encoder: Remove useless __packed__ attribute 2019-08-02 10:55:27 +01:00
glz-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00
gstreamer-encoder.c gst:mjpeg do not set max-threads 2019-07-17 11:21:55 +01:00
image-cache.c Use SPICE_CONTAINEROF to avoid some possible alignment warnings on MIPS 2019-06-18 09:48:28 +01:00
image-cache.h Unify header guards 2017-03-30 18:17:20 +01:00
image-encoders.c typo: image-encoders: fix the spelling of guaranteed 2019-07-04 10:05:16 +01:00
image-encoders.h Add possibly missing headers for pthread.h 2018-06-26 10:54:01 +01:00
inputs-channel-client.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
inputs-channel-client.h inputs-channel-client: Remove unused declarations 2019-06-13 07:44:10 +01:00
inputs-channel.c event-loop: Change internal core interface 2019-10-10 10:55:52 +01:00
inputs-channel.h inputs-channel: Move spice_server_kbd_leds to InputsChannel 2017-12-19 16:29:41 +00:00
jpeg-encoder.c jpeg: Support big endian machines 2019-06-19 10:36:10 +01:00
jpeg-encoder.h jpeg-encoder: Remove JPEG_IMAGE_TYPE_RGB24 2018-06-26 18:06:50 +01:00
lz4-encoder.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
lz4-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00
main-channel-client.c main-channel-client: style fixup, indentation of return 2019-09-24 09:46:13 +02:00
main-channel-client.h Use standard "Red" namespace 2017-10-21 08:47:02 +01:00
main-channel.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
main-channel.h Use standard "Red" namespace 2017-10-21 08:47:02 +01:00
main-dispatcher.c event-loop: Change internal core interface 2019-10-10 10:55:52 +01:00
main-dispatcher.h Remove core parameter from main_dispatcher_new 2019-02-12 22:34:52 +00:00
Makefile.am build: Cleanup old library flags 2019-11-25 13:20:18 +00:00
memslot.c Use (u)intptr_t for virtual addresses 2019-08-12 08:16:31 +01:00
memslot.h Use (u)intptr_t for virtual addresses 2019-08-12 08:16:31 +01:00
meson.build Add support for clients connecting with the WebSocket protocol. 2019-06-26 14:18:27 +01:00
migration-protocol.h Use start/end-packet.h headers instead of direct GCC attribute 2019-07-22 14:56:00 +01:00
mjpeg-encoder.c jpeg: Support big endian machines 2019-06-19 10:36:10 +01:00
net-utils.c net-utils: Port to Windows 2019-05-07 10:14:08 +01:00
net-utils.h reds-stream: Introduce reds_stream_get_no_delay() helper 2017-03-31 12:22:52 +02:00
pixmap-cache.c Use SPICE_CONTAINEROF to avoid some possible alignment warnings on MIPS 2019-06-18 09:48:28 +01:00
pixmap-cache.h Unify header guards 2017-03-30 18:17:20 +01:00
red-channel-capabilities.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
red-channel-capabilities.h Unify header guards 2017-03-30 18:17:20 +01:00
red-channel-client.c red-client: Avoid stale channel client after disconnection 2019-12-11 12:47:46 +00:00
red-channel-client.h red-channel-client: Allows to block receiving data 2019-09-24 13:37:55 +01:00
red-channel.c red-channel: Make parser function compulsory 2019-10-08 17:12:59 +01:00
red-channel.h red-channel: Remove unused declaration 2019-06-13 07:44:10 +01:00
red-client.c red-client: Avoid stale channel client after disconnection 2019-12-11 12:47:46 +00:00
red-client.h Reuse SPICE_DECLARE_TYPE macro 2017-11-21 08:38:44 +00:00
red-common.h event-loop: Change internal core interface 2019-10-10 10:55:52 +01:00
red-parse-qxl.c Use (u)intptr_t for virtual addresses 2019-08-12 08:16:31 +01:00
red-parse-qxl.h qxl: Release QXL resources in red_put_surface_cmd 2018-12-06 13:04:03 +00:00
red-pipe-item.c red-pipe-item: Use GLib memory functions 2017-10-11 12:52:17 +01:00
red-pipe-item.h red-pipe-item: Removed some not necessary headers inclusions 2019-02-23 05:12:59 +00:00
red-qxl.c red-qxl: Make sure we have at least one monitor 2019-09-19 14:54:53 +01:00
red-qxl.h red-qxl: Better encapsulation of device display information 2019-07-08 13:19:12 +01:00
red-record-qxl.c Disable recording filtering for Windows 2019-05-07 10:14:33 +01:00
red-record-qxl.h red-record-qxl: Change license header to LGPLv2+ 2018-07-05 10:15:17 +02:00
red-replay-qxl.c red-replay-qxl: Fix replay on 32 bit systems 2019-08-11 10:18:11 +01:00
red-stream-device.c event-loop: Change internal core interface 2019-10-10 10:55:52 +01:00
red-stream-device.h red-stream-device: Constify stream_device_get_device_display_info result 2019-02-04 19:44:12 +00:00
red-stream.c Do not check for NULL calling red_watch_remove and red_timer_remove 2019-12-04 12:15:56 +00:00
red-stream.h Add support for clients connecting with the WebSocket protocol. 2019-06-26 14:18:27 +01:00
red-worker.c event-loop: Change internal core interface 2019-10-10 10:55:52 +01:00
red-worker.h red-worker: Remove unused definitions 2019-03-29 15:18:49 +00:00
reds-private.h Send the graphics device info to the vd_agent 2019-01-29 15:46:28 +01:00
reds.c reds: Remove unused mess_pos field 2019-12-06 15:04:18 +00:00
reds.h event-loop: Change internal core interface 2019-10-10 10:55:52 +01:00
smartcard-channel-client.c smart-channel-client: Remove spicec client reference from comment 2019-10-21 09:14:29 +01:00
smartcard-channel-client.h Use standard "Red" namespace 2017-10-21 08:47:02 +01:00
smartcard.c smartcard: Reset vheader value 2019-10-10 10:51:59 +01:00
smartcard.h Reuse SPICE_DECLARE_TYPE macro 2017-11-21 08:38:44 +00:00
sound.c windows: Disable code not working on Windows 2019-05-07 10:14:22 +01:00
sound.h Change playback_compression to bool type 2017-04-07 15:08:43 -05:00
spice-audio.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-bitmap-utils.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
spice-bitmap-utils.h Use verify instead of G_STATIC_ASSERT 2017-12-01 22:49:46 +00:00
spice-bitmap-utils.tmpl.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
spice-char.h spice-char: Add some documentation to SpiceCharDeviceInterface 2019-07-10 09:53:58 +01:00
spice-core.h windows: Do not include headers not available on Windows 2019-01-31 10:48:34 +00:00
spice-input.h Split spice.h 2014-11-27 14:27:18 +01:00
spice-migration.h server: Use SPICE_GNUC_DEPRECATED to avoid a dependency on glib.h 2016-08-12 09:47:40 +01:00
spice-qxl.h Use (u)intptr_t for virtual addresses 2019-08-12 08:16:31 +01:00
spice-replay.h Unify header guards 2017-03-30 18:17:20 +01:00
spice-server-enums.c.tmpl Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
spice-server-enums.h.tmpl build: Rename spice-server-enums.tmpl.[ch] to spice-server-enums.[ch].tmpl 2018-03-07 10:04:04 -03:00
spice-server.h reds: Add ability to query the video-codecs currently enabled 2019-07-05 11:11:57 +01:00
spice-server.syms Remove reference to removed ABI 2019-08-15 11:16:42 +01:00
spice-version.h.in build-sys: generate spice-version.h 2014-11-27 14:27:33 +01:00
spice.h Make red-replay-qxl.h a public header 2016-11-10 06:37:15 +00:00
spicevmc.c spicevmc: Fix g_object_new call for 32 bit machines 2019-09-24 16:22:46 +01:00
stat-file.c stat-file: Use proper macro for container computation 2019-08-22 08:53:23 +01:00
stat-file.h Unify header guards 2017-03-30 18:17:20 +01:00
stat.h Unify header guards 2017-03-30 18:17:20 +01:00
stream-channel.c stream-channel: Remove default property 2019-12-04 12:15:56 +00:00
stream-channel.h Make stream-channel.h self-contained 2017-10-30 12:01:24 +01:00
sw-canvas.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
sys-socket.c sys-socket: Add socket_newpair utility 2019-05-07 10:14:05 +01:00
sys-socket.h sys-socket: Add socket_newpair utility 2019-05-07 10:14:05 +01:00
tree.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
tree.h Unify header guards 2017-03-30 18:17:20 +01:00
utils.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
utils.h gstreamer-encoder: fix compiler warning with Fedora 30 2019-07-03 14:24:25 +01:00
video-encoder.h reds: Add ability to query the video-codecs currently enabled 2019-07-05 11:11:57 +01:00
video-stream.c stream-channel: Add preferred video codec capability 2019-09-02 09:53:27 +01:00
video-stream.h stream-channel: Add preferred video codec capability 2019-09-02 09:53:27 +01:00
websocket.c websocket: Handle continuation and 0-size frames 2019-06-26 14:19:13 +01:00
websocket.h websocket: Include proper type header 2019-07-17 12:53:11 +01:00
zlib-encoder.c Do not check for HAVE_CONFIG_H 2019-04-30 09:26:55 +01:00
zlib-encoder.h Unify header guards 2017-03-30 18:17:20 +01:00