diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2004-04-11 17:22:52 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2004-04-11 17:22:52 +0000 |
commit | 292bab4c818af5a189b6ff393d4c9e522b5fdd6e (patch) | |
tree | 32f722c54de1e4bc90d9941d026021255cd7a1ed | |
parent | 93f59f53c2dc85ec09926d14123eaf0e94c70d42 (diff) |
race condition fixes
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@537 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | include/servers.h | 2 | ||||
-rw-r--r-- | src/InspIRCd.layout | 28 | ||||
-rw-r--r-- | src/inspircd.cpp | 17 | ||||
-rw-r--r-- | src/servers.cpp | 2 |
4 files changed, 30 insertions, 19 deletions
diff --git a/include/servers.h b/include/servers.h index cd329fa4b..fe6920d2a 100644 --- a/include/servers.h +++ b/include/servers.h @@ -49,7 +49,7 @@ class serverrec : public connection */ char description[MAXBUF]; - bool initiator; + bool sync_soon; /** Constructor */ diff --git a/src/InspIRCd.layout b/src/InspIRCd.layout index 3922b449d..286195869 100644 --- a/src/InspIRCd.layout +++ b/src/InspIRCd.layout @@ -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 diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 2bdb46a0b..1adaac580 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -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); + } + } + } } diff --git a/src/servers.cpp b/src/servers.cpp index 14d6f3615..00b456737 100644 --- a/src/servers.cpp +++ b/src/servers.cpp @@ -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; } |