stalling for more than a day, can forcibly override the current player.
+2014-10-13 Daigo Moriwaki <daigo at debian dot org>
+
+ * [shogi-server]
+ - A player, attempting to login with the current live player
+ stalling for more than a day, can forcibly override the current
+ player.
+
2014-07-19 Daigo Moriwaki <daigo at debian dot org>
* [mk_rate]
2014-07-19 Daigo Moriwaki <daigo at debian dot org>
* [mk_rate]
+ONE_DAY = 3600 * 24 # in seconds
+
ShogiServer.reload
# Return
ShogiServer.reload
# Return
player = ShogiServer::Player::new(str, client, eol)
login = ShogiServer::Login::factory(str, player)
if (current_player = $league.find(player.name))
player = ShogiServer::Player::new(str, client, eol)
login = ShogiServer::Login::factory(str, player)
if (current_player = $league.find(player.name))
+ # Even if a player is in the 'game' state, when the status of the
+ # player has not been updated for more than a day, it is very
+ # likely that the player is stalling. In such a case, a new player
+ # can override the current player.
if (current_player.password == player.password &&
if (current_player.password == player.password &&
- current_player.status != "game")
- log_message(sprintf("user %s login forcely", player.name))
+ (current_player.status != "game" ||
+ Time.now - current_player.modifiled_at > ONE_DAY))
+ log_message("user %s login forcely (previously modified at %s)" % [player.name, player.modified_at])
current_player.kill
else
login.incorrect_duplicated_player(str)
current_player.kill
else
login.incorrect_duplicated_player(str)