about summary refs log tree commit diff
path: root/hurd/intr-msg.c
diff options
context:
space:
mode:
Diffstat (limited to 'hurd/intr-msg.c')
-rw-r--r--hurd/intr-msg.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c
index 2f83ac6ce7..1f7724ee8b 100644
--- a/hurd/intr-msg.c
+++ b/hurd/intr-msg.c
@@ -141,7 +141,7 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
       else
 	/* The operation was supposedly interrupted, but still has
 	   not returned.  Declare it interrupted.  */
-	goto interrupted;
+	goto dead;
 
     case MACH_SEND_INTERRUPTED: /* RPC didn't get out.  */
       if (!(option & MACH_SEND_MSG))
@@ -324,17 +324,21 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
 	  timeout = user_timeout;
 	  goto message;
 	}
-      /* FALLTHROUGH */
+      err = EINTR;
+
+      /* The EINTR return indicates cancellation, so clear the flag.  */
+      ss->cancel = 0;
+      break;
 
     case MACH_RCV_PORT_DIED:
       /* Server didn't respond to interrupt_operation,
 	 so the signal thread destroyed the reply port.  */
       /* FALLTHROUGH */
 
-    interrupted:
-      err = EINTR;
+    dead:
+      err = EIO;
 
-      /* The EINTR return indicates cancellation, so clear the flag.  */
+      /* The EIO return indicates cancellation, so clear the flag.  */
       ss->cancel = 0;
       break;