aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaimo Niskanen <[email protected]>2010-12-02 16:49:19 +0100
committerRaimo Niskanen <[email protected]>2010-12-02 16:49:19 +0100
commit0d79832e450c49e51f5fd7149f5f72930ef1f966 (patch)
treee6dccd01323eee60fed8551cc15730c8b3405919
parent2a01369408762b651785083aad8d3778bfe30e71 (diff)
downloadotp-0d79832e450c49e51f5fd7149f5f72930ef1f966.tar.gz
otp-0d79832e450c49e51f5fd7149f5f72930ef1f966.tar.bz2
otp-0d79832e450c49e51f5fd7149f5f72930ef1f966.zip
Stop using uncertain flags for getaddrinfo()
The AI_V4MAPPED flag is falling out of grace in modern IPv6 stacks, for security reasons, e.g. FreeBSD do not document it any longer. The AI_ADDRCONFIG flag have got unclear semantics on the same OS.
-rw-r--r--erts/configure.in4
-rw-r--r--erts/emulator/drivers/common/inet_drv.c5
-rw-r--r--erts/etc/common/inet_gethost.c6
3 files changed, 5 insertions, 10 deletions
diff --git a/erts/configure.in b/erts/configure.in
index 544ff9790a..f99a86a899 100644
--- a/erts/configure.in
+++ b/erts/configure.in
@@ -1734,11 +1734,7 @@ if test $have_getaddrinfo = yes; then
[
struct addrinfo hints, *ai;
memset(&hints, 0, sizeof(hints));
-#ifndef __WIN32__
- hints.ai_flags = (AI_CANONNAME|AI_V4MAPPED|AI_ADDRCONFIG);
-#else
hints.ai_flags = AI_CANONNAME;
-#endif
hints.ai_socktype = SOCK_STREAM;
hints.ai_family = AF_INET6;
if (getaddrinfo("::", NULL, &hints, &ai) == 0) {
diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c
index 18f7cdd15a..6f318e4dfc 100644
--- a/erts/emulator/drivers/common/inet_drv.c
+++ b/erts/emulator/drivers/common/inet_drv.c
@@ -5811,9 +5811,12 @@ static int sctp_set_opts(inet_descriptor* desc, char* ptr, int len)
char *after;
# ifdef HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_FLAGS
int eflags, cflags, hb_enable, hb_disable,
- pmtud_enable, pmtud_disable,
+ pmtud_enable, pmtud_disable;
+# ifdef HAVE_STRUCT_SCTP_PADDRPARAMS_SPP_SACKDELAY
+ int
sackdelay_enable, sackdelay_disable;
# endif
+# endif
CHKLEN(curr, ASSOC_ID_LEN);
arg.pap.spp_assoc_id = GET_ASSOC_ID(curr); curr += ASSOC_ID_LEN;
diff --git a/erts/etc/common/inet_gethost.c b/erts/etc/common/inet_gethost.c
index ab24ac1048..8bd9368aa1 100644
--- a/erts/etc/common/inet_gethost.c
+++ b/erts/etc/common/inet_gethost.c
@@ -1760,11 +1760,7 @@ static int worker_loop(void)
struct addrinfo hints;
memset(&hints, 0, sizeof(hints));
-#ifdef __WIN32__
- hints.ai_flags = (AI_CANONNAME);
-#else
- hints.ai_flags = (AI_CANONNAME|AI_V4MAPPED|AI_ADDRCONFIG);
-#endif
+ hints.ai_flags = AI_CANONNAME;
hints.ai_socktype = SOCK_STREAM;
hints.ai_family = AF_INET6;
DEBUGF(5, ("Starting getaddrinfo(%s, ...)", data));