Repository navigation
Keep iOS Iroh connections alive through stalls and traffic bursts - #12411
Merged
Merged
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Contributor
|
All contributors have signed the CLA ✍️ ✅ |
…ion-authority # Conflicts: # Packages/Shared/CmuxIrxTransport/Sources/CmuxIrxTransport/IrxAdmission.swift # Packages/Shared/CmuxIrxTransport/Tests/CmuxIrxTransportTests/IrxLiveQUICTests.swift
azooz2003-bit
marked this pull request as ready for review
September 15, 2026 19:39
Merged
rustybret
pushed a commit
to rustybret/bmux
that referenced
this pull request
Sep 15, 2026
f5da007 Bump version to 0.64.24 (manaflow-ai#12698) b9fbbe4 Keep iOS Iroh connections alive through stalls and traffic bursts (manaflow-ai#12411) 1bbb37e Guard production IROH v2 deploy against Stack Auth drift (manaflow-ai#12686) 9314041 Fix recursive Codex autoresume after nightly regression (manaflow-ai#12697) # Conflicts: # .github/workflows/ci.yml
teamleaderleo
added a commit
that referenced
this pull request
Sep 25, 2026
- networkChangeKeepsLegacyNoStoreConnectionAvailable: a no-store network change only resyncs, and 57ec73a keeps an already-connected session from being demoted to reconnecting while the subscription ACK is in flight. Expect .connected. - operationFailurePreservesOpenIrohConnection: the sequenced test transport did not expose CmxByteTransportLivenessObserving, so isTransportClosed returned nil and recoverDeadConnection treated the live transport as dead. Add an opt-in observing wrapper, as production Iroh transports conform. - hungRedialSettlesAtDeadlineAndUnfreezesRecovery: since #12411 recoverDeadConnection only redials a natively closed transport. Close the live transport before the trigger so the hung redial is exercised. Refs #14689 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
iOS could reconnect while its Iroh connection remained usable: application pong deadlines, stalled writes, event queue overflow, failed network refreshes, and large batches of valid messages could all trigger teardown.
Use native Iroh connection state for liveness decisions. Keep unfinished control frames serialized until their writes complete or fail, repair optional streams independently, and retain the session after failed application probes. Native dead-peer detection, required control-stream failure, and authorization rejection still drive recovery.
Event pressure now retains ordered events and sheds recoverable refresh frames. RPC overload returns
server_busyfor the affected request. Framing drains bounded batches and applies size limits per message, so a read containing many valid messages or the tail of one large message cannot trigger teardown. Ordered-event memory can grow during prolonged congestion, an intentional tradeoff to preserve delivery without disconnecting.Validation on the Mac fleet: 194 RPC tests, 4 framing tests, 6 live QUIC tests, and 44 shell recovery/liveness tests passed. The stalled-write, missing-pong, foreground-age, and coalesced-frame-tail regressions failed before their fixes. All 109 host authorization tests passed on the final head (run); the ordered-input hosted run also passed (run). Matching tagged Mac and iOS apps were built. A measured one-hour proactive desktop workload soak completed with 113 terminal passes (16 harness records adjudicated), 69 browser passes, and 73 quiet-workspace passes. There were no failed host status calls. Three early browser records are metadata-only harness failures, and one deliberate reload batch remains recorded as a harness timing failure. Authenticated iOS coverage is blocked because all seven relays reject freshly minted credentials as
invalid token; an isolated native probe reproduced the rejection after successful registration and token minting. Deployed relay key, endpoint identity, DNS forwarding, and native token plumbing were verified; per-probe relay-log correlation remains unavailable. This is not a live iOS stability pass.Also corrects a pre-existing compile error in panel cleanup by calling
clearCloudMaterializationFailure(surfaceID:)instead of accessing another file's private storage.