From: Mark Mielke Date: Wed, 29 Jul 2020 03:46:02 +0000 (-0400) Subject: vncserver: Display check should check for lock file first X-Git-Tag: v1.10.90~5^2~5 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=344a9b2da3a37d79cf03183ff7b33ccf267b85c1;p=tigervnc.git 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. --- 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";