From 48a44916e7213dc1093cfda867aadf0c43caadd5 Mon Sep 17 00:00:00 2001 From: Scott Kitterman Date: Sat, 3 Mar 2018 01:45:15 -0500 Subject: [PATCH] Create PID directory if it is missing --- CHANGES | 1 + dkimpy_milter/util.py | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 16512d3..95bd7f6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,5 @@ 0.9.4 UNRELEASED + - Create PID directory if it is missing 0.9.3 2018-03-02 - Fixup csl dataset processing for single item lists diff --git a/dkimpy_milter/util.py b/dkimpy_milter/util.py index 57c476c..37d7343 100644 --- a/dkimpy_milter/util.py +++ b/dkimpy_milter/util.py @@ -86,9 +86,18 @@ def write_pid(milterconfig): try: f = open(milterconfig.get('PidFile'), 'w') except IOError as e: - if milterconfig.get('Syslog'): - syslog.syslog('Unable to write pidfle {0}. IOError: {1}'.format(milterconfig.get('PidFile'), e)) - raise + if str(e)[:35] == '[Errno 2] No such file or directory': + piddir = milterconfig.get('PidFile').rsplit('/', 1)[0] + os.mkdir(piddir) + user, group = user_group(milterconfig.get('UserID')) + os.chown(piddir, user, group) + f = open(milterconfig.get('PidFile'), 'w') + if milterconfig.get('Syslog'): + syslog.syslog('Missing pid dir created: {0}'.format(piddir)) + else: + if milterconfig.get('Syslog'): + syslog.syslog('Unable to write pidfle {0}. IOError: {1}'.format(milterconfig.get('PidFile'), e)) + raise f.write(pid) f.close() user, group = user_group(milterconfig.get('UserID'))