瀏覽代碼

vncserver: Display check should confirm lock file is still valid

If the X server is not shut down cleanly, it may leave lock files
around that "vncserver" has previously mis-identified as evidence that
the display number is still in use.

Instead of checking for existence of /tmp/.X<n>-lock, the code will
now extract the PID from the lock file and confirm that a process
exists with the same PID. This will eliminate false positives in the
case that this file references a PID that no longer exists. The Xorg
server does not have a problem with fixing this file when it next
starts up. It is only important to avoid using the port if it is still
in use.
tags/v1.10.90
Mark Mielke 3 年之前
父節點
當前提交
bf243a3329
共有 1 個文件被更改,包括 5 次插入3 次删除
  1. 5
    3
      unix/vncserver/vncserver.in

+ 5
- 3
unix/vncserver/vncserver.in 查看文件

@@ -366,9 +366,11 @@ sub CheckDisplayNumber
my $x11_lock_path = "/tmp/.X$n-lock";

if (-e $x11_lock_path) {
warn "\nWarning: $host:$n is taken because of $x11_lock_path\n";
warn "Remove this file if there is no X server $host:$n\n";
return 0;
my($pid) = `cat "$x11_lock_path"` =~ /^\s*(\d+)\s*$/;
if (defined($pid) && kill(0, $pid)) {
# Lock is associated with valid PID.
return 0;
}
}

my $rfb_port = 5900 + $n;

Loading…
取消
儲存