Revert following commits:

07bc7ea795
  3392a50ea3
  9912637d32

The 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.
pull/1/head
Yang Tse 14 years ago
parent b8044334f0
commit 747981be8e
  1. 59
      acinclude.m4
  2. 21
      ares_process.c
  3. 1
      configure.ac

@ -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])

@ -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

Loading…
Cancel
Save