diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2017-12-06 17:09:28 +1300 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2017-12-11 14:36:49 +1300 |
commit | 9e8049baff1144a5b23e04096625c999630afa63 (patch) | |
tree | fc106cb1a94572d41839d96850d7d3009ea76026 | |
parent | cb463b8fb02ed9fa24aabd7baade10498e7c9acb (diff) | |
download | lightdm-git-9e8049baff1144a5b23e04096625c999630afa63.tar.gz |
Fix VNC connection not being closed on session exit
-rw-r--r-- | src/vnc-server.c | 1 | ||||
-rw-r--r-- | tests/scripts/vnc-command.conf | 1 | ||||
-rw-r--r-- | tests/scripts/vnc-dimensions.conf | 1 | ||||
-rw-r--r-- | tests/scripts/vnc-guest.conf | 1 | ||||
-rw-r--r-- | tests/scripts/vnc-login.conf | 11 | ||||
-rw-r--r-- | tests/scripts/vnc-open-file-descriptors.conf | 1 | ||||
-rw-r--r-- | tests/src/vnc-client.c | 17 |
7 files changed, 30 insertions, 3 deletions
diff --git a/src/vnc-server.c b/src/vnc-server.c index ff84987a..bc7d39c7 100644 --- a/src/vnc-server.c +++ b/src/vnc-server.c @@ -91,6 +91,7 @@ read_cb (GSocket *socket, GIOCondition condition, VNCServer *server) g_free (hostname); g_signal_emit (server, signals[NEW_CONNECTION], 0, client_socket); + g_object_unref (client_socket); } return TRUE; diff --git a/tests/scripts/vnc-command.conf b/tests/scripts/vnc-command.conf index 3a974b10..9c7d5acc 100644 --- a/tests/scripts/vnc-command.conf +++ b/tests/scripts/vnc-command.conf @@ -43,4 +43,5 @@ command=Xvnc -option #?*STOP-DAEMON #?GREETER-X-0 TERMINATE SIGNAL=15 #?XSERVER-0 TERMINATE SIGNAL=15 +#?VNC-CLIENT DISCONNECTED #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/vnc-dimensions.conf b/tests/scripts/vnc-dimensions.conf index 8acfff16..ed5f4b9c 100644 --- a/tests/scripts/vnc-dimensions.conf +++ b/tests/scripts/vnc-dimensions.conf @@ -45,4 +45,5 @@ depth=16 #?*STOP-DAEMON #?GREETER-X-0 TERMINATE SIGNAL=15 #?XSERVER-0 TERMINATE SIGNAL=15 +#?VNC-CLIENT DISCONNECTED #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/vnc-guest.conf b/tests/scripts/vnc-guest.conf index e9eb1cd2..5b10f6d6 100644 --- a/tests/scripts/vnc-guest.conf +++ b/tests/scripts/vnc-guest.conf @@ -63,4 +63,5 @@ user-session=default #?SESSION-X-0 TERMINATE SIGNAL=15 #?XSERVER-0 TERMINATE SIGNAL=15 #?GUEST-ACCOUNT REMOVE USERNAME=guest-.* +#?VNC-CLIENT DISCONNECTED #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/vnc-login.conf b/tests/scripts/vnc-login.conf index 007d03fc..b99d4c57 100644 --- a/tests/scripts/vnc-login.conf +++ b/tests/scripts/vnc-login.conf @@ -57,8 +57,15 @@ user-session=default #?XSERVER-0 ACCEPT-CONNECT #?SESSION-X-0 CONNECT-XSERVER +# Logout session +#?*SESSION-X-0 LOGOUT + +# X server stops +#?XSERVER-0 TERMINATE SIGNAL=15 + +# VNC connection ends +#?VNC-CLIENT DISCONNECTED + # Clean up #?*STOP-DAEMON -#?SESSION-X-0 TERMINATE SIGNAL=15 -#?XSERVER-0 TERMINATE SIGNAL=15 #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/vnc-open-file-descriptors.conf b/tests/scripts/vnc-open-file-descriptors.conf index a1fecad4..e43f2545 100644 --- a/tests/scripts/vnc-open-file-descriptors.conf +++ b/tests/scripts/vnc-open-file-descriptors.conf @@ -64,4 +64,5 @@ user-session=default #?*STOP-DAEMON #?SESSION-X-0 TERMINATE SIGNAL=15 #?XSERVER-0 TERMINATE SIGNAL=15 +#?VNC-CLIENT DISCONNECTED #?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/src/vnc-client.c b/tests/src/vnc-client.c index f70cd568..b8730dcd 100644 --- a/tests/src/vnc-client.c +++ b/tests/src/vnc-client.c @@ -68,5 +68,20 @@ main (int argc, char **argv) if (n_sent != strlen (buffer)) return EXIT_FAILURE; - return EXIT_SUCCESS; + while (TRUE) + { + n_read = g_socket_receive (socket, buffer, 1023, NULL, &error); + if (n_read < 0) + { + g_warning ("Unable to receive on VNC socket: %s", error->message); + return EXIT_FAILURE; + } + + if (n_read == 0) + { + status_notify ("VNC-CLIENT DISCONNECTED"); + return EXIT_SUCCESS; + } + } + } |