setting ip6 address in init and better check for 'loc' and 'any' addresses

pull/14/head
Tom Early 7 years ago
parent f576cf2b02
commit 119ec40ace

@ -19,6 +19,7 @@
*/
#include <string.h>
#include <strings.h>
#include <netinet/in.h>
#include <string>
@ -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));
}
}
}

@ -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 {

Loading…
Cancel
Save

Powered by TurnKey Linux.