aboutsummaryrefslogtreecommitdiff
path: root/diplomacy/server/request_managers.py
diff options
context:
space:
mode:
authornotoraptor <stevenbocco@gmail.com>2019-07-20 15:35:34 -0400
committerPhilip Paquette <pcpaquette@gmail.com>2019-07-21 15:45:33 -0400
commit8b52f299150f834b676d4dde353e5f12cdbe4012 (patch)
tree7fe14e3536e384607f87bb6c28ccfe5010f6dc5e /diplomacy/server/request_managers.py
parent11af6bd80e1bc3f14dd66fc6508a9e7daf063a88 (diff)
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
Diffstat (limited to 'diplomacy/server/request_managers.py')
-rw-r--r--diplomacy/server/request_managers.py6
1 files changed, 6 insertions, 0 deletions
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()