fix: ensure pidfile fd is closed on rename failure

This commit is contained in:
Kadir Can Ozden 2026-02-20 06:17:29 +03:00
parent 2d4310116d
commit 6ada1ce03a

View File

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