diff options
author | Yasuo Ohgaki <yohgaki@php.net> | 2015-02-03 14:02:58 +0900 |
---|---|---|
committer | Yasuo Ohgaki <yohgaki@php.net> | 2015-02-03 14:02:58 +0900 |
commit | b41a6c6f055e87d87b42bfd87fbad14a23134e4e (patch) | |
tree | 2e860c75924370c2a41663d2409da525dcf5b7a2 | |
parent | 853ae39d6ea6a4d2ce95098744e481a1e8573ad8 (diff) | |
download | php-git-b41a6c6f055e87d87b42bfd87fbad14a23134e4e.tar.gz |
Fixed Bug #66623 no EINTR check on flock(LOCK_EX)
-rw-r--r-- | ext/session/mod_files.c | 7 |
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 |