]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix double-invocation of Squit that can cause a crash on delink
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Sat, 13 Feb 2010 17:20:56 +0000 (17:20 +0000)
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Sat, 13 Feb 2010 17:20:56 +0000 (17:20 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12451 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/m_spanningtree/main.cpp
src/modules/m_spanningtree/treesocket1.cpp

index 3e5e2beb95e9c9dae3cd064fd1b8338507fdbbf5..ee211891593b8ccc46e33fc1bc8c987941679e2c 100644 (file)
@@ -154,8 +154,6 @@ restart:
                
                if (s->GetSocket() && s->GetSocket()->GetLinkState() == DYING)
                {
-                       s->GetSocket()->SendError("Ping timeout");
-                       s->GetSocket()->Squit(s,"Ping timeout");
                        s->GetSocket()->Close();
                        goto restart;
                }
@@ -196,7 +194,6 @@ restart:
                                        if (sock)
                                        {
                                                sock->SendError("Ping timeout");
-                                               sock->Squit(s,"Ping timeout");
                                                sock->Close();
                                                goto restart;
                                        }
@@ -776,7 +773,6 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod)
                if (sock && sock->GetIOHook() == mod)
                {
                        sock->SendError("SSL module unloaded");
-                       sock->Squit(srv,"SSL module unloaded");
                        sock->Close();
                }
        }
index 5efa58f3b9a945e2e00edd5a5c3a9c9e52a30645..79da951b6b899a9b440e5c29cde8a5f426fcf64f 100644 (file)
@@ -205,6 +205,7 @@ void TreeSocket::Squit(TreeServer* Current, const std::string &reason)
                Current->GetParent()->DelChild(Current);
                Current->cull();
                delete Current;
+               Current = NULL;
                if (LocalSquit)
                        ServerInstance->SNO->WriteToSnoMask('l', "Netsplit complete, lost \002%d\002 user%s on \002%d\002 server%s.", num_lost_users, num_lost_users != 1 ? "s" : "", num_lost_servers, num_lost_servers != 1 ? "s" : "");
                else