Go to file
Hans de Goede 63e1514ccb red_worker: Remove ref counting from the EventListener struct
The red_worker EventListener struct is either embedded in one of:
1) DisplayChannelClient
2) CursorChannelClient
3) RedWorker

And as such gets destroyed when these get destroyed, in case 1 & 2 through
a call to red_channel_client_destroy().

So free-ing it when the ref-count becomes 0 is wrong, for cases:
1) and 2) this will lead to a double free;
3) this will lead to passing memory to free which was not returned by malloc.

This is not causing any issues as the ref-count never gets decremented, other
then in red_worker_main where it gets incremented before it gets decremented,
so it never becomes 0.

So we might just as well completely remove it.

Notes:
1) This is mainly a preparation patch for fixing issues introduced by
   the move from epoll to poll
2) Since removing the ref-counting removes the one code path where listeners
   would get set to NULL, this patch moves the setting of NULL to
   pre_disconnect, where it should have been done in the first place since
   red_client_destroy calls red_channel_client_disconnect
   (through the dispatcher) followed by red_channel_client_destroy, so
   after pre_disconnect the listener may be gone.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2012-03-10 13:56:29 +01:00
build-aux Add a 'syntax-check' make target 2012-01-13 18:12:00 +02:00
client Use SPICE_FOREIGN_MENU_SOCKET if it's available 2012-03-05 22:52:27 +01:00
common Send name & uuid to capable clients 2012-03-05 18:19:07 +01:00
docs docs/Spice_for_newbies.odt: some updates - added copy paste and wan mention, removed vdi_port 2012-01-22 15:13:32 +02:00
python_modules demarshal: fixed-size array are missing __nelements 2012-03-05 18:19:07 +01:00
server red_worker: Remove ref counting from the EventListener struct 2012-03-10 13:56:29 +01:00
spice-protocol@1a3b563171 Fix spice-protocol reference 2012-03-05 19:36:25 +01:00
tests tests/migrate.py: add --vdagent 2011-08-23 17:01:14 +03:00
tools Add casts for compatibility purposes 2012-02-14 10:44:49 +02:00
uncrustify_cfg fresh start 2009-10-14 15:06:41 +02:00
.gitignore Update .gitignore with a few more generated files 2012-01-23 12:28:58 +02:00
.gitmodules build-sys: use spice-protocol as submodule 2012-03-01 16:24:10 +01:00
.mailmap Add a 'syntax-check' make target 2012-01-13 18:12:00 +02:00
AUTHORS Fill out the AUTHORS file with some content 2012-01-13 18:11:58 +02:00
autogen.sh build-sys: use spice-protocol as submodule 2012-03-01 16:24:10 +01:00
cfg.mk Add a 'syntax-check' make target 2012-01-13 18:12:00 +02:00
ChangeLog fresh start 2009-10-14 15:06:41 +02:00
configure.ac build-sys: use spice-protocol as submodule 2012-03-01 16:24:10 +01:00
COPYING Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
GITVERSION Add --enable-werror and make it the default only for git builds 2010-07-09 12:14:32 +02:00
GNUmakefile Add a 'syntax-check' make target 2012-01-13 18:12:00 +02:00
maint.mk Add a 'syntax-check' make target 2012-01-13 18:12:00 +02:00
Makefile.am build-sys: use spice-protocol as submodule 2012-03-01 16:24:10 +01:00
NEWS Release 0.10.1 2012-01-23 15:58:13 +01:00
README README: make a note of SPICE_DEBUG_ALLOW_MC 2012-02-15 14:32:11 +02:00
spice1.proto spice-client migration: fix minor for old migration support. 2011-01-27 18:26:09 +02:00
spice_codegen.py don't #include config.h in generated header files 2011-06-22 16:29:52 +02:00
spice-server.pc.in spice-server.pc.in: move Requires to Requires.private 2011-10-23 11:26:30 +02:00
spice.proto Send name & uuid to capable clients 2012-03-05 18:19:07 +01:00
TODO.multiclient Remove trailing whitespace from end of lines 2012-01-13 18:11:59 +02:00

   SPICE: Simple Protocol for Independent Computing Environments
   =============================================================

SPICE is a remote display system built for virtual environments which
allows you to view a computing 'desktop' environment not only on the
machine where it is running, but from anywhere on the Internet and
from a wide variety of machine architectures.

Installation
------------

The SPICE package uses GNU autotools, so the build install process
follows the standard process documented in the INSTALL file. As a
quick start you can do

  ./configure --prefix=/usr --sysconfdir=/etc \
        --localstatedir=/var --libdir=/usr/lib
  make
  sudo make install

Or to install into a private user specific location

  ./configure --prefix=$HOME/spice
  make
  make install

The following mandatory dependancies are required in order to
build SPICE

    Spice protocol >= 0.9.0
    Celt           >= 0.5.1.1, < 0.6.0
    Pixman         >= 0.17.7
    OpenSSL
    libjpeg
    zlib
    Cyrus-SASL

The following optional dependancies increase the available
functionality

    GE Gui         >= 0.6.0,  < 0.7.0   (GUI app support)
    OpenGL                              (GUI app support)
    Alsa                                (Linux support)
    XRandR         >= 1.2               (X11 support)
    Xinerama       >= 1.0               (X11 support)
    libcacard      >= 0.1.2             (Smartcard support)
    Slirp                               (Tunnelling support)

Communication
-------------

To communicate with the development team, or to post patches
there is a technical mailing list:

   http://lists.freedesktop.org/mailman/listinfo/spice-devel

There is also a mailing list for new release announcements:

   http://lists.freedesktop.org/archives/spice-announce/

To view known bugs, or report new bugs, in SPICE visit

   https://bugs.freedesktop.org/describecomponents.cgi?product=Spice

Bugs found when using an OS distribution's binary packages should
be reported to the OS vendors' own bug tracker first.

The latest SPICE code can be found in GIT at:

   http://cgit.freedesktop.org/spice/

Licensing
---------

SPICE is provided under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

Please see the COPYING file for the complete LGPLv2+ license
terms, or visit <http://www.gnu.org/licenses/>.

Experimental Features
---------------------
To enable multiple client connections, set:
SPICE_DEBUG_ALLOW_MC=1

-- End of readme