diff options
author | Adam <Adam@anope.org> | 2011-04-25 04:17:21 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-04-25 04:17:21 -0400 |
commit | 4a733c93d45e0ca5d757abf826d65bc1cbaf610e (patch) | |
tree | e09f093a9926b4285ea1d33da93828ddd5b6bbcb /modules/extra/m_ssl.cpp | |
parent | 03d2378a9fc2fdc868ee4476597ec1901242a0c5 (diff) |
Don't attempt to connect to the uplink if given invalid hostnames
Diffstat (limited to 'modules/extra/m_ssl.cpp')
-rw-r--r-- | modules/extra/m_ssl.cpp | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/modules/extra/m_ssl.cpp b/modules/extra/m_ssl.cpp index 4eb36b97f..408ebf609 100644 --- a/modules/extra/m_ssl.cpp +++ b/modules/extra/m_ssl.cpp @@ -155,19 +155,25 @@ class SSLModule : public Module if (config.ReadFlag("uplink", "ssl", "no", Number - 1)) { - try - { - new UplinkSocket(uplink_server->ipv6); - this->service.Init(UplinkSock); - DNSRecord req = DNSManager::BlockingQuery(uplink_server->host, uplink_server->ipv6 ? DNS_QUERY_AAAA : DNS_QUERY_A); - UplinkSock->Connect(req.result, uplink_server->port, Config->LocalHost); + DNSRecord req = DNSManager::BlockingQuery(uplink_server->host, uplink_server->ipv6 ? DNS_QUERY_AAAA : DNS_QUERY_A); - Log() << "Connected to server " << Number << " (" << u->host << ":" << u->port << ") with SSL"; - return EVENT_ALLOW; - } - catch (const SocketException &ex) + if (!req) + Log() << "Unable to connect to server " << uplink_server->host << ":" << uplink_server->port << " using SSL: Invalid hostname/IP"; + else { - Log() << "Unable to connect with SSL to server " << Number << " (" << u->host << ":" << u->port << "), " << ex.GetReason(); + try + { + new UplinkSocket(uplink_server->ipv6); + this->service.Init(UplinkSock); + UplinkSock->Connect(req.result, uplink_server->port, Config->LocalHost); + + Log() << "Connected to server " << Number << " (" << u->host << ":" << u->port << ") with SSL"; + return EVENT_ALLOW; + } + catch (const SocketException &ex) + { + Log() << "Unable to connect with SSL to server " << Number << " (" << u->host << ":" << u->port << "), " << ex.GetReason(); + } } return EVENT_STOP; |