* net: use struct sockaddr_storage to store addresses
authorUrban Wallasch <urban.wallasch@freenet.de>
Thu, 24 Oct 2019 02:06:17 +0000 (04:06 +0200)
committerUrban Wallasch <urban.wallasch@freenet.de>
Thu, 24 Oct 2019 02:06:17 +0000 (04:06 +0200)
net/net.c
net/net_test.c

index af9b43c3548806eff9f3f906674902d85128f0c5..957e82d853301732a7bb934a072b5ecd52bc3fa4 100644 (file)
--- a/net/net.c
+++ b/net/net.c
@@ -255,15 +255,15 @@ int tcp_accept(int sock, int timeout) {
     r = poll(&pfd, 1, timeout);
     if (r == 1 && pfd.revents & (POLLIN | POLLERR | POLLHUP)) {
         /* In case of POLLERR or POLLHUP we let accept() catch the error! */
-        unsigned char a_[128];
-        struct sockaddr *addr = (void *)a_;
-        socklen_t addrlen = sizeof a_;
-        r = accept(sock, addr, &addrlen);
+        struct sockaddr_storage addr;
+        struct sockaddr *paddr = (struct sockaddr *)&addr;
+        socklen_t addrlen = sizeof addr;
+        r = accept(sock, paddr, &addrlen);
         if (r < 0) {
             r = EAI_SYSTEM;
         }
         else {
-            ADDR2STR(addr, addrlen, stra, 100);
+            ADDR2STR(paddr, addrlen, stra, 100);
             NETLOG_DBG("accept(%d) -> (%d, %s): Ok", sock, r, stra);
         }
     }
index 14b3ad9d6631438f5e70287815a247c81fc46d67..3d764a2fa346a63492bee6ff449aef9da0c6ff4d 100644 (file)
@@ -183,7 +183,7 @@ int main(int argc, char *argv[]) {
             exit(EXIT_FAILURE);
         }
         while (1) {
-            struct sockaddr_in6 addr;
+            struct sockaddr_storage addr;
             struct sockaddr *paddr = (struct sockaddr *)&addr;
             socklen_t addrlen = sizeof addr;
             for (n = 1; n > 0; ) {