Revision
22905
Author
zarzycki@apple.com
Date
2006-10-17 11:29:44 -0700 (Tue, 17 Oct 2006)

Log Message

Deallocate the per job Mach port sooner.

This port is used if-and-only-if the job is created via bootstrap_create_server().

Modified Paths

Diff

Modified: trunk/launchd/src/launchd_core_logic.c (22904 => 22905)


--- trunk/launchd/src/launchd_core_logic.c	2006-10-17 17:56:58 UTC (rev 22904)
+++ trunk/launchd/src/launchd_core_logic.c	2006-10-17 18:29:44 UTC (rev 22905)
@@ -689,10 +689,12 @@
 	}
 
 	/* preflight the string so we know how big it is */
-	sprintf(buf, "100000.%s", basename((char *)argv[0]));
+	sprintf(buf, "%s.%s", sizeof(void *) == 8 ? "0xdeadbeeffeedface" : "0xbabecafe", basename((char *)argv[0]));
 
 	j = job_new(jbs, buf, NULL, argv, NULL, MACH_PORT_NULL);
 
+	sprintf(j->label, "%p.%s", j, basename(j->argv[0]));
+
 	free(argv);
 
 	if (!job_assumes(jbs, j != NULL)) {
@@ -713,10 +715,8 @@
 		goto out_bad;
 	}
 
-	sprintf(j->label, "%d.%s", MACH_PORT_INDEX(j->bs_port), basename(j->argv[0]));
+	job_log(j, LOG_INFO, "Legacy%s server created in bootstrap: %x", ond ? " on-demand" : "", jbs->bs_port);
 
-	job_log(j, LOG_INFO, "New%s server in bootstrap: %x", ond ? " on-demand" : "", jbs->bs_port);
-
 	return j;
 
 out_bad:
@@ -3175,6 +3175,9 @@
 {
 	j->priv_port_has_senders = false;
 
+	job_assumes(j, launchd_mport_close_recv(j->bs_port) == KERN_SUCCESS);
+	j->bs_port = 0;
+
 	job_log(j, LOG_DEBUG, "No more senders on privileged Mach bootstrap port");
 
 	job_dispatch(j, false);