From 8b52f299150f834b676d4dde353e5f12cdbe4012 Mon Sep 17 00:00:00 2001 From: notoraptor Date: Sat, 20 Jul 2019 15:35:34 -0400 Subject: Fixed synchronization issues - Added __enter__, __exit__, and .current_state() to game object - set_orders throws an exception is the server phase is not the same as the client phase - Returning only waiting dummy powers to bot --- diplomacy/server/request_managers.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'diplomacy/server/request_managers.py') diff --git a/diplomacy/server/request_managers.py b/diplomacy/server/request_managers.py index 59c0e88..ff93977 100644 --- a/diplomacy/server/request_managers.py +++ b/diplomacy/server/request_managers.py @@ -71,6 +71,9 @@ def on_clear_orders(server, request, connection_handler): """ level = verify_request(server, request, connection_handler, observer_role=False) assert_game_not_finished(level.game) + if not request.phase or request.phase != level.game.current_short_phase: + raise exceptions.ResponseException( + 'Invalid order phase, received %s, server phase is %s' % (request.phase, level.game.current_short_phase)) level.game.clear_orders(level.power_name) Notifier(server, ignore_addresses=[request.address_in_game]).notify_cleared_orders(level.game, level.power_name) @@ -988,6 +991,9 @@ def on_set_orders(server, request, connection_handler): """ level = verify_request(server, request, connection_handler, observer_role=False, require_power=True) assert_game_not_finished(level.game) + if not request.phase or request.phase != level.game.current_short_phase: + raise exceptions.ResponseException( + 'Invalid order phase, received %s, server phase is %s' % (request.phase, level.game.current_short_phase)) power = level.game.get_power(level.power_name) previous_wait = power.wait power.clear_orders() -- cgit v1.2.3