client.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true)
# Keepalive time can be set by /proc/sys/net/ipv4/tcp_keepalive_time
player, login = login_loop(client) # loop
- next unless player
+ unless player
+ log_error("Detected a timed out login attempt")
+ next
+ end
log_message(sprintf("user %s login", player.name))
login.process
if (player.game)
player.game.kill(player)
end
- player.finish # socket has been closed
+ player.finish
$league.delete(player)
log_message(sprintf("user %s logout", player.name))
ensure
$mutex.unlock
end
+ player.wait_write_thread_finish(1000) # milliseconds
rescue Exception => ex
log_error("server.start: #{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}")
end