[launchd-changes] [23340] trunk/launchd/src/launchd_core_logic.c

source_changes at macosforge.org source_changes at macosforge.org
Thu Aug 16 15:07:50 PDT 2007


Revision: 23340
          http://trac.macosforge.org/projects/launchd/changeset/23340
Author:   zarzycki at apple.com
Date:     2007-08-16 15:07:50 -0700 (Thu, 16 Aug 2007)

Log Message:
-----------
<rdar://problem/5415523> Server9A525(Install): Server doesn't bring Server Assistant after installation completed.

Modified Paths:
--------------
    trunk/launchd/src/launchd_core_logic.c

Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c	2007-08-14 21:14:14 UTC (rev 23339)
+++ trunk/launchd/src/launchd_core_logic.c	2007-08-16 22:07:50 UTC (rev 23340)
@@ -3035,6 +3035,7 @@
 semaphoreitem_watch(job_t j, struct semaphoreitem *si)
 {
 	char parentdir_path[PATH_MAX], *which_path = si->what;
+	int saved_errno = 0;
 	int fflags = 0;
 	
 	strlcpy(parentdir_path, dirname(si->what), sizeof(parentdir_path));
@@ -3054,6 +3055,7 @@
 		return;
 	}
 
+	/* See 5321044 for why we do the do-while loop and 5415523 for why ENOENT is checked */
 	do {
 		if (si->fd == -1) {
 			if ((si->fd = _fd(open(which_path, O_EVTONLY|O_NOCTTY))) == -1) {
@@ -3069,6 +3071,7 @@
 		job_log(j, LOG_DEBUG, "Watching Vnode: %d", si->fd);
 
 		if (kevent_mod(si->fd, EVFILT_VNODE, EV_ADD, fflags, 0, j) == -1) {
+			saved_errno = errno;
 			/*
 			 * The FD can be revoked between the open() and kevent().
 			 * This is similar to the inability for kevents to be
@@ -3078,7 +3081,7 @@
 			job_assumes(j, runtime_close(si->fd) == 0);
 			si->fd = -1;
 		}
-	} while (si->fd == -1);
+	} while ((si->fd == -1) && (saved_errno == ENOENT));
 }
 
 void

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070816/a1c7ebbc/attachment.html


More information about the launchd-changes mailing list