[Spice-devel] [rebase] Implement spice_server_set_exit_on_disconnect to enable an option whereby the spice server shuts down on client disconnect.

Alon Levy alevy at redhat.com
Wed Sep 5 08:39:36 PDT 2012


oops, I think I acked this already, I'll apply now. Sorry Soren, you'll have to rebase your configure change.

----- Original Message -----
> ---
>  configure.ac             |    6 +++---
>  server/reds.c            |   14 ++++++++++++++
>  server/spice-server.syms |    4 ++++
>  server/spice.h           |    1 +
>  4 files changed, 22 insertions(+), 3 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index cb7bed1..3882fb6 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -12,10 +12,10 @@ AC_PREREQ([2.57])
>  
>  m4_define([SPICE_MAJOR], 0)
>  m4_define([SPICE_MINOR], 11)
> -m4_define([SPICE_MICRO], 3)
> -m4_define([SPICE_CURRENT], [4])
> +m4_define([SPICE_MICRO], 4)
> +m4_define([SPICE_CURRENT], [5])
>  m4_define([SPICE_REVISION], [0])
> -m4_define([SPICE_AGE], [3])
> +m4_define([SPICE_AGE], [4])
>  
>  # Note on the library name on linux (SONAME) produced by libtool
>  (for reference, gleaned
>  # from looking at libtool 2.4.2)
> diff --git a/server/reds.c b/server/reds.c
> index 8ad8425..98b316d 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -119,6 +119,7 @@ void *red_tunnel = NULL;
>  #endif
>  int agent_mouse = TRUE;
>  int agent_copypaste = TRUE;
> +static bool exit_on_disconnect = FALSE;
>  
>  #define MIGRATE_TIMEOUT (1000 * 10) /* 10sec */
>  #define MM_TIMER_GRANULARITY_MS (1000 / 30)
> @@ -673,6 +674,12 @@ void reds_client_disconnect(RedClient *client)
>  {
>      RedsMigTargetClient *mig_client;
>  
> +    if (exit_on_disconnect)
> +    {
> +        spice_info("Exiting server because of client
> disconnect.\n");
> +        exit(0);
> +    }
> +
>      if (!client || client->disconnecting) {
>          return;
>      }
> @@ -4061,6 +4068,13 @@ SPICE_GNUC_VISIBLE int
> spice_server_set_listen_socket_fd(SpiceServer *s, int lis
>      return 0;
>  }
>  
> +SPICE_GNUC_VISIBLE int
> spice_server_set_exit_on_disconnect(SpiceServer *s, int flag)
> +{
> +    spice_assert(reds == s);
> +    exit_on_disconnect = !!flag;
> +    return 0;
> +}
> +
>  SPICE_GNUC_VISIBLE int spice_server_set_noauth(SpiceServer *s)
>  {
>      spice_assert(reds == s);
> diff --git a/server/spice-server.syms b/server/spice-server.syms
> index 359791c..fd2a423 100644
> --- a/server/spice-server.syms
> +++ b/server/spice-server.syms
> @@ -123,3 +123,7 @@ global:
>      spice_server_vm_stop;
>      spice_server_set_seamless_migration;
>  } SPICE_SERVER_0.10.4;
> +
> +SPICE_SERVER_0.11.4 {
> +    spice_server_set_exit_on_disconnect;
> +} SPICE_SERVER_0.11.2;
> diff --git a/server/spice.h b/server/spice.h
> index 0dc9d05..fdcfbb7 100644
> --- a/server/spice.h
> +++ b/server/spice.h
> @@ -427,6 +427,7 @@ int spice_server_set_compat_version(SpiceServer
> *s,
>  int spice_server_set_port(SpiceServer *s, int port);
>  void spice_server_set_addr(SpiceServer *s, const char *addr, int
>  flags);
>  int spice_server_set_listen_socket_fd(SpiceServer *s, int
>  listen_fd);
> +int spice_server_set_exit_on_disconnect(SpiceServer *s, int flag);
>  int spice_server_set_noauth(SpiceServer *s);
>  int spice_server_set_sasl(SpiceServer *s, int enabled);
>  int spice_server_set_sasl_appname(SpiceServer *s, const char
>  *appname);
> --
> 1.7.10.4
> 
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
> 


More information about the Spice-devel mailing list