summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/resolvers.cpp
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2019-02-07 15:34:41 +0000
committerPeter Powell <petpow@saberuk.com>2019-04-15 12:21:12 +0100
commitc2c4de7267db9835e36132364f422ba7d93f25d6 (patch)
treec165dda97b90d713cf25ddd7ddd000839c2e3405 /src/modules/m_spanningtree/resolvers.cpp
parente7b65ef5355d75dd32ea387da716a765090aff0e (diff)
Fix linking servers with UNIX sockets.
- Remove the address/port overloads of BeginConnect. - Change DoConnect to take a sockaddrs instead of an address/port.
Diffstat (limited to 'src/modules/m_spanningtree/resolvers.cpp')
-rw-r--r--src/modules/m_spanningtree/resolvers.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/modules/m_spanningtree/resolvers.cpp b/src/modules/m_spanningtree/resolvers.cpp
index ded0573af..b20b100dd 100644
--- a/src/modules/m_spanningtree/resolvers.cpp
+++ b/src/modules/m_spanningtree/resolvers.cpp
@@ -49,6 +49,14 @@ void ServernameResolver::OnLookupComplete(const DNS::Query *r)
return;
}
+ irc::sockets::sockaddrs sa;
+ if (!irc::sockets::aptosa(ans_record->rdata, MyLink->Port, sa))
+ {
+ // We had a result but it wasn't a valid IPv4/IPv6.
+ OnError(r);
+ return;
+ }
+
/* Initiate the connection, now that we have an IP to use.
* Passing a hostname directly to BufferedSocket causes it to
* just bail and set its FD to -1.
@@ -56,7 +64,7 @@ void ServernameResolver::OnLookupComplete(const DNS::Query *r)
TreeServer* CheckDupe = Utils->FindServer(MyLink->Name);
if (!CheckDupe) /* Check that nobody tried to connect it successfully while we were resolving */
{
- TreeSocket* newsocket = new TreeSocket(MyLink, myautoconnect, ans_record->rdata);
+ TreeSocket* newsocket = new TreeSocket(MyLink, myautoconnect, sa);
if (newsocket->GetFd() > -1)
{
/* We're all OK */