diff options
| author | 2025-11-30 13:51:19 -0500 | |
|---|---|---|
| committer | 2025-11-30 13:55:55 -0500 | |
| commit | 1e0f60341192c79bf49e84e6b187ffb7bfded252 (patch) | |
| tree | 35e02f466e553e01f0421c391c16af918efd6098 /src/socket | |
| parent | 5edcdda9efadd7c6ff5a47bef2897c0eb995057f (diff) | |
| download | libnaunet-1e0f60341192c79bf49e84e6b187ffb7bfded252.tar.gz libnaunet-1e0f60341192c79bf49e84e6b187ffb7bfded252.tar.bz2 libnaunet-1e0f60341192c79bf49e84e6b187ffb7bfded252.zip | |
Build fixes, socket_cleanup()
- Make packet_cache_send() 3 steps, lock -> send -> unlock.
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/socket')
| -rw-r--r-- | src/socket/socket.h | 4 | ||||
| -rw-r--r-- | src/socket/socket_linux.c | 11 | ||||
| -rw-r--r-- | src/socket/socket_windows.c | 5 |
3 files changed, 19 insertions, 1 deletions
diff --git a/src/socket/socket.h b/src/socket/socket.h index 3872bd4..fde26f4 100644 --- a/src/socket/socket.h +++ b/src/socket/socket.h @@ -25,7 +25,7 @@ enum { }; // @TODO: Guard against EINTR? -// https://github.com/kovidgoyal/kitty/blob/master/kitty/safe-wrappers.h +// https://github.com/kovidgoyal/kitty/blob/master/kitty/safe-wrappers.h struct nn_socket { u8 type; @@ -37,6 +37,7 @@ struct nn_socket { s32 fd; struct addrinfo *addrinfo; struct sockaddr_un addr_un; + u32 acceptconn; #endif }; @@ -84,3 +85,4 @@ bool nn_socket_check_error(ssize_t ret); void nn_socket_shutdown(struct nn_socket *sock); void nn_socket_close(struct nn_socket *sock); +void nn_socket_cleanup(struct nn_socket *sock); diff --git a/src/socket/socket_linux.c b/src/socket/socket_linux.c index 6a97556..e6947c3 100644 --- a/src/socket/socket_linux.c +++ b/src/socket/socket_linux.c @@ -185,6 +185,10 @@ bool nn_socket_listen(struct nn_socket *sock) return false; } + socklen_t optlen = sizeof(sock->acceptconn); + getsockopt(sock->fd, SOL_SOCKET, SO_ACCEPTCONN, &sock->acceptconn, &optlen); + al_assert(sock->acceptconn); + log_debug("Listening."); return true; @@ -305,3 +309,10 @@ void nn_socket_close(struct nn_socket *sock) sock->addrinfo = NULL; } } + +void nn_socket_cleanup(struct nn_socket *sock) +{ + if (sock->type == NNWT_SOCKET_UNIX && sock->acceptconn) { + unlink(sock->addr_un.sun_path); + } +} diff --git a/src/socket/socket_windows.c b/src/socket/socket_windows.c index 3cf316f..9baa312 100644 --- a/src/socket/socket_windows.c +++ b/src/socket/socket_windows.c @@ -174,3 +174,8 @@ void nn_socket_close(struct nn_socket *sock) // Based on these docs, I assume calling closesocket() is not necessary. //closesocket(sock->fd); } + +void nn_socket_cleanup(struct nn_socket *sock) +{ + (void)sock; +} |