diff options
author | Sergey Bugaev <bugaevc@gmail.com> | 2023-05-09 00:31:24 +0300 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-05-10 02:43:01 +0200 |
commit | f8e6af9f326c5c0c37f2daf351fe3a34a65db7c6 (patch) | |
tree | eff81eb593d696bf98dbb9976a78eff3c3f56257 /pflocal/socket.c | |
parent | ce0ae22d02f286c5a0ef61b5dd8e6ee9b56620d7 (diff) | |
download | hurd-f8e6af9f326c5c0c37f2daf351fe3a34a65db7c6.tar.gz hurd-f8e6af9f326c5c0c37f2daf351fe3a34a65db7c6.tar.bz2 hurd-f8e6af9f326c5c0c37f2daf351fe3a34a65db7c6.zip |
pflocal: Port to x86_64
Message-Id: <20230508213136.608575-30-bugaevc@gmail.com>
Diffstat (limited to 'pflocal/socket.c')
-rw-r--r-- | pflocal/socket.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/pflocal/socket.c b/pflocal/socket.c index 8c240e09..625980b9 100644 --- a/pflocal/socket.c +++ b/pflocal/socket.c @@ -380,7 +380,7 @@ S_socket_recv (struct sock_user *user, int in_flags, data_t *data, mach_msg_type_name_t *data_len, mach_port_t **ports, mach_msg_type_name_t *ports_type, - size_t *num_ports, + mach_msg_type_name_t *num_ports, data_t *control, mach_msg_type_name_t *control_len, int *out_flags, vm_size_t amount) { @@ -412,12 +412,21 @@ S_socket_recv (struct sock_user *user, } else if (!err) { + size_t data_size = *data_len; + size_t control_size = *control_len; + size_t ports_size = *num_ports; noblock = (user->sock->flags & PFLOCAL_SOCK_NONBLOCK) || (in_flags & MSG_DONTWAIT); err = - pipe_recv (pipe, noblock, &flags, &source_addr, data, data_len, - amount, control, control_len, ports, num_ports); + pipe_recv (pipe, noblock, &flags, &source_addr, data, &data_size, + amount, control, &control_size, ports, &ports_size); pipe_release_reader (pipe); + if (!err) + { + *data_len = data_size; + *control_len = control_size; + *num_ports = ports_size; + } } if (!err) @@ -442,7 +451,8 @@ S_socket_recv (struct sock_user *user, error_t S_socket_getopt (struct sock_user *user, int level, int opt, - data_t *value, size_t *value_len) + data_t *value, + mach_msg_type_name_t *value_len) { int ret = 0; struct pipe *pipe; @@ -531,7 +541,8 @@ S_socket_getopt (struct sock_user *user, error_t S_socket_setopt (struct sock_user *user, - int level, int opt, const_data_t value, size_t value_len) + int level, int opt, const_data_t value, + mach_msg_type_name_t value_len) { int ret = 0; struct pipe *pipe; |