]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/treesocket1.cpp
Fix module unmapping with culled Module objects
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / treesocket1.cpp
index 432ee2a098d7a8a57c6b5dc43fb06e5c9e685dbd..d99d8d6c9d55021faae8bd54e112623a63194a50 100644 (file)
@@ -48,7 +48,7 @@ TreeSocket::TreeSocket(SpanningTreeUtilities* Util, const std::string& shost, in
                                std::string name = (**i).ModuleSourceFile;
                                int a = name.rfind('_');
                                int b = name.rfind('.');
-                               name = name.substr(a, b-a-1);
+                               name = name.substr(a+1, b-a-1);
                                if (name == hook)
                                {
                                        AddIOHook(*i);
@@ -106,6 +106,8 @@ void TreeSocket::CleanNegotiationInfo()
 bool TreeSocket::cull()
 {
        Utils->timeoutlist.erase(this);
+       if (myautoconnect)
+               Utils->Creator->ConnectServer(myautoconnect, false);
        return this->BufferedSocket::cull();
 }
 
@@ -150,7 +152,6 @@ void TreeSocket::OnError(BufferedSocketError e)
        {
                case I_ERR_CONNECT:
                        ServerInstance->SNO->WriteToSnoMask('l', "Connection failed: Connection to \002%s\002 refused", myhost.c_str());
-                       Utils->Creator->ConnectServer(myautoconnect);
                break;
                case I_ERR_SOCKET:
                        ServerInstance->SNO->WriteToSnoMask('l', "Connection failed: Could not create socket (%s)", strerror(errno));