CultLib/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens b37f898465 C#: a send failure on an already-ended session says no second goodbye
3b9ffac2 claimed that the generation check subsumed the UnsendableReason
once-guard. It did not. A thread that reads the generation only after
the session has ended carries the ended session's own generation, and the
check lets it through. For example, the polling thread answers a Ping on a
session that a caller's send has just ended but that has not yet been
retired. When that Pong fails permanently, the thread says a second
goodbye and overwrites the first failure's reason (Soul pass 4, PR4).
EndUnsendableSession now also returns when the session has already ended.

Two tests:
- The polling thread answers a Ping on a session already ended, and the
  Pong can never be sent. Exactly one goodbye goes out, and the first
  failure's reason stands. The hook admits the Ping after the session
  ended and before the peer is queued for retirement. The test kills the
  mutant that drops the Ended check.
- A failed send's goodbye is sent under the gate. A polling thread
  admitting a new Connect from the endpoint waits on the gate, so the old
  generation's goodbye never follows the new session's Accept. The test
  kills the mutant that sends the goodbye outside the gate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 20:19:19 +02:00
..
GameCult.Caching.ConsumerBuild Delete the CultCache MessagePack source generator 2026-09-13 23:38:08 +02:00
GameCult.Caching.InteropPeer Delete the CultCache MessagePack source generator 2026-09-13 23:38:08 +02:00
GameCult.Caching.Tests Caching: JSON converter and MessagePack formatter for CultPhasor 2026-09-30 02:46:29 +02:00
GameCult.Geometry.Tests Geometry tests: import System.Linq for the reference walk test 2026-09-30 02:30:43 +02:00
GameCult.Mesh.Quic.Native.Tests Extend the Cut 5 interop lane: a late C# native connector gets the TS retained frame 2026-09-23 18:32:39 +02:00
GameCult.Mesh.Quic.Tests Fix a flaky disconnect wait in the reliable-ordered retention test 2026-09-23 18:20:36 +02:00
GameCult.Mesh.Tests Tests: the Mesh same-schema read serves only owned rows; the unowned put answer must try to send 2026-09-30 06:23:09 +02:00
GameCult.Networking.InteropPeer Ack Cut 1c (C#): a Connect's sequence says whether it repeats; the handshake alone seeds the watermark 2026-09-30 05:51:14 +02:00
GameCult.Networking.Tests C#: a send failure on an already-ended session says no second goodbye 2026-09-30 20:19:19 +02:00
GameCult.Networking.WebSockets.Tests Add real browser CultMesh transport proof 2026-08-18 00:05:57 +02:00
vectors Regenerate the C1 variant vector: the variant overrides its indexed code 2026-09-29 06:59:29 +02:00