From e20e488d3d804972d777ed4cf094a54e5ebc5e7e Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Sun, 23 Mar 2008 14:02:12 +0000 Subject: made so that servers rechecks masters after 60 minutes to even out the balance --- src/engine/server/es_register.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/engine') 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) { -- cgit 1.4.1