]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Fixes
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 8a8dbc761ef7721ef4912a983e16dce75905feee..79f2d58c450e7b915c5692174b13e4af81cefe88 100644 (file)
@@ -5362,6 +5362,7 @@ void handle_connect(char **parameters, int pcnt, userrec *user)
                for (int j = 0; j < 255; j++) {
                        if (servers[j] == NULL) {
                                servers[j] = new serverrec;
+                               //servers[j]->initiator = true;
                                strcpy(servers[j]->internal_addr,Link_IPAddr);
                                servers[j]->internal_port = LinkPort;
                                strcpy(servers[j]->name,Link_ServerName);
@@ -6561,6 +6562,7 @@ void handle_link_packet(long theirkey, char* udp_msg, char* udp_host, int udp_po
                                                                strcpy(servers[j]->description,serverdesc);
                                                                servers[j]->internal_port = udp_port;
                                                                // 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,udp_port,0);
                                                                return;
@@ -6595,7 +6597,7 @@ void handle_link_packet(long theirkey, char* udp_msg, char* udp_host, int udp_po
                                if (!strcasecmp(servers[i]->internal_addr,udp_host)) {
                                        servers[i]->key = atoi(params);
                                        log(DEBUG,"Key for this server is now %d",servers[i]->key);
-                                       DoSync(serv,udp_host,udp_port,MyKey);
+                                       servers[i]->sync_soon = true;
                                        return;
                                }
                        }
@@ -6913,6 +6915,17 @@ int InspIRCd(void)
                        }
                        fd_reap.clear();
                        reap_counter=0;
+                       for (int j = 0; j < 255; j++)
+                       {
+                               if (servers[j])
+                               {
+                                       if (servers[j]->sync_soon)
+                                       {
+                                               servers[j]->sync_soon = false;
+                                               DoSync(servers[j],servers[j]->internal_addr,servers[j]->internal_port,MyKey);
+                                       }
+                               }
+                       }
                }