Joan Lledó, le sam. 11 août 2018 18:17:09 +0200, a ecrit:
> Needed to properly support poll in glibc (_hurd_select).
>
> * lwip/io-ops.c (lwip_io_select_common): Detect when the
> current RPC is cancelled by checking the reply port.
Applied, thanks!
> ---
> 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.11.0
>
>
--
Samuel
<T> l'autre jour j'ai eu un type qu'est venu me demander « J'ai installé le
logiciel comme indiqué sur le site. Puis quand je le lance ça plante et ça me
marque “Voulez-vous envoyez un rapport d'erreur ?”. Je fais quoi ?! »
-+- ... -+-