diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/Endpoint.cpp | 15 | ||||
-rw-r--r-- | cpp/src/Ice/Network.cpp | 8 | ||||
-rw-r--r-- | cpp/src/Ice/Network.h | 1 | ||||
-rw-r--r-- | cpp/src/Ice/SslAcceptor.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/TcpAcceptor.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/UdpTransceiver.cpp | 2 |
6 files changed, 15 insertions, 15 deletions
diff --git a/cpp/src/Ice/Endpoint.cpp b/cpp/src/Ice/Endpoint.cpp index 5af0812e83c..cc56e7e73ed 100644 --- a/cpp/src/Ice/Endpoint.cpp +++ b/cpp/src/Ice/Endpoint.cpp @@ -522,10 +522,7 @@ IceInternal::TcpEndpoint::operator==(const Endpoint& r) const struct sockaddr_in raddr; getAddress(_host.c_str(), _port, laddr); getAddress(p->_host.c_str(), p->_port, raddr); - if (memcmp(&laddr, &raddr, sizeof(struct sockaddr_in)) != 0) - { - return false; - } + return compareAddress(laddr, raddr); } return true; @@ -857,10 +854,7 @@ IceInternal::SslEndpoint::operator==(const Endpoint& r) const struct sockaddr_in raddr; getAddress(_host.c_str(), _port, laddr); getAddress(p->_host.c_str(), p->_port, raddr); - if (memcmp(&laddr, &raddr, sizeof(struct sockaddr_in)) != 0) - { - return false; - } + return compareAddress(laddr, raddr); } return true; @@ -1187,10 +1181,7 @@ IceInternal::UdpEndpoint::operator==(const Endpoint& r) const struct sockaddr_in raddr; getAddress(_host.c_str(), _port, laddr); getAddress(p->_host.c_str(), p->_port, raddr); - if (memcmp(&laddr, &raddr, sizeof(struct sockaddr_in)) != 0) - { - return false; - } + return compareAddress(laddr, raddr); } return true; diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp index 1da5802c174..dbb2fe871cb 100644 --- a/cpp/src/Ice/Network.cpp +++ b/cpp/src/Ice/Network.cpp @@ -610,6 +610,14 @@ IceInternal::getAddress(const string& host, int port, struct sockaddr_in& addr) } } +bool +IceInternal::compareAddress(const struct sockaddr_in& addr1, const struct sockaddr_in& addr2) +{ + return (addr1.sin_family == addr2.sin_family) && + (addr1.sin_port == addr2.sin_port) && + (addr1.sin_addr.s_addr == addr2.sin_addr.s_addr); +} + void IceInternal::createPipe(SOCKET fds[2]) { diff --git a/cpp/src/Ice/Network.h b/cpp/src/Ice/Network.h index cd5a1a648fa..84b63a9f4bd 100644 --- a/cpp/src/Ice/Network.h +++ b/cpp/src/Ice/Network.h @@ -82,6 +82,7 @@ void doConnect(SOCKET, struct sockaddr_in&, int); SOCKET doAccept(SOCKET, int); void getAddress(const std::string&, int, struct sockaddr_in&); +bool compareAddress(const struct sockaddr_in&, const struct sockaddr_in&); void createPipe(SOCKET fds[2]); diff --git a/cpp/src/Ice/SslAcceptor.cpp b/cpp/src/Ice/SslAcceptor.cpp index 2982d770036..cf346576354 100644 --- a/cpp/src/Ice/SslAcceptor.cpp +++ b/cpp/src/Ice/SslAcceptor.cpp @@ -113,7 +113,7 @@ IceInternal::SslAcceptor::equivalent(const string& host, int port) const { struct sockaddr_in addr; getAddress(host, port, addr); - return memcmp(&addr, &_addr, sizeof(struct sockaddr_in)) == 0; + return compareAddress(addr, _addr); } int diff --git a/cpp/src/Ice/TcpAcceptor.cpp b/cpp/src/Ice/TcpAcceptor.cpp index 413ea73d69a..84691e16e2e 100644 --- a/cpp/src/Ice/TcpAcceptor.cpp +++ b/cpp/src/Ice/TcpAcceptor.cpp @@ -85,7 +85,7 @@ IceInternal::TcpAcceptor::equivalent(const string& host, int port) const { struct sockaddr_in addr; getAddress(host, port, addr); - return memcmp(&addr, &_addr, sizeof(struct sockaddr_in)) == 0; + return compareAddress(addr, _addr); } int diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp index 88770e74a19..2a0d90c645a 100644 --- a/cpp/src/Ice/UdpTransceiver.cpp +++ b/cpp/src/Ice/UdpTransceiver.cpp @@ -150,7 +150,7 @@ IceInternal::UdpTransceiver::equivalent(const string& host, int port) const { struct sockaddr_in addr; getAddress(host, port, addr); - return memcmp(&addr, &_addr, sizeof(struct sockaddr_in)) == 0; + return compareAddress(addr, _addr); } int |