diff --git a/api/epplet.c b/api/epplet.c index 4d30b3f..713411f 100644 --- a/api/epplet.c +++ b/api/epplet.c @@ -5727,7 +5727,7 @@ Epplet_find_instance(char *name) for (;;) { err = fcntl(fd, F_SETLK, &fl); - if (err != EINTR) + if (err == 0 || errno != EINTR) break; } if (err == 0) @@ -5736,6 +5736,11 @@ Epplet_find_instance(char *name) locked = 1; break; } + if (errno == EACCES || errno == EAGAIN) + { + /* Locking failed due to held lock */ + continue; + } if (!exists) {