aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2009-05-02 02:36:47 +0000
committerYang Tse <yangsita@gmail.com>2009-05-02 02:36:47 +0000
commit80186aa7f44ed5155665d96336b508403b3d4a03 (patch)
tree98c88c8c9d965c30e73d9c51be48b0aea5749d5e
parent6ac739630f4e9f5374affcab56600f23cda7fc93 (diff)
Use build-time configured ares_socklen_t instead of socklen_t
-rw-r--r--ares/CHANGES3
-rw-r--r--ares/Makefile.dj2
-rw-r--r--ares/Makefile.netware4
-rw-r--r--ares/RELEASE-NOTES3
-rw-r--r--ares/acinclude.m489
-rw-r--r--ares/ares.h2
-rw-r--r--ares/ares_getnameinfo.34
-rw-r--r--ares/ares_getnameinfo.c3
-rw-r--r--ares/ares_ipv6.h2
-rw-r--r--ares/ares_process.c2
-rw-r--r--ares/configure.ac3
-rw-r--r--ares/setup_once.h102
12 files changed, 14 insertions, 205 deletions
diff --git a/ares/CHANGES b/ares/CHANGES
index 3fe0cf836..67b3fbb73 100644
--- a/ares/CHANGES
+++ b/ares/CHANGES
@@ -1,5 +1,8 @@
Changelog for the c-ares project
+* May 2 2009 (Yang Tse)
+- Use a build-time configured ares_socklen_t data type instead of socklen_t.
+
* April 21 2009 (Yang Tse)
- Moved potential inclusion of system's malloc.h and memory.h header files to
setup_once.h. Inclusion of each header file is based on the definition of
diff --git a/ares/Makefile.dj b/ares/Makefile.dj
index af6a3ba91..db56e0950 100644
--- a/ares/Makefile.dj
+++ b/ares/Makefile.dj
@@ -23,7 +23,7 @@ CFLAGS += -DWATT32 -DHAVE_AF_INET6 -DHAVE_PF_INET6 -DHAVE_IOCTLSOCKET \
-DRECV_TYPE_ARG1='int' -DRECV_TYPE_ARG2='void*' \
-DRECV_TYPE_ARG3='int' -DRECV_TYPE_ARG4='int' \
-DRECV_TYPE_RETV='int' -DHAVE_STRUCT_TIMEVAL \
- -Dselect=select_s -Dsocklen_t=int -UHAVE_CONFIG_H \
+ -Dselect=select_s -UHAVE_CONFIG_H \
-DRECVFROM_TYPE_ARG1='int' -DRECVFROM_TYPE_ARG2='void' \
-DRECVFROM_TYPE_ARG3='int' -DRECVFROM_TYPE_ARG4='int' \
-DRECVFROM_TYPE_ARG6='int' -DRECVFROM_TYPE_RETV='int' \
diff --git a/ares/Makefile.netware b/ares/Makefile.netware
index 71cb242f5..a58528d99 100644
--- a/ares/Makefile.netware
+++ b/ares/Makefile.netware
@@ -303,7 +303,6 @@ ifeq ($(LIBARCH),CLIB)
@echo $(DL)#define SEND_TYPE_ARG3 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@
- @echo $(DL)#define socklen_t int$(DL) >> $@
else
@echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@
@echo $(DL)#define HAVE_DLFCN_H 1$(DL) >> $@
@@ -407,9 +406,6 @@ endif
@echo $(DL)#else$(DL) >> $@
@echo $(DL)#define HAVE_VARIADIC_MACROS_C99 1$(DL) >> $@
@echo $(DL)#endif$(DL) >> $@
-ifdef OLD_NOVELLSDK
- @echo $(DL)#define socklen_t int$(DL) >> $@
-endif
FORCE: ;
diff --git a/ares/RELEASE-NOTES b/ares/RELEASE-NOTES
index 93760e5b4..692b38224 100644
--- a/ares/RELEASE-NOTES
+++ b/ares/RELEASE-NOTES
@@ -4,8 +4,9 @@ Changed:
o in6_addr is not used in ares.h anymore, but a private ares_in6_addr is
instead declared and used
- p ares_gethostbyname() now supports 'AF_UNSPEC' as a family for resolving
+ o ares_gethostbyname() now supports 'AF_UNSPEC' as a family for resolving
either AF_INET6 or AF_INET
+ o a build-time configured ares_socklen_t is now used instead of socklen_t
Fixed:
diff --git a/ares/acinclude.m4 b/ares/acinclude.m4
index e5d96b25f..cf6383a33 100644
--- a/ares/acinclude.m4
+++ b/ares/acinclude.m4
@@ -450,94 +450,6 @@ AC_DEFUN([CURL_CHECK_HEADER_MEMORY], [
])
-dnl CURL_CHECK_TYPE_SOCKLEN_T
-dnl -------------------------------------------------
-dnl Check for existing socklen_t type, and provide
-dnl an equivalent type if socklen_t not available
-
-AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
- AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl
- AC_CHECK_TYPE([socklen_t], ,[
- dnl socklen_t not available
- AC_CACHE_CHECK([for socklen_t equivalent],
- [curl_cv_socklen_t_equiv], [
- curl_cv_socklen_t_equiv="unknown"
- for arg1 in 'int' 'SOCKET'; do
- for arg2 in "struct sockaddr" void; do
- for t in int size_t unsigned long "unsigned long"; do
- if test "$curl_cv_socklen_t_equiv" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#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>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#define GETPEERNCALLCONV PASCAL
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define GETPEERNCALLCONV
-#endif
- extern int GETPEERNCALLCONV getpeername($arg1, $arg2 *, $t *);
- ]],[[
- $t len=0;
- getpeername(0,0,&len);
- ]])
- ],[
- curl_cv_socklen_t_equiv="$t"
- ])
- fi
- done
- done
- done
- ])
- case "$curl_cv_socklen_t_equiv" in
- unknown)
- AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
- ;;
- *)
- AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
- [Type to use in place of socklen_t when system does not provide it.])
- ;;
- esac
- ],[
-#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>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#endif
- ])
-])
-
-
dnl CURL_CHECK_FUNC_GETNAMEINFO
dnl -------------------------------------------------
dnl Test if the getnameinfo function is available,
@@ -551,7 +463,6 @@ dnl argument in GETNAMEINFO_QUAL_ARG1.
AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [
AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl
- AC_REQUIRE([CURL_CHECK_TYPE_SOCKLEN_T])dnl
AC_CHECK_HEADERS(sys/types.h sys/socket.h netdb.h)
#
AC_MSG_CHECKING([for getnameinfo])
diff --git a/ares/ares.h b/ares/ares.h
index 585e35049..38750fed7 100644
--- a/ares/ares.h
+++ b/ares/ares.h
@@ -260,7 +260,7 @@ int ares_gethostbyname_file(ares_channel channel, const char *name,
void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen,
int family, ares_host_callback callback, void *arg);
void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
- socklen_t salen, int flags,
+ ares_socklen_t salen, int flags,
ares_nameinfo_callback callback,
void *arg);
int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds);
diff --git a/ares/ares_getnameinfo.3 b/ares/ares_getnameinfo.3
index 55918ffba..91d281252 100644
--- a/ares/ares_getnameinfo.3
+++ b/ares/ares_getnameinfo.3
@@ -14,7 +14,7 @@
.\" this software for any purpose. It is provided "as is"
.\" without express or implied warranty.
.\"
-.TH ARES_GETNAMEINFO 3 "16 May 2005"
+.TH ARES_GETNAMEINFO 3 "1 May 2009"
.SH NAME
ares_getnameinfo \- Address-to-nodename translation in protocol-independent manner
.SH SYNOPSIS
@@ -25,7 +25,7 @@ ares_getnameinfo \- Address-to-nodename translation in protocol-independent mann
.B int \fItimeouts\fP, char *\fInode\fP, char *\fIservice\fP)
.PP
.B void ares_getnameinfo(ares_channel \fIchannel\fP, const struct sockaddr *\fIsa\fP,
-.B socklen_t \fIsalen\fP, int \fIflags\fP, ares_nameinfo_callback \fIcallback\fP,
+.B ares_socklen_t \fIsalen\fP, int \fIflags\fP, ares_nameinfo_callback \fIcallback\fP,
.B void *\fIarg\fP)
.fi
.SH DESCRIPTION
diff --git a/ares/ares_getnameinfo.c b/ares/ares_getnameinfo.c
index c75e94468..38f559947 100644
--- a/ares/ares_getnameinfo.c
+++ b/ares/ares_getnameinfo.c
@@ -92,7 +92,8 @@ static void append_scopeid(struct sockaddr_in6 *addr6, unsigned int scopeid,
#endif
static char *ares_striendstr(const char *s1, const char *s2);
-void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa, socklen_t salen,
+void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
+ ares_socklen_t salen,
int flags, ares_nameinfo_callback callback, void *arg)
{
struct sockaddr_in *addr = NULL;
diff --git a/ares/ares_ipv6.h b/ares/ares_ipv6.h
index 05d2c54b4..e8229dfca 100644
--- a/ares/ares_ipv6.h
+++ b/ares/ares_ipv6.h
@@ -49,7 +49,7 @@ struct addrinfo
int ai_family;
int ai_socktype;
int ai_protocol;
- socklen_t ai_addrlen; /* Follow rfc3493 struct addrinfo */
+ ares_socklen_t ai_addrlen; /* Follow rfc3493 struct addrinfo */
char *ai_canonname;
struct sockaddr *ai_addr;
struct addrinfo *ai_next;
diff --git a/ares/ares_process.c b/ares/ares_process.c
index e2d902fd1..c4848108a 100644
--- a/ares/ares_process.c
+++ b/ares/ares_process.c
@@ -429,7 +429,7 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
unsigned char buf[PACKETSZ + 1];
#ifdef HAVE_RECVFROM
struct sockaddr_in from;
- socklen_t fromlen;
+ ares_socklen_t fromlen;
#endif
if(!read_fds && (read_fd == ARES_SOCKET_BAD))
diff --git a/ares/configure.ac b/ares/configure.ac
index b91915e33..78dde8973 100644
--- a/ares/configure.ac
+++ b/ares/configure.ac
@@ -551,9 +551,6 @@ AC_CHECK_TYPE([bool],[
CARES_CONFIGURE_ARES_SOCKLEN_T
-# Check for socklen_t or equivalent
-CURL_CHECK_TYPE_SOCKLEN_T
-
TYPE_IN_ADDR_T
TYPE_SOCKADDR_STORAGE
diff --git a/ares/setup_once.h b/ares/setup_once.h
index bd5eba393..99367aaa6 100644
--- a/ares/setup_once.h
+++ b/ares/setup_once.h
@@ -3,7 +3,7 @@
/* $Id$ */
-/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al
+/* Copyright (C) 2004 - 2009 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
@@ -99,23 +99,6 @@ struct timeval {
#endif
-/*
- * Windows build targets have socklen_t definition in
- * ws2tcpip.h but some versions of ws2tcpip.h do not
- * have the definition. It seems that when the socklen_t
- * definition is missing from ws2tcpip.h the definition
- * for INET_ADDRSTRLEN is also missing, and that when one
- * definition is present the other one also is available.
- */
-
-#if defined(WIN32) && !defined(HAVE_CONFIG_H)
-# if ( defined(_MSC_VER) && !defined(INET_ADDRSTRLEN) ) || \
- (!defined(_MSC_VER) && !defined(HAVE_WS2TCPIP_H) )
-# define socklen_t int
-# endif
-#endif
-
-
#if defined(__minix)
/* Minix doesn't support recv on TCP sockets */
#define sread(x,y,z) (ssize_t)read((RECV_TYPE_ARG1)(x), \
@@ -444,88 +427,5 @@ typedef int sig_atomic_t;
#define ZERO_NULL 0
-#if defined (__LP64__) && defined(__hpux) && !defined(_XOPEN_SOURCE_EXTENDED)
-#include <sys/socket.h>
-/* HP-UX has this oddity where it features a few functions that don't work
- with socklen_t so we need to convert to ints
-
- This is due to socklen_t being a 64bit int under 64bit ABI, but the
- pre-xopen (default) interfaces require an int, which is 32bits.
-
- Therefore, Anytime socklen_t is passed by pointer, the libc function
- truncates the 64bit socklen_t value by treating it as a 32bit value.
-
-
- Note that some socket calls are allowed to have a NULL pointer for
- the socklen arg.
-*/
-
-inline static int Curl_hp_getsockname(int s, struct sockaddr *name,
- socklen_t *namelen)
-{
- int rc;
- if(namelen) {
- int len = *namelen;
- rc = getsockname(s, name, &len);
- *namelen = len;
- }
- else
- rc = getsockname(s, name, 0);
- return rc;
-}
-
-inline static int Curl_hp_getsockopt(int s, int level, int optname,
- void *optval, socklen_t *optlen)
-{
- int rc;
- if(optlen) {
- int len = *optlen;
- rc = getsockopt(s, level, optname, optval, &len);
- *optlen = len;
- }
- else
- rc = getsockopt(s, level, optname, optval, 0);
- return rc;
-}
-
-inline static int Curl_hp_accept(int sockfd, struct sockaddr *addr,
- socklen_t *addrlen)
-{
- int rc;
- if(addrlen) {
- int len = *addrlen;
- rc = accept(sockfd, addr, &len);
- *addrlen = len;
- }
- else
- rc = accept(sockfd, addr, 0);
- return rc;
-}
-
-
-inline static ssize_t Curl_hp_recvfrom(int s, void *buf, size_t len, int flags,
- struct sockaddr *from,
- socklen_t *fromlen)
-{
- ssize_t rc;
- if(fromlen) {
- int fromlen32 = *fromlen;
- rc = recvfrom(s, buf, len, flags, from, &fromlen32);
- *fromlen = fromlen32;
- }
- else {
- rc = recvfrom(s, buf, len, flags, from, 0);
- }
- return rc;
-}
-
-#define getsockname(a,b,c) Curl_hp_getsockname((a),(b),(c))
-#define getsockopt(a,b,c,d,e) Curl_hp_getsockopt((a),(b),(c),(d),(e))
-#define accept(a,b,c) Curl_hp_accept((a),(b),(c))
-#define recvfrom(a,b,c,d,e,f) Curl_hp_recvfrom((a),(b),(c),(d),(e),(f))
-
-#endif /* HPUX work-around */
-
-
#endif /* __SETUP_ONCE_H */