On Tue, Dec 29, 2009 at 11:10:00PM +0100, Samuel Thibault wrote:
> 
> That's the same.  To make it clearer, see attached patch.

I meant in the other branch of the if (though for some reason I didn't
consider the server part's if).  Patch attatched for clarity.

Regards,
  Fredrik
diff --git a/auth/auth.c b/auth/auth.c
index 3c5fa86..737fd98 100644
--- a/auth/auth.c
+++ b/auth/auth.c
@@ -294,20 +294,21 @@ S_auth_user_authenticate (struct authhandle *userauth,
   s = hurd_ihash_find (&pending_servers, rendezvous);
   if (s)
     {
       /* Found it!  Extract the port.  */
       *newport = s->passthrough;
       *newporttype = MACH_MSG_TYPE_MOVE_SEND;
 
       /* Remove it from the pending list.  */
       hurd_ihash_locp_remove (&pending_servers, s->locp);
 
+      error_t err2 = mach_port_request_notification(mach_task_self(), rendezvous, MACH_NOTIFY_DEAD_NAME, 0, MACH_PORT_NULL, MACH_MSG_TYPE_MAKE_SEND_ONCE, &old);
       /* Give the server the auth port and wake the RPC up.
 	 We need to add a ref in case the port dies.  */
       s->user = userauth;
       ports_port_ref (userauth);
 
       condition_signal (&s->wakeup);
       mutex_unlock (&pending_lock);
 
       mach_port_deallocate (mach_task_self (), rendezvous);
       return 0;

Reply via email to