From 119ec40ace2dfb72246d9161565d1e6bcba42783 Mon Sep 17 00:00:00 2001 From: Tom Early Date: Mon, 8 Apr 2019 09:41:29 -0700 Subject: [PATCH] setting ip6 address in init and better check for 'loc' and 'any' addresses --- SockAddress.h | 19 ++++++++++--------- TCPReaderWriterClient.cpp | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/SockAddress.h b/SockAddress.h index 1a5891f..59d2aad 100644 --- a/SockAddress.h +++ b/SockAddress.h @@ -19,6 +19,7 @@ */ #include +#include #include #include @@ -46,9 +47,9 @@ public: struct sockaddr_in *addr4 = (struct sockaddr_in *)&addr; addr4->sin_family = AF_INET; addr4->sin_port = htons(port); - if (*address=='l' || *address =='L') + if (0 == strncasecmp(address, "loc", 3)) inet_pton(AF_INET, "127.0.0.1", &(addr4->sin_addr)); - else if (*address=='a' || *address=='A') + else if (0 == strncasecmp(address, "any", 3)) inet_pton(AF_INET, "0.0.0.0", &(addr4->sin_addr)); else inet_pton(AF_INET, address, &(addr4->sin_addr)); @@ -56,9 +57,9 @@ public: struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&addr; addr6->sin6_family = AF_INET6; addr6->sin6_port = htons(port); - if (*address=='l' || *address =='L') + if (0 == strncasecmp(address, "loc", 3)) inet_pton(AF_INET6, "::1", &(addr6->sin6_addr)); - else if (*address=='a' || *address=='A') + else if (0 == strncasecmp(address, "any", 3)) inet_pton(AF_INET6, "::", &(addr6->sin6_addr)); else inet_pton(AF_INET6, address, &(addr6->sin6_addr)); @@ -75,9 +76,9 @@ public: struct sockaddr_in *addr4 = (struct sockaddr_in *)&addr; addr4->sin_port = htons(port); if (address) { - if (*address=='l' || *address=='L') + if (0 == strncasecmp(address, "loc", 3)) inet_pton(AF_INET, "127.0.0.1", &(addr4->sin_addr)); - else if (*address=='a' || *address=='A') + else if (0 == strncasecmp(address, "any", 3)) inet_pton(AF_INET, "0.0.0.0", &(addr4->sin_addr)); else inet_pton(AF_INET, address, &(addr4->sin_addr)); @@ -86,12 +87,12 @@ public: struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&addr; addr6->sin6_port = htons(port); if (address) { - if (*address=='l' || *address=='L') + if (0 == strncasecmp(address, "loc", 3)) inet_pton(AF_INET6, "::1", &(addr6->sin6_addr)); - else if (*address=='a' || *address=='A') + else if (0 == strncasecmp(address, "any", 3)) inet_pton(AF_INET6, "::", &(addr6->sin6_addr)); else - inet_pton(AF_INET, address, &(addr6->sin6_addr)); + inet_pton(AF_INET6, address, &(addr6->sin6_addr)); } } } diff --git a/TCPReaderWriterClient.cpp b/TCPReaderWriterClient.cpp index ab18405..2ad7514 100644 --- a/TCPReaderWriterClient.cpp +++ b/TCPReaderWriterClient.cpp @@ -98,7 +98,7 @@ bool CTCPReaderWriterClient::Open() } else { char buf[INET6_ADDRSTRLEN]; void *addr; - if (AF_INET == rp->ai_family){ + if (AF_INET == rp->ai_family) { struct sockaddr_in *addr4 = (struct sockaddr_in *)rp->ai_addr; addr = &(addr4->sin_addr); } else {