summaryrefslogtreecommitdiff
path: root/cpp/src/IceSSL/SslEndpoint.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceSSL/SslEndpoint.cpp')
-rw-r--r--cpp/src/IceSSL/SslEndpoint.cpp32
1 files changed, 27 insertions, 5 deletions
diff --git a/cpp/src/IceSSL/SslEndpoint.cpp b/cpp/src/IceSSL/SslEndpoint.cpp
index 14ad554b23d..13c0049aa23 100644
--- a/cpp/src/IceSSL/SslEndpoint.cpp
+++ b/cpp/src/IceSSL/SslEndpoint.cpp
@@ -330,9 +330,17 @@ IceSSL::SslEndpoint::operator==(const Endpoint& r) const
//
struct sockaddr_in laddr;
struct sockaddr_in raddr;
- getAddress(_host, _port, laddr);
- getAddress(p->_host, p->_port, raddr);
- return compareAddress(laddr, raddr);
+ try
+ {
+ getAddress(_host, _port, laddr);
+ getAddress(p->_host, p->_port, raddr);
+ }
+ catch(const DNSException&)
+ {
+ return false;
+ }
+
+ return compareAddress(laddr, raddr);
}
return true;
@@ -391,9 +399,23 @@ IceSSL::SslEndpoint::operator<(const Endpoint& r) const
// We do the most time-consuming part of the comparison last.
//
struct sockaddr_in laddr;
+ try
+ {
+ getAddress(_host, _port, laddr);
+ }
+ catch(const DNSException&)
+ {
+ }
+
struct sockaddr_in raddr;
- getAddress(_host, _port, laddr);
- getAddress(p->_host, p->_port, raddr);
+ try
+ {
+ getAddress(p->_host, p->_port, raddr);
+ }
+ catch(const DNSException&)
+ {
+ }
+
if(laddr.sin_addr.s_addr < raddr.sin_addr.s_addr)
{
return true;