fix(capture): replay keeps its records, skips RakNet's own messages and waits for transfers

- the expected answers pointed into a copy of the records that was gone by the diff
- the client's recorded connect and disconnect messages are RakNet's, not sent again
- a recorded move to another world is waited for as long as a zone takes to start
- the handshake sends the client net version; reports are written after every bundle
- a crash or Ctrl-C of the tool stops the sandbox stack too

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-27 09:45:29 -05:00
parent 3a8838d463
commit 31f1bcf2d3
3 changed files with 26 additions and 4 deletions

View File

@@ -254,6 +254,9 @@ namespace {
entry["sandbox"] = stack->Dir().string();
report.push_back(entry);
PrintResult(fs::path(path).filename().string(), result);
// Written after every bundle, so a long run's results survive it being stopped
if (!Arg(args, "--report").empty()) std::ofstream(Arg(args, "--report")) << report.dump(1);
std::cout.flush();
const bool failed = !result.stoppedAt.empty();
if (failed) failures++;
if (options.keep || (failed && Flag(args, "--keep-on-failure"))) {