Blob Blame History Raw
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;