From 20c039fdb8e7cc4925171330ebbb003e5a716386 Mon Sep 17 00:00:00 2001 From: Dmitry Podgorny Date: Tue, 31 Mar 2020 16:17:26 +0300 Subject: [PATCH] sock: replace sockaddr with sockaddr_storage sockaddr structure may be insufficient to hold IPv6 address. Replace it with sockaddr_storage structure. Fixes #153. --- src/sock.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/sock.c b/src/sock.c index 069a758..a7c82fa 100644 --- a/src/sock.c +++ b/src/sock.c @@ -212,17 +212,18 @@ int sock_is_recoverable(const int error) int sock_connect_error(const sock_t sock) { - struct sockaddr sa; + struct sockaddr_storage ss; + struct sockaddr *sa = (struct sockaddr *)&ss; socklen_t len; char temp; - memset(&sa, 0, sizeof(sa)); - sa.sa_family = AF_UNSPEC; - len = sizeof(sa); + memset(&ss, 0, sizeof(ss)); + len = sizeof(ss); + sa->sa_family = AF_UNSPEC; /* we don't actually care about the peer name, we're just checking if * we're connected or not */ - if (getpeername(sock, &sa, &len) == 0) { + if (getpeername(sock, sa, &len) == 0) { return 0; }