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
|
fi
|
||||||
AC_SUBST(HAVE_PRCTL)
|
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
|
HAVE_POLL=no
|
||||||
AC_ARG_ENABLE(poll,AC_HELP_STRING([--enable-poll],[Use poll() on sockets (default: yes)]),want_poll=$enableval,want_poll=yes)
|
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
|
if [[ "x$want_poll" = "xyes" ]]; then
|
||||||
|
|
|
@ -101,7 +101,7 @@ DataFormat.o: @srcdir@/DataFormat.cpp $(MKDEPS) $(PINC)
|
||||||
$(COMPILE) -c $<
|
$(COMPILE) -c $<
|
||||||
|
|
||||||
Socket.o: @srcdir@/Socket.cpp $(MKDEPS) $(CINC)
|
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)
|
Resolver.o: @srcdir@/Resolver.cpp $(MKDEPS) $(CINC)
|
||||||
$(COMPILE) @RESOLV_INC@ -c $<
|
$(COMPILE) @RESOLV_INC@ -c $<
|
||||||
|
|
|
@ -158,6 +158,9 @@ bool SocketAddr::assign(int family)
|
||||||
m_address = (struct sockaddr*) ::calloc(m_length,1);
|
m_address = (struct sockaddr*) ::calloc(m_length,1);
|
||||||
if (m_address) {
|
if (m_address) {
|
||||||
m_address->sa_family = family;
|
m_address->sa_family = family;
|
||||||
|
#ifdef HAVE_SOCKADDR_LEN
|
||||||
|
m_address->sa_len = m_length;
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue