summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--acinclude.m459
-rw-r--r--ares_process.c21
-rw-r--r--configure.ac1
3 files changed, 4 insertions, 77 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index daa0c92..336dfab 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -669,45 +669,6 @@ AC_DEFUN([TYPE_SOCKADDR_STORAGE],
])
])
-dnl TYPE_SOCKADDR_STORAGE_SSFAM
-dnl -------------------------------------------------
-dnl Check for struct sockaddr_storage.ss_family
-dnl Seems some AIX systems don't have this.
-
-AC_DEFUN([TYPE_SOCKADDR_STORAGE_SSFAM],
-[
- CARES_CHECK_STRUCT_MEMBER(
- [
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#endif
-],
- [sockaddr_storage], [ss_family],
- AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE_SSFAM, 1,
- [if struct sockaddr_storage.ss_family is defined]), ,
- )
-])
-
dnl CURL_CHECK_NI_WITHSCOPEID
dnl -------------------------------------------------
@@ -1936,26 +1897,6 @@ AC_DEFUN([CARES_CHECK_STRUCT], [
fi
])
-dnl This macro determines if the specified struct member exists in the specified file
-dnl Syntax:
-dnl CARES_CHECK_STRUCT_MEMBER(headers, struct name, member, if found, [if not found])
-
-AC_DEFUN([CARES_CHECK_STRUCT_MEMBER], [
- AC_MSG_CHECKING([for struct $2.$3])
- AC_TRY_COMPILE([$1],
- [
- struct $2 struct_instance;
- void* foo = &(struct_instance.$3);
- ], ac_struct_member="yes", ac_found="no")
- if test "$ac_struct_member" = "yes" ; then
- AC_MSG_RESULT(yes)
- $4
- else
- AC_MSG_RESULT(no)
- $5
- fi
-])
-
dnl This macro determines if the specified constant exists in the specified file
dnl Syntax:
dnl CARES_CHECK_CONSTANT(headers, constant name, if found, [if not found])
diff --git a/ares_process.c b/ares_process.c
index 8e9a9cd..c3d7fa4 100644
--- a/ares_process.c
+++ b/ares_process.c
@@ -434,15 +434,11 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
unsigned char buf[PACKETSZ + 1];
#ifdef HAVE_RECVFROM
ares_socklen_t fromlen;
-#ifdef HAVE_STRUCT_SOCKADDR_STORAGE_SSFAM
- struct sockaddr_storage from;
-#else
union {
struct sockaddr_in sa4;
struct sockaddr_in6 sa6;
} from;
#endif
-#endif
if(!read_fds && (read_fd == ARES_SOCKET_BAD))
/* no possible action */
@@ -477,7 +473,10 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
* packets as we can. */
do {
#ifdef HAVE_RECVFROM
- fromlen = sizeof(from); /* doesn't matter if it's larger than needed */
+ if (server->addr.family == AF_INET)
+ fromlen = sizeof(from.sa4);
+ else
+ fromlen = sizeof(from.sa6);
count = (ssize_t)recvfrom(server->udp_socket, (void *)buf, sizeof(buf),
0, (struct sockaddr *)&from, &fromlen);
#else
@@ -488,15 +487,7 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
else if (count <= 0)
handle_error(channel, i, now);
#ifdef HAVE_RECVFROM
-#ifdef HAVE_STRUCT_SOCKADDR_STORAGE_SSFAM
- /* This family hack works around compiler warnings about
- * aliases.
- */
- else if (!((from.ss_family == server->addr.family) &&
- same_address((struct sockaddr *)&from, &server->addr)))
-#else
else if (!same_address((struct sockaddr *)&from, &server->addr))
-#endif
/* The address the response comes from does not match
* the address we sent the request to. Someone may be
* attempting to perform a cache poisoning attack. */
@@ -1186,10 +1177,8 @@ static int same_address(struct sockaddr *sa, struct ares_addr *aa)
void *addr1;
void *addr2;
-#ifndef HAVE_STRUCT_SOCKADDR_STORAGE_SSFAM
if (sa->sa_family == aa->family)
{
-#endif
switch (aa->family)
{
case AF_INET:
@@ -1207,9 +1196,7 @@ static int same_address(struct sockaddr *sa, struct ares_addr *aa)
default:
break;
}
-#ifndef HAVE_STRUCT_SOCKADDR_STORAGE_SSFAM
}
-#endif
return 0; /* different */
}
diff --git a/configure.ac b/configure.ac
index f24892f..d505e16 100644
--- a/configure.ac
+++ b/configure.ac
@@ -506,7 +506,6 @@ CARES_CONFIGURE_ARES_SOCKLEN_T
TYPE_IN_ADDR_T
TYPE_SOCKADDR_STORAGE
-TYPE_SOCKADDR_STORAGE_SSFAM
TYPE_SIG_ATOMIC_T