From 10688efcf759f24e83814f9e12a1275296b07a4c Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Sat, 29 Sep 2018 11:24:19 +0200 Subject: Properly terminate server on timeouts Do a proper cleanup when one of the termination timeouts trigger rather than just exiting on the spot. This makes sure we don't leave stray stuff around, e.g. unix socket files. --- unix/x0vncserver/XDesktop.cxx | 6 ++++++ unix/x0vncserver/XDesktop.h | 1 + 2 files changed, 7 insertions(+) (limited to 'unix/x0vncserver') diff --git a/unix/x0vncserver/XDesktop.cxx b/unix/x0vncserver/XDesktop.cxx index 9a047c8e..3e67fad0 100644 --- a/unix/x0vncserver/XDesktop.cxx +++ b/unix/x0vncserver/XDesktop.cxx @@ -19,6 +19,8 @@ */ #include +#include +#include #include @@ -273,6 +275,10 @@ void XDesktop::stop() { pb = 0; } +void XDesktop::terminate() { + kill(getpid(), SIGTERM); +} + bool XDesktop::isRunning() { return running; } diff --git a/unix/x0vncserver/XDesktop.h b/unix/x0vncserver/XDesktop.h index 7d060613..3e85aac3 100644 --- a/unix/x0vncserver/XDesktop.h +++ b/unix/x0vncserver/XDesktop.h @@ -49,6 +49,7 @@ public: // -=- SDesktop interface virtual void start(rfb::VNCServer* vs); virtual void stop(); + virtual void terminate(); bool isRunning(); virtual void queryConnection(network::Socket* sock, const char* userName); -- cgit v1.2.3