diff options
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp b/qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp index b96348f6ef..4c860a7ef7 100644 --- a/qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp +++ b/qpid/cpp/src/qpid/sys/posix/SocketAddress.cpp @@ -287,12 +287,20 @@ bool SocketAddress::compareAddresses(const struct addrinfo& lo, return false; } if (lo.ai_family == AF_INET) { - struct sockaddr_in* sin4lo = (struct sockaddr_in*)lo.ai_addr; - struct sockaddr_in* sin4hi = (struct sockaddr_in*)hi.ai_addr; + void* taddr; + + taddr = (void*)lo.ai_addr; + struct sockaddr_in* sin4lo = (struct sockaddr_in*)taddr; + taddr = (void*)hi.ai_addr; + struct sockaddr_in* sin4hi = (struct sockaddr_in*)taddr; result = memcmp(&sin4hi->sin_addr, &sin4lo->sin_addr, sizeof(in_addr)); } else if (lo.ai_family == AF_INET6) { - struct sockaddr_in6* sin6lo = (struct sockaddr_in6*)lo.ai_addr; - struct sockaddr_in6* sin6hi = (struct sockaddr_in6*)hi.ai_addr; + void* taddr; + + taddr = (void*)lo.ai_addr; + struct sockaddr_in6* sin6lo = (struct sockaddr_in6*)taddr; + taddr = (void*)hi.ai_addr; + struct sockaddr_in6* sin6hi = (struct sockaddr_in6*)taddr; result = memcmp(&sin6hi->sin6_addr, &sin6lo->sin6_addr, sizeof(in6_addr)); } else { assert (false); |
