about summary refs log tree commit diff
path: root/src/engine/server
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-23 14:02:12 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-03-23 14:02:12 +0000
commite20e488d3d804972d777ed4cf094a54e5ebc5e7e (patch)
tree9135c428b7ba0a1252ffe6f8fa5f028186677e87 /src/engine/server
parentd3395a8e0a4f148b1b5984eca7d3f1380f10a67f (diff)
downloadzcatch-e20e488d3d804972d777ed4cf094a54e5ebc5e7e.tar.gz
zcatch-e20e488d3d804972d777ed4cf094a54e5ebc5e7e.zip
made so that servers rechecks masters after 60 minutes to even out the balance
Diffstat (limited to 'src/engine/server')
-rw-r--r--src/engine/server/es_register.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/engine/server/es_register.c b/src/engine/server/es_register.c
index 47712350..2d482359 100644
--- a/src/engine/server/es_register.c
+++ b/src/engine/server/es_register.c
@@ -21,6 +21,7 @@ enum
 static int register_state = REGISTERSTATE_START;
 static int64 register_state_start = 0;
 static int register_first = 1;
+static int register_count = 0;
 
 static void register_new_state(int state)
 {
@@ -95,6 +96,7 @@ void register_update()
 	
 	if(register_state == REGISTERSTATE_START)
 	{
+		register_count = 0;
 		register_first = 1;
 		register_new_state(REGISTERSTATE_UPDATE_ADDRS);
 		mastersrv_refresh_addresses();
@@ -201,7 +203,15 @@ void register_update()
 		
 		/* check if we should send new heartbeat again */
 		if(now > register_state_start+freq*30)
-			register_new_state(REGISTERSTATE_HEARTBEAT);
+		{
+			if(register_count == 120) /* redo the whole process after 60 minutes to balance out the master servers */
+				register_new_state(REGISTERSTATE_START);
+			else
+			{
+				register_count++;
+				register_new_state(REGISTERSTATE_HEARTBEAT);
+			}
+		}
 	}
 	else if(register_state == REGISTERSTATE_ERROR)
 	{