summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2004-04-11 17:22:52 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2004-04-11 17:22:52 +0000
commit292bab4c818af5a189b6ff393d4c9e522b5fdd6e (patch)
tree32f722c54de1e4bc90d9941d026021255cd7a1ed
parent93f59f53c2dc85ec09926d14123eaf0e94c70d42 (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.h2
-rw-r--r--src/InspIRCd.layout28
-rw-r--r--src/inspircd.cpp17
-rw-r--r--src/servers.cpp2
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;
}