Repository navigation
Release 5.7.0 - #1192
Merged
Merged
Release 5.7.0#1192
Conversation
Port upstream TWS API combo implied bid/ask: TickType::ComboImpliedBid (112)
and ComboImpliedAsk (113), generic tick COMBO_IMPLIED_BID_ASK ("760") for
BAG contracts, and advertise server version 227.
(cherry picked from commit 7a961a2)
* fix: bound one-shot reconnect wait by its deadline The retry between one-shot attempts waited for the reconnect with no timeout, so a call made while the connection was down blocked for the whole reconnect (minutes), past one_shot_timeout. Thread the one-shot deadline through ConnectionSignal, MessageBus, ReconnectWaiter and the retry; the wait returns Error::Timeout once it passes. Sync and async. Public Client::wait_connected stays unbounded. Closes #1168 * docs: one_shot_timeout bounds the reconnect wait (cherry picked from commit 1953a10)
* transport: close send race with reconnect handshake (#1171) Previously a send checked the connection state in `ensure_connected` and then wrote, with nothing to stop the reconnect from swapping the socket between the two, so a send that raced the reconnect could be written to the new socket before its handshake had finished. `TcpMessageBus` and `AsyncTcpMessageBus` now hold a session `RwLock`: the dispatcher takes the write lock across the reconnect and each send takes the read lock across its state check and socket write, so a send that overlaps the reconnect either completes on the old socket or is refused (`ConnectionReset` while the reconnect can still succeed, `ConnectionFailed` or `Shutdown` once it has ended). The four local `wait_for` test helpers become `wait_for` and `wait_for_async` in `test_utils::helpers`. * test(transport): queued send stays off the reconnect handshake (#1171) Covers the issue's path: a send already past its state check and queued on the writer when the session breaks. Fails without the session gate. * review: async queued-send test, CHANGELOG wording, test cross-refs (#1171) --------- Co-authored-by: Wil Boayue <wil.boayue@gmail.com> (cherry picked from commit 5400e59)
* transport: reconnect doesn't wait behind a stuck write The session gate (#1172) waits out writes already past their check, and a TCP write has no timeout: one stuck on a peer that stopped reading held the reconnect until the peer read again or the client closed. The dispatcher now severs the lost connection before taking the gate. Sync shuts the stream down through the close handle; async marks the socket Broken. The stuck write fails with ConnectionReset; reconnect clears the mark. * changelog: cite #1179 * test(transport): share marker check; name wait bound for both test sockets (cherry picked from commit cdfe278)
This was referenced Nov 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
5.7.0 from the
release/5.xmaintenance branch (cut fromv5.6.0);mainis 6.0-dev.Cherry-picks (
-x) of the non-breaking commits since 5.6.0:Execution::option_exercise_type(conflict insync_tests.rsresolved to 5.xCommissionReportnames)Plus
Release 5.7.0: version, dated changelog, compare links, install snippets"5.6"→"5.7".Semver notes: new
TickTypevariants (exhaustive enum, precedent 3.3.0) and newExecutionfield (precedent 4.1.0), both called out in the changelog.Skipped: all
6.0:commits, #1180 (depends on 6.0 enums), docs/rules commits.Checks: fmt, clippy + rustdoc
-D warningson all three CI legs,just test,cargo publish --dry-run.Merge: rebase-merge, not squash, to keep one commit per cherry-pick with its
(cherry picked from ...)trailer.