[Spice-devel] [vdagentd] Add an option such that the daemon will exit after processing a single session.

Alon Levy alevy at redhat.com
Mon Jul 7 07:23:10 PDT 2014


On 06/24/2014 12:05 AM, Jeremy White wrote:
> 

ACK

> Signed-off-by: Jeremy White <jwhite at codeweavers.com>
> ---
>  src/vdagentd.c |   14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/src/vdagentd.c b/src/vdagentd.c
> index fa47997..b5c7d14 100644
> --- a/src/vdagentd.c
> +++ b/src/vdagentd.c
> @@ -59,6 +59,7 @@ static const char *vdagentd_socket = VDAGENTD_SOCKET;
>  static const char *uinput_device = "/dev/uinput";
>  static int debug = 0;
>  static int uinput_fake = 0;
> +static int only_once = 0;
>  static struct udscs_server *server = NULL;
>  static struct vdagent_virtio_port *virtio_port = NULL;
>  static GHashTable *active_xfers = NULL;
> @@ -758,6 +759,7 @@ static void usage(FILE *fp)
>              "  -u <dev>       set uinput device       [%s]\n"
>              "  -f             treat uinput device as fake; no ioctls\n"
>              "  -x             don't daemonize\n"
> +            "  -o             Only handle one virtio serial session.\n"
>  #ifdef HAVE_CONSOLE_KIT
>              "  -X             Disable console kit integration\n"
>  #endif
> @@ -798,6 +800,7 @@ void main_loop(void)
>      fd_set readfds, writefds;
>      int n, nfds;
>      int ck_fd = 0;
> +    int once = 0;
>  
>      while (!quit) {
>          FD_ZERO(&readfds);
> @@ -827,6 +830,7 @@ void main_loop(void)
>          udscs_server_handle_fds(server, &readfds, &writefds);
>  
>          if (virtio_port) {
> +            once = 1;
>              vdagent_virtio_port_handle_fds(&virtio_port, &readfds, &writefds);
>              if (!virtio_port) {
>                  int old_client_connected = client_connected;
> @@ -845,6 +849,11 @@ void main_loop(void)
>                  client_connected = old_client_connected;
>              }
>          }
> +        else if (only_once && once)
> +        {
> +            syslog(LOG_INFO, "Exiting after one client session.");
> +            break;
> +        }
>  
>          if (session_info && FD_ISSET(ck_fd, &readfds)) {
>              active_session = session_info_get_active_session(session_info);
> @@ -866,7 +875,7 @@ int main(int argc, char *argv[])
>      struct sigaction act;
>  
>      for (;;) {
> -        if (-1 == (c = getopt(argc, argv, "-dhxXfs:u:S:")))
> +        if (-1 == (c = getopt(argc, argv, "-dhxXfos:u:S:")))
>              break;
>          switch (c) {
>          case 'd':
> @@ -884,6 +893,9 @@ int main(int argc, char *argv[])
>          case 'f':
>              uinput_fake = 1;
>              break;
> +        case 'o':
> +            only_once = 1;
> +            break;
>          case 'x':
>              do_daemonize = 0;
>              break;
> 



More information about the Spice-devel mailing list