diff options
author | Raimo Niskanen <[email protected]> | 2010-12-02 16:49:19 +0100 |
---|---|---|
committer | Raimo Niskanen <[email protected]> | 2010-12-02 16:49:19 +0100 |
commit | 0d79832e450c49e51f5fd7149f5f72930ef1f966 (patch) | |
tree | e6dccd01323eee60fed8551cc15730c8b3405919 | |
parent | 2a01369408762b651785083aad8d3778bfe30e71 (diff) | |
download | otp-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.in | 4 | ||||
-rw-r--r-- | erts/emulator/drivers/common/inet_drv.c | 5 | ||||
-rw-r--r-- | erts/etc/common/inet_gethost.c | 6 |
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)); |