diff options
| author | 2026-09-07 13:04:10 -0400 | |
|---|---|---|
| committer | 2026-09-07 13:04:10 -0400 | |
| commit | b034b81ad74f61fc2f188c68df40f89b7900d0aa (patch) | |
| tree | 20a80e4ca6d587f7fbb26f1cda13c358bc2f0473 /src/socket/bsd_common.c | |
| parent | a27216c145b1b13ad863e49e5400778ad608640f (diff) | |
| download | libnaunet-b034b81ad74f61fc2f188c68df40f89b7900d0aa.tar.gz libnaunet-b034b81ad74f61fc2f188c68df40f89b7900d0aa.tar.bz2 libnaunet-b034b81ad74f61fc2f188c68df40f89b7900d0aa.zip | |
Add cork() and eagain() to socket
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/socket/bsd_common.c')
| -rw-r--r-- | src/socket/bsd_common.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/socket/bsd_common.c b/src/socket/bsd_common.c new file mode 100644 index 0000000..af0a9b6 --- /dev/null +++ b/src/socket/bsd_common.c @@ -0,0 +1,40 @@ +#ifndef NAUNET_ON_WINDOWS +#include <netinet/tcp.h> +#include <netinet/in.h> +#endif + +#include "socket.h" + +void nn_socket_set_nodelay(struct nn_socket *sock, s32 nodelay) +{ + al_assert(sock->type == NNWT_SOCKET_TCP); + setsockopt(sock->fd, IPPROTO_TCP, TCP_NODELAY, (char *)&nodelay, sizeof(nodelay)); +} + +u32 nn_socket_get_send_buf(struct nn_socket *sock) +{ + u32 send_queue_size; + socklen_t optlen = sizeof(send_queue_size); + getsockopt(sock->fd, SOL_SOCKET, SO_SNDBUF, (char *)&send_queue_size, &optlen); + return send_queue_size; +} + +void nn_socket_set_send_buf(struct nn_socket *sock, u32 sndbuf) +{ + u32 send_queue_size = sndbuf; + setsockopt(sock->fd, SOL_SOCKET, SO_SNDBUF, (char *)&send_queue_size, sizeof(send_queue_size)); +} + +u32 nn_socket_get_recv_buf(struct nn_socket *sock) +{ + u32 receive_queue_size; + socklen_t optlen = sizeof(receive_queue_size); + getsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF, (char *)&receive_queue_size, &optlen); + return receive_queue_size; +} + +void nn_socket_set_recv_buf(struct nn_socket *sock, u32 rcvbuf) +{ + u32 receive_queue_size = rcvbuf; + setsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF, (char *)&receive_queue_size, sizeof(receive_queue_size)); +} |