diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-03-23 14:02:12 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-03-23 14:02:12 +0000 |
| commit | e20e488d3d804972d777ed4cf094a54e5ebc5e7e (patch) | |
| tree | 9135c428b7ba0a1252ffe6f8fa5f028186677e87 /src/engine/server | |
| parent | d3395a8e0a4f148b1b5984eca7d3f1380f10a67f (diff) | |
| download | zcatch-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.c | 12 |
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) { |