diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-07-03 21:10:20 -0300 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-07-03 21:10:20 -0300 |
commit | f16e9d281458a62da986a454522a58d9947bfd76 (patch) | |
tree | d0a0a46af38639c9244f6c722909051d1b2cb0a4 /auth/auth.c | |
parent | 2f4f65ce9137aab6acaf1004bacc09d3a975d881 (diff) | |
parent | 11b4ed1bced4e07dac02ec291c65ef4f4de5c01b (diff) | |
download | hurd-f16e9d281458a62da986a454522a58d9947bfd76.tar.gz hurd-f16e9d281458a62da986a454522a58d9947bfd76.tar.bz2 hurd-f16e9d281458a62da986a454522a58d9947bfd76.zip |
Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurd
Diffstat (limited to 'auth/auth.c')
-rw-r--r-- | auth/auth.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/auth/auth.c b/auth/auth.c index ec738ce2..ba02b963 100644 --- a/auth/auth.c +++ b/auth/auth.c @@ -342,7 +342,11 @@ S_auth_user_authenticate (struct authhandle *userauth, /* We were interrupted; remove our record. */ { hurd_ihash_locp_remove (&pending_users, u.locp); - err = EINTR; + + /* Was it a normal interruption or did RENDEZVOUS die? */ + mach_port_type_t type; + mach_port_type (mach_task_self (), rendezvous, &type); + err = type & MACH_PORT_TYPE_DEAD_NAME ? EINVAL : EINTR; } mutex_unlock (&pending_lock); @@ -403,7 +407,11 @@ S_auth_server_authenticate (struct authhandle *serverauth, /* We were interrupted; remove our record. */ { hurd_ihash_locp_remove (&pending_servers, s.locp); - err = EINTR; + + /* Was it a normal interruption or did RENDEZVOUS die? */ + mach_port_type_t type; + mach_port_type (mach_task_self (), rendezvous, &type); + err = type & MACH_PORT_TYPE_DEAD_NAME ? EINVAL : EINTR; } else { |