From a0b67db65baa0187f6d66ad15a6bd9a06953d543 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Mon, 22 Jun 2026 20:41:02 +0200 Subject: [PATCH] Fix to simplify Miniserv config lock handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⓘ Remove the obsolete eval around `flock` in the `miniserv` config lock helper and report lock, write, and close failures explicitly. --- miniserv.pl | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/miniserv.pl b/miniserv.pl index 93a62d31a..7264a4068 100755 --- a/miniserv.pl +++ b/miniserv.pl @@ -5122,15 +5122,23 @@ while(1) { # the non-blocking flock just narrows races between lock claimers. unlink($lockfile); if (open(my $locking, ">", $lockfile)) { - my $locked = eval { flock($locking, 2+4) }; - my $ok; - if ($locked) { - $ok = print $locking $$,"\n"; + if (!flock($locking, 2+4)) { + $last_lock_err = "Flock failed : ".$!; + close($locking); + unlink($lockfile); + } + elsif (!print $locking $$,"\n") { + $last_lock_err = "Lock write failed : ".$!; + close($locking); + unlink($lockfile); + } + elsif (!close($locking)) { + $last_lock_err = "Lock close failed : ".$!; + unlink($lockfile); + } + else { + return 1; } - my $closed = close($locking); - return 1 if ($locked && $ok && $closed); - unlink($lockfile); - $last_lock_err = "Lock failed : ".($@ || $!); } else { $last_lock_err = "Lock open failed : ".$!;