Re: [Spice-devel] [vdagentd] Add an option such that the daemon will exit after processing a single session.
On 06/24/2014 12:05 AM, Jeremy White wrote: > ACK > Signed-off-by: Jeremy White > --- > 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) > " -uset 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; > ___ Spice-devel mailing list Spice-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/spice-devel
[Spice-devel] [vdagentd] Add an option such that the daemon will exit after processing a single session.
Signed-off-by: Jeremy White --- 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) " -uset 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; -- 1.7.10.4 ___ Spice-devel mailing list Spice-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/spice-devel