diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-07-05 17:09:58 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-07-05 17:09:58 +0200 |
commit | 9b64495c6cd22cd65f118c18a36b2de7cbde4344 (patch) | |
tree | 4ea487ab78ca73da32c50fa48bc3be546213551f /pflocal/socket.c | |
parent | 414f6c35a62a7e72f40c39089a9952913a7eeb90 (diff) | |
download | hurd-9b64495c6cd22cd65f118c18a36b2de7cbde4344.tar.gz hurd-9b64495c6cd22cd65f118c18a36b2de7cbde4344.tar.bz2 hurd-9b64495c6cd22cd65f118c18a36b2de7cbde4344.zip |
pflocal: support SO_SNDBUF for unconnected sockets
We can store the requested value, to be applied when we connect the
sockets.
* pflocal/sock.h (struct sock): Add req_write_limit field.
* pflocal/sock.c (sock_create): Initialize req_write_limit field to 0.
(sock_connect): Bump the write_limit of the write pipe to the
req_write_limit value.
(sock_shutdown): Update req_write_limit from the write_limit of the
write pipe.
* pflocal/socket.c (S_socket_getopt, S_socket_setopt): When write_pipe
is NULL, use req_write_limit.
Diffstat (limited to 'pflocal/socket.c')
-rw-r--r-- | pflocal/socket.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/pflocal/socket.c b/pflocal/socket.c index 8f90da2d..89444370 100644 --- a/pflocal/socket.c +++ b/pflocal/socket.c @@ -479,12 +479,10 @@ S_socket_getopt (struct sock_user *user, break; } pipe = sock->write_pipe; - if (!pipe) - { - ret = ENOTCONN; - break; - } - *(int *)*value = pipe->write_limit; + if (pipe) + *(int *)*value = pipe->write_limit; + else + *(int *)*value = sock->req_write_limit; *value_len = sizeof (int); break; case SO_ERROR: @@ -594,7 +592,7 @@ S_socket_setopt (struct sock_user *user, pipe = sock->write_pipe; if (!pipe) { - ret = ENOTCONN; + sock->req_write_limit = new; break; } |