From 05d6695b41a801de1ee024e5d6cc3a8170ab0ea6 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Wed, 7 Jan 2015 16:00:06 +0100 Subject: [PATCH hurd 4/5] auth: remove implicit assumption about the bootstrap process The current code assumes that it can speak the startup protocol over its bootstrap port. * auth/auth.c (main): Generalize by trying to use `/servers/startup' before falling back to the bootstrap port. --- auth/auth.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/auth/auth.c b/auth/auth.c index a7a188a..d5ef587 100644 --- a/auth/auth.c +++ b/auth/auth.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -482,6 +483,7 @@ main (int argc, char **argv) { error_t err; mach_port_t boot; + mach_port_t startup; process_t proc; mach_port_t hostpriv, masterdev; struct authhandle *firstauth; @@ -518,10 +520,21 @@ main (int argc, char **argv) _hurd_port_set (&_hurd_ports[INIT_PORT_PROC], proc); _hurd_proc_init (argv, NULL, 0); + startup = file_name_lookup (_SERVERS_STARTUP, 0, 0); + if (! MACH_PORT_VALID (startup)) + { + error (0, errno, "%s", _SERVERS_STARTUP); + /* Fall back to using the bootstrap port as before. */ + startup = boot; + } + /* Init knows intimately that we will be ready for messages as soon as this returns. */ - startup_essential_task (boot, mach_task_self (), MACH_PORT_NULL, "auth", + startup_essential_task (startup, mach_task_self (), MACH_PORT_NULL, "auth", hostpriv); + + if (startup != boot) + mach_port_deallocate (mach_task_self (), startup); mach_port_deallocate (mach_task_self (), boot); mach_port_deallocate (mach_task_self (), hostpriv); -- 2.1.4