diff --git a/utils.c b/utils.c index 346ef278..409ccc3c 100644 --- a/utils.c +++ b/utils.c @@ -171,7 +171,9 @@ void daemonize(char *logfile) { exit(0); } - umask(0); + if (!uwsgi.do_not_change_umask) { + umask(0); + } /*if (chdir("/") != 0) { uwsgi_error("chdir()"); diff --git a/uwsgi.c b/uwsgi.c index 0f2d19b1..9cb98abf 100644 --- a/uwsgi.c +++ b/uwsgi.c @@ -3365,6 +3365,8 @@ void uwsgi_opt_set_umask(char *opt, char *value, void *mode) { umask_mode = (umask_mode << 3) + (value[3] - '0'); } umask(umask_mode); + + uwsgi.do_not_change_umask = 1; } diff --git a/uwsgi.h b/uwsgi.h index 612fd990..b50b00e7 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -1191,6 +1191,7 @@ struct uwsgi_server { struct uwsgi_string_list *static_index; char *daemonize; + int do_not_change_umask; char *logfile; int logfile_chown;