Merge pull request #75 from wgoossens/master

Fallback to IPv4 if IPv6 is not present
This commit is contained in:
Albert Zeyer
2011-05-10 14:38:31 -07:00
+11 -2
View File
@@ -31,6 +31,7 @@
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <openssl/sha.h>
#include <openssl/hmac.h>
@@ -43,7 +44,15 @@ int common_setup(struct addrinfo *pAddrInfo)
int tSock;
//printAddrs(pAddrInfo);
tSock = socket(pAddrInfo->ai_family, pAddrInfo->ai_socktype, 0);
#ifdef AF_INET6
if((tSock==-1) && (pAddrInfo->ai_family == AF_INET6) && (errno == EAFNOSUPPORT))
{
//Fallback to ipv4
perror("Failed to create ipv6 socket. Trying ipv4");
pAddrInfo->ai_family = AF_INET;
tSock = socket(pAddrInfo->ai_family, pAddrInfo->ai_socktype, 0);
}
#endif
return tSock;
}
@@ -265,4 +274,4 @@ char *encode_base64(unsigned char *input, int length)
BIO_free_all(b64);
return buff;
}
}