From 9d02f93e8ce531f43822c5813b905121099d0dc0 Mon Sep 17 00:00:00 2001 From: Jean-loup Gailly Date: Mon, 17 Jan 2011 00:26:48 +0100 Subject: [PATCH] gtp_parse(): Do not clear the board on kgs-game_over --- gtp.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/gtp.c b/gtp.c index 3a5d1b7..b102962 100644 --- a/gtp.c +++ b/gtp.c @@ -194,20 +194,27 @@ gtp_parse(struct board *board, struct engine *engine, struct time_info *ti, char board_resize(board, size); gtp_reply(id, NULL); - } else if (!strcasecmp(cmd, "clear_board") || !strcasecmp(cmd, "kgs-game_over")) { + } else if (!strcasecmp(cmd, "clear_board")) { board_clear(board); if (DEBUGL(1) && debug_boardprint) board_print(board, stderr); - if (!strcasecmp(cmd, "kgs-game_over")) { - if (DEBUGL(0)) - fprintf(stderr, "game is over\n"); - /* Sleep before replying, so that kgs doesn't - * start another game immediately. */ - sleep(GAME_OVER_SLEEP); - } gtp_reply(id, NULL); return P_ENGINE_RESET; + } else if (!strcasecmp(cmd, "kgs-game_over")) { + /* The game may not be really over, just adjourned. + * Do not clear the board to avoid illegal moves + * if the game is resumed immediately after. KGS + * may start directly with genmove on resumption. */ + if (DEBUGL(1)) { + fprintf(stderr, "game is over\n"); + fflush(stderr); + } + /* Sleep before replying, so that kgs doesn't + * start another game immediately. */ + sleep(GAME_OVER_SLEEP); + gtp_reply(id, NULL); + } else if (!strcasecmp(cmd, "komi")) { char *arg; next_tok(arg); -- 2.11.4.GIT