int testsocket = -1;
testsocket = socket(PF_INET, SOCK_STREAM, 0);
- hasv4 = (errno == EAFNOSUPPORT) ? false : true;
+ hasv4 = (errno == EAFNOSUPPORT || errno == EPROTONOSUPPORT) ? false : true;
if (!(testsocket < 0)) close(testsocket);
testsocket = socket(PF_INET6, SOCK_STREAM, 0);
- hasv6 = (errno == EAFNOSUPPORT) ? false : true;
+ hasv6 = (errno == EAFNOSUPPORT || errno == EPROTONOSUPPORT) ? false : true;
if (!(testsocket < 0)) close(testsocket);
if(!hasv4)
Log_info("IPv6 is not supported by this system");
nofServerSocks -= 2;
}
-
if(nofServerSocks == 0)
{
Log_fatal("Neither IPv4 nor IPv6 are supported by this system");
struct sockaddr_storage** Server_setupAddressesAndPorts()
{
struct sockaddr_storage** addresses = calloc(2, sizeof(void*));
+ if(!addresses)
+ Log_fatal("Not enough memory to allocate addresses");
struct sockaddr_storage* v4address = calloc(1, sizeof(struct sockaddr_storage));
+ if(!v4address)
+ Log_fatal("Not enough memory to allocate IPv4 address");
v4address->ss_family = AF_INET;
+
struct sockaddr_storage* v6address = calloc(1, sizeof(struct sockaddr_storage));
+ if(!v6address)
+ Log_fatal("Not enough memory to allocate IPv6 address");
v6address->ss_family = AF_INET6;
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__)