Description: Support MSG_DONTWAIT in pflocal send/recv Author: Christian Seiler Bug: https://lists.gnu.org/archive/html/bug-hurd/2016-08/msg00000.html Last-Update: 2016-08-05 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ --- a/pflocal/socket.c +++ b/pflocal/socket.c @@ -282,6 +282,7 @@ S_socket_send (struct sock_user *user, s size_t *amount) { error_t err = 0; + int noblock; struct pipe *pipe; struct sock *sock, *dest_sock; struct addr *source_addr; @@ -333,8 +334,9 @@ S_socket_send (struct sock_user *user, s if (!err) { - err = pipe_send (pipe, sock->flags & PFLOCAL_SOCK_NONBLOCK, - source_addr, data, data_len, + noblock = (user->sock->flags & PFLOCAL_SOCK_NONBLOCK) + || (flags & MSG_DONTWAIT); + err = pipe_send (pipe, noblock, source_addr, data, data_len, control, control_len, ports, num_ports, amount); if (dest_sock) @@ -373,6 +375,7 @@ S_socket_recv (struct sock_user *user, { error_t err; unsigned flags; + int noblock; struct pipe *pipe; void *source_addr = NULL; @@ -398,10 +401,11 @@ S_socket_recv (struct sock_user *user, } else if (!err) { + noblock = (user->sock->flags & PFLOCAL_SOCK_NONBLOCK) + || (in_flags & MSG_DONTWAIT); err = - pipe_recv (pipe, user->sock->flags & PFLOCAL_SOCK_NONBLOCK, &flags, - &source_addr, data, data_len, amount, - control, control_len, ports, num_ports); + pipe_recv (pipe, noblock, &flags, &source_addr, data, data_len, + amount, control, control_len, ports, num_ports); pipe_release_reader (pipe); }