Detect the presence of the sa_len field of struct sockaddr and set it if that is the case. Fixes the comparison of SocketAddr objects on Mac OS X and BSD-based systems.
git-svn-id: http://voip.null.ro/svn/yate@5218 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
c58f683dd1
commit
9e5c0b49b6
18
configure.in
18
configure.in
|
@ -140,6 +140,24 @@ HAVE_PRCTL="-DHAVE_PRCTL"
|
|||
fi
|
||||
AC_SUBST(HAVE_PRCTL)
|
||||
|
||||
HAVE_SOCKADDR_LEN=""
|
||||
AC_MSG_CHECKING([for sockaddr.sa_len presence])
|
||||
AC_TRY_COMPILE([
|
||||
#include <sys/socket.h>
|
||||
],[
|
||||
struct sockaddr saddr;
|
||||
saddr.sa_len = sizeof(struct sockaddr);
|
||||
],
|
||||
have_sockaddr_len="yes",
|
||||
have_sockaddr_len="no"
|
||||
)
|
||||
if [[ "$have_sockaddr_len" = "yes" ]]; then
|
||||
HAVE_SOCKADDR_LEN="-DHAVE_SOCKADDR_LEN"
|
||||
fi
|
||||
AC_SUBST(HAVE_SOCKADDR_LEN)
|
||||
AC_MSG_RESULT([$have_sockaddr_len])
|
||||
|
||||
|
||||
HAVE_POLL=no
|
||||
AC_ARG_ENABLE(poll,AC_HELP_STRING([--enable-poll],[Use poll() on sockets (default: yes)]),want_poll=$enableval,want_poll=yes)
|
||||
if [[ "x$want_poll" = "xyes" ]]; then
|
||||
|
|
|
@ -101,7 +101,7 @@ DataFormat.o: @srcdir@/DataFormat.cpp $(MKDEPS) $(PINC)
|
|||
$(COMPILE) -c $<
|
||||
|
||||
Socket.o: @srcdir@/Socket.cpp $(MKDEPS) $(CINC)
|
||||
$(COMPILE) @FDSIZE_HACK@ @NETDB_FLAGS@ -c $<
|
||||
$(COMPILE) @FDSIZE_HACK@ @NETDB_FLAGS@ @HAVE_SOCKADDR_LEN@ -c $<
|
||||
|
||||
Resolver.o: @srcdir@/Resolver.cpp $(MKDEPS) $(CINC)
|
||||
$(COMPILE) @RESOLV_INC@ -c $<
|
||||
|
|
|
@ -158,6 +158,9 @@ bool SocketAddr::assign(int family)
|
|||
m_address = (struct sockaddr*) ::calloc(m_length,1);
|
||||
if (m_address) {
|
||||
m_address->sa_family = family;
|
||||
#ifdef HAVE_SOCKADDR_LEN
|
||||
m_address->sa_len = m_length;
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue