X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fresolvers.cpp;h=b20b100dd2f6bd63f29d36613ef3769a3e61936d;hb=7a58d288d0fd005795a8ac6908fc91bf350174d6;hp=ded0573afeec2c50cd2b069f4bea63e674bfd6f9;hpb=c6e40d36b42a7ebf832c3a57d2816a47ee9c9a76;p=user%2Fhenk%2Fcode%2Finspircd.git 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 */