diff --git a/gunicorn/config.py b/gunicorn/config.py index 39ab6786..f5cebcff 100644 --- a/gunicorn/config.py +++ b/gunicorn/config.py @@ -102,6 +102,16 @@ class Config(object): raise RuntimeError("Listener address is not set") return util.parse_address(util.to_bytestring(self.conf['bind'])) + @property + def umask(self): + if not self.conf['umask']: + return 0 + umask = self.conf['umask'] + if isinstance(umask, basestring): + return int(umask, 0) + return umask + + def _hook(self, hookname, *args): hook = self.conf.get(hookname) if not hook: return diff --git a/gunicorn/main.py b/gunicorn/main.py index b07de48c..0f11dec4 100644 --- a/gunicorn/main.py +++ b/gunicorn/main.py @@ -80,7 +80,7 @@ def daemonize(umask): if os.fork() == 0: os.setsid() if os.fork() == 0: - os.umask(int(umask, 0)) + os.umask(umask) else: os._exit(0) else: @@ -135,7 +135,7 @@ def main(usage, get_app): if conf['daemon']: daemonize(conf['umask']) else: - os.umask(int(conf['umask'], 0)) + os.umask(conf['umask']) os.setpgrp() set_owner_process(conf['user'], conf['group']) configure_logging(conf) @@ -171,7 +171,7 @@ def paste_server(app, global_conf=None, host="127.0.0.1", port=None, if conf["daemon"] : daemonize(conf["umask"]) else: - os.umask(int(conf['umask'], 0)) + os.umask(conf['umask']) os.setpgrp() set_owner_process(conf["user"], conf["group"]) configure_logging(conf) diff --git a/gunicorn/management/commands/run_gunicorn.py b/gunicorn/management/commands/run_gunicorn.py index f52ed4af..912887ed 100644 --- a/gunicorn/management/commands/run_gunicorn.py +++ b/gunicorn/management/commands/run_gunicorn.py @@ -69,7 +69,7 @@ class Command(BaseCommand): if conf['daemon']: daemonize(conf['umask']) else: - os.umask(int(conf['umask'], 0)) + os.umask(conf['umask']) os.setpgrp() set_owner_process(conf["user"], conf["group"]) configure_logging(conf)