From 5ceee7dfb26c2874c8b70e152b9a9fc451e90b9c Mon Sep 17 00:00:00 2001 From: brain Date: Sun, 11 Apr 2004 16:57:13 +0000 Subject: Attempted fixes for UDP race conditions git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@534 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/inspircd.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/inspircd.cpp') diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 8a8dbc761..7351463cc 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -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); @@ -6501,6 +6502,14 @@ void process_restricted_commands(char token,char* params,serverrec* source,serve case 'F': WriteOpers("Server %s has completed netburst. (%d secs)",source->name,time(NULL)-nb_start); handle_F(token,params,source,reply,udp_host,udp_port); + + WriteOpers("Sending my burst now."); + nb_start = time(NULL); + if (!source->initiator) + { + DoSync(reply,udp_host,udp_port,MyKey); + } + WriteOpers("Completed burst to %s (%d secs)",source->name,time(NULL)-nb_start); break; // anything else default: @@ -6595,7 +6604,10 @@ 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); + if (servers[i]->initiator) + { + DoSync(serv,udp_host,udp_port,MyKey); + } return; } } -- cgit v1.2.3