diff -Naur opendnssec-1.4.0a2-orig/enforcer/utils/ksmutil.c opendnssec-1.4.0a2/enforcer/utils/ksmutil.c
--- opendnssec-1.4.0a2-orig/enforcer/utils/ksmutil.c 2012-05-24 12:38:04.000000000 -0400
+++ opendnssec-1.4.0a2/enforcer/utils/ksmutil.c 2012-06-12 16:01:32.090442282 -0400
@@ -4063,6 +4063,7 @@
{
struct flock fl;
struct timeval tv;
+ int retry = 0;
if (lock_fd == NULL) {
printf("%s could not be opened\n", lock_filename);
@@ -4075,6 +4076,10 @@
fl.l_pid = getpid();
while (fcntl(fileno(lock_fd), F_SETLK, &fl) == -1) {
+ if (retry >= 3) {
+ printf("couldn't get lock on %s; %s\n", lock_filename, strerror(errno));
+ return 1;
+ }
if (errno == EACCES || errno == EAGAIN) {
printf("%s already locked, sleep\n", lock_filename);
@@ -4083,6 +4088,8 @@
tv.tv_usec = 0;
select(0, NULL, NULL, NULL, &tv);
+ retry++;
+
} else {
printf("couldn't get lock on %s; %s\n", lock_filename, strerror(errno));
return 1;