Skip to content

Soar v0.2.3

Choose a tag to compare

@myleshorton myleshorton released this 18 Oct 03:55
a8af533

Fixes

  • A dial no longer fails on a session left behind by an abandoned handshake.
    • The bug: when a dial's context ended mid-handshake, typically because another transport won a race, the handshake still completed. That left a session that never carried a stream. The server ends such a session 15 s after its hello, but the client kept it for SessionIdle (90 s), so the next dial in that window failed with soar: server lost the session.
    • Impact: with kindling's 8 s start delay this was the common case. Soar joins the race, domain fronting wins half a second later, and the next Soar attempt fails at once.
    • The fix: a session that has never carried a stream is retired 10 s after its first hello, timed from the hello rather than its reply, since retried hellos get the same session back. A session that came up less than a second ago is kept, because a dial waiting on it is about to use it. (#14)
  • SPEC.md §7.4 notes the behavior.

Compatibility

There are no API changes, and the wire protocol is unchanged: v0.2.3 interoperates with v0.2.x, v0.1.0 and soar-rs clients and servers.

Full changelog: v0.2.2...v0.2.3