]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Link fixes
[user/henk/code/inspircd.git] / src / inspircd.cpp
index f412a84d53c6840b9449e24b798562b4629eb153..7b4becedf1691db43f8d8e1feaf637d19346461f 100644 (file)
@@ -6705,6 +6705,14 @@ void handle_link_packet(char* udp_msg, char* udp_host, serverrec *serv)
                char* serverdesc = finalparam+2;
                WriteOpers("CONNECT from %s (%s)",servername,udp_host);
                
+               for (int j = 0; j < serv->connectors.size(); j++)
+               {
+                       if (!strcasecmp(serv->connectors[j].GetServerName().c_str(),udp_host))
+                       {
+                               serv->connectors[j].SetServerName(servername);
+                       }
+               }
+               
                
                char Link_ServerName[1024];
                char Link_IPAddr[1024];
@@ -6724,35 +6732,12 @@ void handle_link_packet(char* udp_msg, char* udp_host, serverrec *serv)
                        log(DEBUG,"(%d) Comparing against name='%s', ipaddr='%s', port='%s', recvpass='%s'",i,Link_ServerName,Link_IPAddr,Link_Port,Link_Pass);
                        LinkPort = atoi(Link_Port);
                        if (!strcasecmp(Link_ServerName,servername))
-                       {
-                               if (!strcasecmp(Link_IPAddr,udp_host))
-                               {
-                                       // we have a matching link line -
-                                       // send a 'diminutive' server message back...
-                                       snprintf(response,10240,"s %s %s :%s",ServerName,Link_SendPass,ServerDesc);
-                                       serv->SendPacket(response,udp_host);
-                                       WriteOpers("CONNECT from %s accepted, authenticating",servername);
-                                       for (int j = 0; j < 255; j++)
-                                       {
-                                               if (servers[j] == NULL)
-                                               {
-                                                       servers[j] = new serverrec;
-                                                       strcpy(servers[j]->internal_addr,udp_host);
-                                                       strcpy(servers[j]->name,servername);
-                                                       strcpy(servers[j]->description,serverdesc);
-                                                       // create a server record for this server
-                                                       WriteOpers("Server %s authenticated, exchanging server keys...",servername);
-                                                       snprintf(response,10240,"O %d",MyKey);
-                                                       serv->SendPacket(response,udp_host);
-                                                       return;
-                                               }
-                                       }
-                                       WriteOpers("Internal error connecting to %s, failed to create server record!",servername);
-                                       return;
-                               }
-                       }
-                       else {
-                               log(DEBUG,"Server names '%s' and '%s' don't match",Link_ServerName,servername);
+                       {
+                               // we have a matching link line -
+                               // send a 'diminutive' server message back...
+                               snprintf(response,10240,"s %s %s :%s",ServerName,Link_SendPass,ServerDesc);
+                               serv->SendPacket(response,servername);
+                               return;
                        }
                }
                serv->SendPacket("E :Access is denied (no matching link block)",udp_host);
@@ -6796,27 +6781,23 @@ void handle_link_packet(char* udp_msg, char* udp_host, serverrec *serv)
                        LinkPort = atoi(Link_Port);
                        if (!strcasecmp(Link_ServerName,servername))
                        {
-                               if (!strcasecmp(Link_IPAddr,udp_host))
-                               {
-                                       // matching link at this end too, we're all done!
-                                       // at this point we must begin key exchange and insert this
-                                       // server into our 'active' table.
-                                       for (int j = 0; j < 255; j++) {
-                                               if (servers[j] != NULL) {
-                                                       if (!strcasecmp(servers[j]->name,udp_host)) {
-                                                               strcpy(servers[j]->description,serverdesc);
-                                                               WriteOpers("Server %s authenticated, exchanging server keys...",servername);
-                                                               DoSync(serv,udp_host);
-                                                               return;
-                                                       }
+                               // matching link at this end too, we're all done!
+                               // at this point we must begin key exchange and insert this
+                               // server into our 'active' table.
+                               for (int j = 0; j < 255; j++)
+                               {
+                                       if (servers[j] != NULL)
+                                       {
+                                               if (!strcasecmp(servers[j]->name,udp_host))
+                                               {
+                                                       strcpy(servers[j]->description,serverdesc);
+                                                       WriteOpers("Server %s authenticated, exchanging server keys...",servername);
+                                                       DoSync(serv,udp_host);
+                                                       return;
                                                }
-                                               WriteOpers("\2WARNING!\2 %s sent us an authentication packet but we are not authenticating with this server right noe! Possible intrusion attempt!",udp_host);
-                                               return;
-
                                        }
-                               }
-                               else {
-                                       log(DEBUG,"IP Addresses '%s' and '%s' don't match",Link_IPAddr,udp_host);
+                                       WriteOpers("\2WARNING!\2 %s sent us an authentication packet but we are not authenticating with this server right noe! Possible intrusion attempt!",udp_host);
+                                       return;
                                }
                        }
                        else {