summaryrefslogtreecommitdiff
path: root/ext/session/mod_files.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/session/mod_files.c')
-rw-r--r--ext/session/mod_files.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c
index ab24ee6354..2802eb98e2 100644
--- a/ext/session/mod_files.c
+++ b/ext/session/mod_files.c
@@ -140,18 +140,13 @@ static void ps_files_open(ps_files *data, const char *key)
#ifdef O_EXCL
data->fd = VCWD_OPEN((buf, O_RDWR | O_BINARY));
- if (data->fd == -1) {
- if (errno == ENOENT) {
- data->fd = VCWD_OPEN((buf, O_EXCL | O_RDWR | O_CREAT | O_BINARY, 0600));
- }
- } else {
- flock(data->fd, LOCK_EX);
- }
+ if (data->fd == -1 && errno == ENOENT)
+ data->fd = VCWD_OPEN((buf, O_EXCL | O_RDWR | O_CREAT | O_BINARY, 0600));
#else
data->fd = VCWD_OPEN((buf, O_CREAT | O_RDWR | O_BINARY, 0600));
+#endif
if (data->fd != -1)
flock(data->fd, LOCK_EX);
-#endif
if (data->fd == -1)
php_error(E_WARNING, "open(%s, O_RDWR) failed: %m (%d)", buf, errno);