From 0d79832e450c49e51f5fd7149f5f72930ef1f966 Mon Sep 17 00:00:00 2001 From: Raimo Niskanen Date: Thu, 2 Dec 2010 16:49:19 +0100 Subject: 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. --- erts/configure.in | 4 ---- erts/emulator/drivers/common/inet_drv.c | 5 ++++- 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,8 +5811,11 @@ 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); 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)); -- cgit v1.2.3