bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 3/4] lwip: return EINTR when a select() IPC thread is cancelled


From: Joan Lledó
Subject: [PATCH 3/4] lwip: return EINTR when a select() IPC thread is cancelled
Date: Tue, 7 Aug 2018 18:02:42 +0200

---
 lwip/io-ops.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lwip/io-ops.c b/lwip/io-ops.c
index 1429bc55..72e08e26 100644
--- a/lwip/io-ops.c
+++ b/lwip/io-ops.c
@@ -198,6 +198,8 @@ lwip_io_select_common (struct sock_user *user,
   int timeout;
   struct pollfd fdp;
   nfds_t nfds;
+  mach_port_type_t type;
+  error_t err;
 
   if (!user)
     return EOPNOTSUPP;
@@ -227,6 +229,12 @@ lwip_io_select_common (struct sock_user *user,
   timeout = tv ? tv->tv_sec * 1000 + tv->tv_nsec / 1000000 : -1;
   ret = lwip_poll (&fdp, nfds, timeout);
 
+  err = mach_port_type (mach_task_self (), reply, &type);
+  if (err || (type & MACH_PORT_TYPE_DEAD_NAME))
+    /* The reply port is dead, we were cancelled */
+    return EINTR;
+
+
   if (ret > 0)
     {
       if (fdp.revents & POLLERR)
-- 
2.17.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]