From 974a5a213bd780f5021c3e3d40ffad05e3c0a23e Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Mon, 20 Aug 2018 23:37:48 +0200 Subject: Kill referee on player timeout --- main.cpp | 1 + referee.cpp | 4 ++++ referee.h | 3 +++ 3 files changed, 8 insertions(+) diff --git a/main.cpp b/main.cpp index 3dca757..5a6c779 100644 --- a/main.cpp +++ b/main.cpp @@ -278,6 +278,7 @@ static void playMatch(Player &p1, Player &p2, int index, const Params ¶ms) { if (mres.ms1 / 1000 > timeout_msec || mres.ms2 / 1000 > timeout_msec) { mres.status = MatchResult::Status::timeout; mres.sc1 = mres.sc2 = 0; + referee.terminate(); goto match_done; } diff --git a/referee.cpp b/referee.cpp index 3f15b6b..7bf3a93 100644 --- a/referee.cpp +++ b/referee.cpp @@ -90,3 +90,7 @@ optional> Referee::getScores() { if (isEnd) return scores; else return nullopt; } + +void Referee::terminate() { + proc.terminate(); +} diff --git a/referee.h b/referee.h index 5f278c5..0121196 100644 --- a/referee.h +++ b/referee.h @@ -25,6 +25,9 @@ public: bool gameEnded(); optional> getScores(); + + // Kills the referee process + void terminate(); }; /* -- cgit v1.2.3-54-g00ecf