diff options
| author | 2025-09-08 18:01:46 -0400 | |
|---|---|---|
| committer | 2025-09-08 18:01:46 -0400 | |
| commit | ed403279224444f9fb3bac68a1ab008f8e7dfd8c (patch) | |
| tree | d025848287811d17da9a6d1aa289a492c3425dd7 /src/socket | |
| parent | 4aea807a167a894fd264718efc8c9fa8bced7dcb (diff) | |
| download | libnaunet-ed403279224444f9fb3bac68a1ab008f8e7dfd8c.tar.gz libnaunet-ed403279224444f9fb3bac68a1ab008f8e7dfd8c.tar.bz2 libnaunet-ed403279224444f9fb3bac68a1ab008f8e7dfd8c.zip | |
Cleanup libev usage, socket error checking
- Remove packet.opaque.
- Don't ensure_space() of buffer if not updating size.
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/socket')
| -rw-r--r-- | src/socket/socket.h | 2 | ||||
| -rw-r--r-- | src/socket/socket_linux.c | 10 | ||||
| -rw-r--r-- | src/socket/socket_windows.c | 19 |
3 files changed, 29 insertions, 2 deletions
diff --git a/src/socket/socket.h b/src/socket/socket.h index e1b203a..3872bd4 100644 --- a/src/socket/socket.h +++ b/src/socket/socket.h @@ -80,5 +80,7 @@ ssize_t nn_socket_write(struct nn_socket *sock, void *buf, size_t size); ssize_t nn_socket_sendto(struct nn_socket *sock, void *buf, size_t size); ssize_t nn_socket_recvfrom(struct nn_socket *sock, void *buf, size_t size); +bool nn_socket_check_error(ssize_t ret); + void nn_socket_shutdown(struct nn_socket *sock); void nn_socket_close(struct nn_socket *sock); diff --git a/src/socket/socket_linux.c b/src/socket/socket_linux.c index d854644..70d9184 100644 --- a/src/socket/socket_linux.c +++ b/src/socket/socket_linux.c @@ -277,6 +277,16 @@ ssize_t nn_socket_recvfrom(struct nn_socket *sock, void *buf, size_t size) return recvfrom(sock->fd, buf, size, 0, sock->addrinfo->ai_addr, &sock->addrinfo->ai_addrlen); } +// This would normally be a log_warn() but we rely on expected errors for control flow. +bool nn_socket_check_error(ssize_t ret) +{ + if (ret < 0) { + log_debug("Socket error: %s (%d).", nn_strerror(errno), errno); + return true; + } + return false; +} + s32 nn_socket_get_fd(struct nn_socket *sock) { return sock->fd; diff --git a/src/socket/socket_windows.c b/src/socket/socket_windows.c index 123640e..69fa55b 100644 --- a/src/socket/socket_windows.c +++ b/src/socket/socket_windows.c @@ -1,6 +1,8 @@ #define AL_LOG_SECTION "socket" #include <al/log.h> +#include "../util/error.h" + #include "socket.h" #include "socket_internal.h" #include "net.h" @@ -125,12 +127,12 @@ s32 nn_socket_get_fd(struct nn_socket *sock) ssize_t nn_socket_read(struct nn_socket *sock, void *buf, size_t size) { - return recv(sock->fd, buf, (s32)size, 0); + return (ssize_t)recv(sock->fd, buf, (s32)size, 0); } ssize_t nn_socket_write(struct nn_socket *sock, void *buf, size_t size) { - return send(sock->fd, buf, (s32)size, 0); + return (ssize_t)send(sock->fd, buf, (s32)size, 0); } ssize_t nn_socket_sendto(struct nn_socket *sock, void *buf, size_t size) @@ -149,6 +151,17 @@ ssize_t nn_socket_recvfrom(struct nn_socket *sock, void *buf, size_t size) return 0; } +bool nn_socket_check_error(ssize_t ret) +{ + if (ret == SOCKET_ERROR) { + s32 err = WSAGetLastError(); + char *strerror = nn_win32_error_message(err); + log_debug("Socket error: %s (%d).", strerror ? strerror : "(None)", err); + return true; + } + return false; +} + void nn_socket_shutdown(struct nn_socket *sock) { if (shutdown(sock->fd, SD_BOTH) == SOCKET_ERROR) {} @@ -157,5 +170,7 @@ void nn_socket_shutdown(struct nn_socket *sock) void nn_socket_close(struct nn_socket *sock) { _close(sock->internal_fd); + // https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/close?view=msvc-170 + // Based on these docs, I assume calling closesocket() is not necessary. //closesocket(sock->fd); } |