Changeset 23125
- Timestamp:
- 03/03/07 15:42:02 (21 months ago)
- Files:
-
- 1 modified
-
trunk/launchd/src/launchd_core_logic.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/launchd/src/launchd_core_logic.c
r23124 r23125 273 273 unsigned int globargv:1, wait4debugger:1, unload_at_exit:1, stall_before_exec:1, only_once:1, 274 274 currently_ignored:1, forced_peers_to_demand_mode:1, setnice:1, hopefully_exits_last:1, removal_pending:1, 275 wait4pipe_eof:1, sent_sigkill:1, debug_before_kill:1 ;275 wait4pipe_eof:1, sent_sigkill:1, debug_before_kill:1, weird_per_user_bootstrap:1; 276 276 char label[0]; 277 277 }; … … 1650 1650 job_log(j, LOG_DEBUG, "Reaping"); 1651 1651 1652 if (j->weird_per_user_bootstrap) { 1653 mach_msg_size_t mxmsgsz = sizeof(union __RequestUnion__job_mig_protocol_vproc_subsystem); 1654 1655 if (job_mig_protocol_vproc_subsystem.maxsize > mxmsgsz) { 1656 mxmsgsz = job_mig_protocol_vproc_subsystem.maxsize; 1657 } 1658 1659 job_assumes(j, runtime_add_mport(j->mgr->jm_port, protocol_vproc_server, mxmsgsz) == KERN_SUCCESS); 1660 j->weird_per_user_bootstrap = false; 1661 } 1662 1652 1663 if (j->log_redirect_fd && (!j->wait4pipe_eof || j->mgr->shutting_down)) { 1653 1664 job_assumes(j, close(j->log_redirect_fd) != -1); … … 1986 1997 time(&j->start_time); 1987 1998 1988 switch (c = runtime_fork(j-> mgr->jm_port)) {1999 switch (c = runtime_fork(j->weird_per_user_bootstrap ? j->j_port : j->mgr->jm_port)) { 1989 2000 case -1: 1990 2001 job_log_error(j, LOG_ERR, "fork() failed, will try again in one second"); … … 3466 3477 } 3467 3478 3468 if (!jobmgr_assumes(jmr, runtime_add_mport(jmr->jm_port, protocol_vproc_server, mxmsgsz) == KERN_SUCCESS)) {3469 goto out_bad;3470 }3471 3472 3479 jobmgr_assumes(jmr, (jmr->anonj = jobmgr_get_anonymous(jmr)) != NULL); 3473 3480 … … 3476 3483 if (!jm) { 3477 3484 jobmgr_assumes(jmr, kevent_mod(SIGTERM, EVFILT_SIGNAL, EV_ADD, 0, 0, jmr) != -1); 3485 } 3486 3487 if (!jm && getuid() != 0) { 3488 /* per-user bootstrap context is messy */ 3489 bootstrapper->weird_per_user_bootstrap = true; 3490 jobmgr_assumes(jmr, job_setup_machport(bootstrapper)); 3491 } else { 3492 if (!jobmgr_assumes(jmr, runtime_add_mport(jmr->jm_port, protocol_vproc_server, mxmsgsz) == KERN_SUCCESS)) { 3493 goto out_bad; 3494 } 3478 3495 } 3479 3496

