Author: astitcher Date: Thu May 28 20:11:13 2009 New Revision: 779757 URL: http://svn.apache.org/viewvc?rev=779757&view=rev Log: Fixes to get qpid to build with gcc4.4 with optimisation Fix for non thread safe use of inet_ntoa().
Modified: qpid/trunk/qpid/cpp/src/cluster.mk qpid/trunk/qpid/cpp/src/qpid/sys/posix/SystemInfo.cpp Modified: qpid/trunk/qpid/cpp/src/cluster.mk URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/cluster.mk?rev=779757&r1=779756&r2=779757&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/cluster.mk (original) +++ qpid/trunk/qpid/cpp/src/cluster.mk Thu May 28 20:11:13 2009 @@ -82,6 +82,7 @@ qpid/sys/LatencyTracker.h cluster_la_LIBADD= -lcpg $(libcman) libqpidbroker.la libqpidclient.la +cluster_la_CXXFLAGS = $(AM_CXXFLAGS) -fno-strict-aliasing cluster_la_LDFLAGS = $(PLUGINLDFLAGS) endif # HAVE_LIBCPG Modified: qpid/trunk/qpid/cpp/src/qpid/sys/posix/SystemInfo.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/sys/posix/SystemInfo.cpp?rev=779757&r1=779756&r2=779757&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/sys/posix/SystemInfo.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/sys/posix/SystemInfo.cpp Thu May 28 20:11:13 2009 @@ -20,6 +20,8 @@ #include "qpid/sys/SystemInfo.h" +#include "check.h" + #include <sys/ioctl.h> #include <sys/utsname.h> #include <net/if.h> @@ -30,6 +32,7 @@ #include <iostream> #include <fstream> #include <sstream> +#include <netdb.h> #ifndef HOST_NAME_MAX # define HOST_NAME_MAX 256 @@ -60,17 +63,20 @@ void SystemInfo::getLocalIpAddresses (uint16_t port, std::vector<Address> &addrList) { - int s = socket (PF_INET, SOCK_STREAM, 0); + int s = ::socket(PF_INET, SOCK_STREAM, 0); for (int i=1;;i++) { - struct ifreq ifr; + ::ifreq ifr; ifr.ifr_ifindex = i; if (::ioctl (s, SIOCGIFNAME, &ifr) < 0) break; /* now ifr.ifr_name is set */ if (::ioctl (s, SIOCGIFADDR, &ifr) < 0) continue; - struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_addr; - string addr(inet_ntoa(sin->sin_addr)); + ::sockaddr *saddr = (::sockaddr *) &ifr.ifr_addr; + char dispName[NI_MAXHOST]; + if (int rc=::getnameinfo(saddr, sizeof(ifr.ifr_addr), dispName, sizeof(dispName), 0, 0, NI_NUMERICHOST) != 0) + throw QPID_POSIX_ERROR(rc); + string addr(dispName); if (addr != LOCALHOST) addrList.push_back(TcpAddress(addr, port)); } --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org