Merge pull request #3523 from bysiber/fix-pidfile-fd-leak

fix: ensure pidfile fd is closed on rename failure
This commit is contained in:
Benoit Chesneau 2026-02-20 13:43:14 +01:00 committed by GitHub
commit d606336de4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -33,12 +33,14 @@ class Pidfile:
if fdir and not os.path.isdir(fdir):
raise RuntimeError("%s doesn't exist. Can't create pidfile." % fdir)
fd, fname = tempfile.mkstemp(dir=fdir)
os.write(fd, ("%s\n" % self.pid).encode('utf-8'))
if self.fname:
os.rename(fname, self.fname)
else:
self.fname = fname
os.close(fd)
try:
os.write(fd, ("%s\n" % self.pid).encode('utf-8'))
if self.fname:
os.rename(fname, self.fname)
else:
self.fname = fname
finally:
os.close(fd)
# set permissions to -rw-r--r--
os.chmod(self.fname, 420)