]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
race condition fixes
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 11 Apr 2004 17:22:52 +0000 (17:22 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 11 Apr 2004 17:22:52 +0000 (17:22 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@537 e03df62e-2008-0410-955e-edbf42e46eb7

include/servers.h
src/InspIRCd.layout
src/inspircd.cpp
src/servers.cpp

index cd329fa4b1e7fbcb2a0a2bcf9b9398ab6e75a468..fe6920d2a4cde097fc9779aac8f5561ce491a504 100644 (file)
@@ -49,7 +49,7 @@ class serverrec : public connection
         */     
        char description[MAXBUF];
        
-       bool initiator;
+       bool sync_soon;
 
        /** Constructor
         */
index 3922b449da8f0eb92f5d012069751494bf9a187f..286195869b4c1cce0b746b2dcbab32da1717e213 100644 (file)
@@ -13,9 +13,9 @@ LeftChar=1
 [Editor_1]
 Open=1
 Top=1
-CursorCol=95
-CursorRow=5399
-TopLine=5377
+CursorCol=13
+CursorRow=6933
+TopLine=6881
 LeftChar=1
 
 [Editor_2]
@@ -45,8 +45,8 @@ LeftChar=1
 [Editor_5]
 Open=1
 Top=0
-CursorCol=2
-CursorRow=26
+CursorCol=1
+CursorRow=23
 TopLine=1
 LeftChar=1
 
@@ -109,9 +109,9 @@ LeftChar=1
 [Editor_13]
 Open=1
 Top=0
-CursorCol=20
-CursorRow=59
-TopLine=18
+CursorCol=6
+CursorRow=30
+TopLine=20
 LeftChar=1
 
 [Editor_14]
@@ -173,9 +173,9 @@ LeftChar=1
 [Editor_21]
 Open=1
 Top=0
-CursorCol=3
-CursorRow=59
-TopLine=7
+CursorCol=1
+CursorRow=68
+TopLine=13
 LeftChar=1
 
 [Editor_22]
@@ -197,9 +197,9 @@ LeftChar=1
 [Editor_24]
 Open=1
 Top=0
-CursorCol=1
-CursorRow=1
-TopLine=1
+CursorCol=3
+CursorRow=320
+TopLine=271
 LeftChar=1
 [Editor_25]
 Open=1
index 2bdb46a0ba17182cdbeb329b0a4824f815a395d9..1adaac5808cbd0751084d0bcc23f3cd8fbf4c03d 100644 (file)
@@ -6570,6 +6570,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;
@@ -6604,10 +6605,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);
-                                       //if (servers[i]->initiator)
-                                       //{
-                                               DoSync(serv,udp_host,udp_port,MyKey);
-                                       //}
+                                       servers[i]->sync_soon = true;
                                        return;
                                }
                        }
@@ -6925,6 +6923,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);
+                                       }
+                               }
+                       }
                }
 
      
index 14d6f361532742ef35039ee57f119f5436d6add2..00b456737e674b79f23fb4046e9aa8773c0fb349 100644 (file)
@@ -19,6 +19,7 @@ serverrec::serverrec()
        signon = time(NULL);
        jupiter = false;
        fd = 0;
+       sync_soon = false;
 }
 
  
@@ -36,5 +37,6 @@ serverrec::serverrec(char* n, long ver, bool jupe)
        signon = time(NULL);
        jupiter = jupe;
        fd = 0;
+       sync_soon = false;
 }