From b034b81ad74f61fc2f188c68df40f89b7900d0aa Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 7 Sep 2026 13:04:10 -0400 Subject: Add cork() and eagain() to socket Signed-off-by: Andrew Opalach --- src/socket/bsd_common.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/socket/bsd_common.c (limited to 'src/socket/bsd_common.c') 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 +#include +#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)); +} -- cgit v1.2.3-101-g0448