From 344a9b2da3a37d79cf03183ff7b33ccf267b85c1 Mon Sep 17 00:00:00 2001 From: Mark Mielke Date: Tue, 28 Jul 2020 23:46:02 -0400 Subject: [PATCH] vncserver: Display check should check for lock file first Checking for the existence of `/tmp/.X-lock` is a fast read-only operation, while calls to bind() or connect() are more expensive and may have side effects. Perform the fast operation first. --- unix/vncserver/vncserver.in | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/unix/vncserver/vncserver.in b/unix/vncserver/vncserver.in index 2707bace..27288fd2 100755 --- a/unix/vncserver/vncserver.in +++ b/unix/vncserver/vncserver.in @@ -363,6 +363,12 @@ sub CheckDisplayNumber { local ($n) = @_; + if (-e "/tmp/.X$n-lock") { + warn "\nWarning: $host:$n is taken because of /tmp/.X$n-lock\n"; + warn "Remove this file if there is no X server $host:$n\n"; + return 0; + } + socket(S, $AF_INET, $SOCK_STREAM, 0) || die "$prog: socket failed: $!\n"; eval 'setsockopt(S, &SOL_SOCKET, &SO_REUSEADDR, pack("l", 1))'; if (!bind(S, pack('S n x12', $AF_INET, 6000 + $n))) { @@ -379,12 +385,6 @@ sub CheckDisplayNumber } close(S); - if (-e "/tmp/.X$n-lock") { - warn "\nWarning: $host:$n is taken because of /tmp/.X$n-lock\n"; - warn "Remove this file if there is no X server $host:$n\n"; - return 0; - } - if (-e "/tmp/.X11-unix/X$n") { warn "\nWarning: $host:$n is taken because of /tmp/.X11-unix/X$n\n"; warn "Remove this file if there is no X server $host:$n\n"; -- 2.39.5