#include "iohook.h"
#include "main.h"
-#include "modules/spanningtree.h"
+#include "modules/server.h"
#include "utils.h"
#include "treeserver.h"
#include "link.h"
* and only do minor initialization tasks ourselves.
*/
TreeSocket::TreeSocket(Link* link, Autoconnect* myac, const std::string& ipaddr)
- : linkID(assign(link->Name)), LinkState(CONNECTING), MyRoot(NULL), proto_version(0)
+ : linkID(link->Name), LinkState(CONNECTING), MyRoot(NULL), proto_version(0)
, burstsent(false), age(ServerInstance->Time())
{
capab = new CapabData;
capab->capab_phase = 0;
DoConnect(ipaddr, link->Port, link->Timeout, link->Bind);
- Utils->timeoutlist[this] = std::pair<std::string, int>(linkID, link->Timeout);
+ Utils->timeoutlist[this] = std::pair<std::string, unsigned int>(linkID, link->Timeout);
SendCapabilities(1);
}
for (ListenSocket::IOHookProvList::iterator i = via->iohookprovs.begin(); i != via->iohookprovs.end(); ++i)
{
ListenSocket::IOHookProvRef& iohookprovref = *i;
- if (iohookprovref)
- iohookprovref->OnAccept(this, client, server);
+ if (!iohookprovref)
+ continue;
+
+ iohookprovref->OnAccept(this, client, server);
+ // IOHook could have encountered a fatal error, e.g. if the TLS ClientHello was already in the queue and there was no common TLS version
+ if (!getError().empty())
+ {
+ TreeSocket::OnError(I_ERR_OTHER);
+ return;
+ }
}
SendCapabilities(1);
- Utils->timeoutlist[this] = std::pair<std::string, int>(linkID, 30);
+ Utils->timeoutlist[this] = std::pair<std::string, unsigned int>(linkID, 30);
}
void TreeSocket::CleanNegotiationInfo()
SetError(errormessage);
}
-CmdResult CommandSQuit::HandleServer(TreeServer* server, std::vector<std::string>& params)
+CmdResult CommandSQuit::HandleServer(TreeServer* server, CommandBase::Params& params)
{
TreeServer* quitting = Utils->FindServer(params[0]);
if (!quitting)