summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYasuo Ohgaki <yohgaki@php.net>2015-02-03 14:02:58 +0900
committerYasuo Ohgaki <yohgaki@php.net>2015-02-03 14:02:58 +0900
commitb41a6c6f055e87d87b42bfd87fbad14a23134e4e (patch)
tree2e860c75924370c2a41663d2409da525dcf5b7a2
parent853ae39d6ea6a4d2ce95098744e481a1e8573ad8 (diff)
downloadphp-git-b41a6c6f055e87d87b42bfd87fbad14a23134e4e.tar.gz
Fixed Bug #66623 no EINTR check on flock(LOCK_EX)
-rw-r--r--ext/session/mod_files.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c
index 0ce73bd56c..195104f391 100644
--- a/ext/session/mod_files.c
+++ b/ext/session/mod_files.c
@@ -121,7 +121,8 @@ static void ps_files_close(ps_files *data)
static void ps_files_open(ps_files *data, const char *key TSRMLS_DC)
{
char buf[MAXPATHLEN];
- struct stat sbuf;
+ struct stat sbuf;
+ int ret;
if (data->fd < 0 || !data->lastkey || strcmp(key, data->lastkey)) {
if (data->lastkey) {
@@ -164,7 +165,9 @@ static void ps_files_open(ps_files *data, const char *key TSRMLS_DC)
return;
}
#endif
- flock(data->fd, LOCK_EX);
+ do {
+ ret = flock(data->fd, LOCK_EX);
+ } while (ret == -1 && errno == EINTR);
#ifdef F_SETFD
# ifndef FD_CLOEXEC