[Spice-devel] [PATCHv2 00/22] remove channels from session on disconnect

Marc-André Lureau marcandre.lureau at redhat.com
Wed Nov 26 09:55:51 PST 2014


Hi,

This is the updated series on channel lifecycle changes, removing
channels from session on disconnection. The previous series revealed
some issues related to direct access to session fields. This new series
adds a lot more checks so that no session private fields can be
accessed directly anymore. This should avoid potential crashes, and
after careful review of SpiceSession accessors, there should be no
direct or shared pointer access left.

In last review, Christophe found that USB context was wrongly accessed
after disconnection. You can find the fix in the last patch. This is a
typical example of what could remain lying in the code, so more
testing required!

Marc-André Lureau (22):
  audio: add accessor to check if audio is enabled
  audio: move spice_audio_get() to session
  session: protect internal functions against invalid args
  Add spice_session_is_for_migration()
  smartcard: do not initialize manager for migration session
  smartcard: use spice_session_is_for_migration()
  session: rename migration_copy/for_migration
  session: set session for migration when connecting
  session: add and use internal accessors
  Rename display_channels_count/n_display_channels
  webdav: move initialization to session
  usb: move device manager initialization to session
  gtk: do not require glib session private fields
  session: move SpiceSessionPrivate out of headers
  session: remove channels on disconnect
  display: don't reschedule stream if disconnected from session
  channel: deprecate spice_channel_destroy()
  session: remove sticky disconnecting flag
  session: keep a reference on disconnect
  session: disconnect in idle
  cosmetic: return early if channel is not usb
  usb: keep USB context alive as long as channels exist

 doc/reference/spice-gtk-sections.txt |   1 +
 gtk/channel-display.c                |   5 +-
 gtk/channel-main.c                   |  12 +-
 gtk/channel-smartcard.c              |  19 +-
 gtk/channel-webdav.c                 |  34 +--
 gtk/desktop-integration.c            |   7 +-
 gtk/map-file                         |   1 +
 gtk/spice-audio.c                    |  50 +---
 gtk/spice-channel.c                  |  15 +-
 gtk/spice-channel.h                  |   3 +-
 gtk/spice-glib-sym-file              |   1 +
 gtk/spice-gtk-session.c              |   4 +-
 gtk/spice-session-priv.h             |  98 +------
 gtk/spice-session.c                  | 488 ++++++++++++++++++++++++++++-------
 gtk/spice-session.h                  |   1 +
 gtk/usb-device-manager.c             |  64 ++---
 16 files changed, 484 insertions(+), 319 deletions(-)

-- 
2.1.0



More information about the Spice-devel mailing list