delete ServerInstance->PI;
ServerInstance->PI = new SpanningTreeProtocolInterface(this, Utils, ServerInstance);
+ loopCall = false;
for (std::vector<User*>::const_iterator i = ServerInstance->Users->local_users.begin(); i != ServerInstance->Users->local_users.end(); i++)
{
// Fix for bug #792, do not ping servers that are not connected yet!
// Remote servers have Socket == NULL and local connected servers have
// Socket->LinkState == CONNECTED
- if (!s->GetSocket() || s->GetSocket()->GetLinkState() == CONNECTED)
+ if (s->GetSocket() && s->GetSocket()->GetLinkState() != CONNECTED)
continue;
// Now do PING checks on all servers
void ModuleSpanningTree::OnUserKick(User* source, User* user, Channel* chan, const std::string &reason, bool &silent)
{
+ if (loopCall)
+ return;
if ((source) && (IS_LOCAL(source)))
{
std::deque<std::string> params;
void ModuleSpanningTree::OnAddLine(User* user, XLine *x)
{
- if (!x->IsBurstable())
+ if (!x->IsBurstable() || loopCall)
return;
char data[MAXBUF];