From b225b63cdf093008fe4f9a8adae05e48475a0bf2 Mon Sep 17 00:00:00 2001 From: "Alexander \"Arav\" Andreev" Date: Mon, 25 Mar 2024 05:02:05 +0400 Subject: [PATCH] In net.c sockaddr structures' had their *_len fields set to 0, so recvfrom didn't fill an inaddr field. --- src/net.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/net.c b/src/net.c index e1d03bd..4f8eb0e 100644 --- a/src/net.c +++ b/src/net.c @@ -33,6 +33,7 @@ int net_client_init(net_t *const n, const char *const raddr, const char *const r memset(&n->raddr, 0, sizeof(n->raddr)); memcpy(&n->raddr, cri->ai_addr, sizeof(n->raddr)); + n->raddr_len = sizeof(n->raddr); freeaddrinfo(ri); @@ -69,9 +70,10 @@ int net_server_init(net_t *const n, const char *const laddr, const char *const l } memset(&n->inaddr, 0, sizeof(n->inaddr)); - n->inaddr_len = 0; + n->inaddr_len = sizeof(n->inaddr); memset(&n->raddr, 0, sizeof(n->raddr)); + n->raddr_len = sizeof(n->raddr); memset(&n->laddr, 0, sizeof(n->laddr)); memcpy(&n->laddr, cli->ai_addr, sizeof(n->raddr)); @@ -88,10 +90,10 @@ void net_destroy(net_t *n) { } memset(&n->raddr, 0, sizeof(n->raddr)); - n->raddr_len = 0; + n->raddr_len = sizeof(n->raddr); memset(&n->laddr, 0, sizeof(n->laddr)); memset(&n->inaddr, 0, sizeof(n->inaddr)); - n->inaddr_len = 0; + n->inaddr_len = sizeof(n->inaddr); } ssize_t net_send(net_t *const n, const char *const buf, int buf_len) {