mirror of
https://frontier.innolan.net/rainlance/c-ares.git
synced 2026-09-24 05:14:41 +00:00
Revert following commits:
07bc7ea7953392a50ea39912637d32The purpose of the whole patch was to silence a compiler warning triggered with GCC 4 on file ares_process.c The specific compiler warning was 'dereferencing type-punned pointer might break strict-aliasing rules'. A simpler patch will follow to equally silence the warning.
This commit is contained in:
@@ -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])
|
||||
|
||||
+4
-17
@@ -434,14 +434,10 @@ 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))
|
||||
@@ -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 */
|
||||
}
|
||||
|
||||
|
||||
@@ -506,7 +506,6 @@ CARES_CONFIGURE_ARES_SOCKLEN_T
|
||||
TYPE_IN_ADDR_T
|
||||
|
||||
TYPE_SOCKADDR_STORAGE
|
||||
TYPE_SOCKADDR_STORAGE_SSFAM
|
||||
|
||||
TYPE_SIG_ATOMIC_T
|
||||
|
||||
|
||||
Reference in New Issue
Block a user