my $tb_retry_timer = undef;
my %tb_cache = ();
my $tb_lookup_running = 0;
+my $last_written_json = undef;
# TODO: Persist (parts of) this so that we can restart.
my %clock_target_for_pos = ();
$json->{'refutation_lines'} = \%refutation_lines;
my $encoded = JSON::XS::encode_json($json);
- unless ($historic_json_only) {
+ unless ($historic_json_only || !defined($remoteglotconf::json_output) ||
+ (defined($last_written_json) && $last_written_json eq $encoded)) {
atomic_set_contents($remoteglotconf::json_output, $encoded);
+ $last_written_json = $encoded;
}
if (exists($pos_calculating->{'pretty_history'}) &&
my $pos = shift;
# If the game is over, the clock is stopped.
- if ($pos->{'result'} eq '1-0' ||
- $pos->{'result'} eq '1/2-1/2' ||
- $pos->{'result'} eq '0-1') {
+ if (exists($pos->{'result'}) &&
+ ($pos->{'result'} eq '1-0' ||
+ $pos->{'result'} eq '1/2-1/2' ||
+ $pos->{'result'} eq '0-1')) {
return;
}
return;
}
+ # TODO(sesse): Maybe we can get the number of moves somehow else for FICS games.
+ if (!exists($pos->{'pretty_history'})) {
+ return;
+ }
+
my $id = id_for_pos($pos);
if (exists($clock_target_for_pos{$id})) {
if ($pos->{'toplay'} eq 'W') {