[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