diff options
Diffstat (limited to 'ext/session/mod_files.c')
-rw-r--r-- | ext/session/mod_files.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c index 50679dae8f..65a91792cf 100644 --- a/ext/session/mod_files.c +++ b/ext/session/mod_files.c @@ -110,10 +110,18 @@ static void _ps_files_open(ps_files *data, const char *key) data->lastkey = estrdup(key); +#ifdef O_EXCL + data->fd = open(buf, O_EXCL | O_RDWR | O_CREAT, 0600); + /* -1, if file exists and access failed due to O_EXCL|O_CREAT */ + if(data->fd == -1) { + data->fd = open(buf, O_EXCL | O_RDWR); + } +#else data->fd = open(buf, O_CREAT | O_RDWR, 0600); - if(data->fd > -1) { + if(data->fd != -1) { flock(data->fd, LOCK_EX); } +#endif } } |