]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Now clears the autoconns map on rehash
[user/henk/code/inspircd.git] / src / inspircd.cpp
index b52044d2a51b10dbcb2ee15f4f383a59e06df4fa..c9b2719424488569143c9fcc06173b3032ea863c 100644 (file)
@@ -401,6 +401,7 @@ void ReadConfig(bool bail, userrec* user)
        log(DEFAULT,"Applying K lines, Q lines and Z lines...");
        apply_lines();
 
+       autoconns.clear();
         for (int i = 0; i < ConfValueEnum("link",&config_f); i++)
         {
                char Link_ServerName[MAXBUF],Link_AConn[MAXBUF];
@@ -2517,6 +2518,26 @@ bool LoadModule(const char* filename)
        return true;
 }
 
+
+bool GotServer(std::string name)
+{
+        for (int j = 0; j < 32; j++)
+        {
+                if (me[j] != NULL)
+                {
+                        for (int k = 0; k < me[j]->connectors.size(); k++)
+                        {
+                               if (name == me[j]->connectors[k].GetServerName())
+                               {
+                                       return true;
+                               }
+                        }
+                }
+        }
+       return false;
+}
+
+
 int InspIRCd(char** argv, int argc)
 {
        struct sockaddr_in client,server;
@@ -2826,9 +2847,9 @@ int InspIRCd(char** argv, int argc)
                                char Link_ServerName[MAXBUF],Link_AConn[MAXBUF];
                                ConfValue("link","name",i,Link_ServerName,&config_f);
                                ConfValue("link","autoconnect",i,Link_AConn,&config_f);
-                               if (Link_AConn[0])
+                               if ((Link_AConn[0]) && (!GotServer(Link_ServerName)))
                                {
-                                       autoconnects::iterator a = autoconns.find(Link_ServerName);
+                                       autoconnects::iterator a = autoconns.find(std::string(Link_ServerName));
                                        if (a != autoconns.end())
                                        {
                                                if (TIME > a->second)