Skip to content

fix: retain Remoter terminal causes and queued output - #10

Merged
kentbull merged 1 commit into
release/v0.6.20from
p0/remoter-terminal-state-v0.6.20
Aug 27, 2026
Merged

kentbull merged 1 commit into
release/v0.6.20from
p0/remoter-terminal-state-v0.6.20

Conversation

@kentbull

@kentbull kentbull commented Aug 27, 2026 •

Copy link
Copy Markdown
Collaborator

What

  • Retain the transport exception that closes a Remoter direction.
  • Preserve unsent bytes.
  • Reject later enqueue attempts with a chained TransmitClosedError.

Why

Local receive EOF caused by peer write shutdown does not make transmission unusable. A terminal send failure does. Keeping the directions and original cause separate lets an owner drain final input without silently accepting output that can no longer be sent.

Boundary

This PR gives accepted raw TCP connections terminal-cause and late-enqueue behavior corresponding to Client. It does not classify TLS outcomes or implement graceful close.

Give accepted connections the same failure contract as outbound clients. Remoter now retains the transport exception that closed a direction, preserves queued bytes, and rejects later output with a chained TransmitClosedError.

This PR leaves TLS classification and graceful close behavior unchanged.
@kentbull
kentbull merged commit 412d0c2 into release/v0.6.20 Aug 27, 2026
6 checks passed
@kentbull
kentbull deleted the p0/remoter-terminal-state-v0.6.20 branch August 27, 2026 10:28
@kentbull

Copy link
Copy Markdown
Collaborator Author

Upstream prerequisite: the Remoter directional half-close foundation in ioflo#163, or an accepted replacement, plus the shared terminal-cause and late-enqueue contract introduced by #9.

Without those already on upstream main, this PR’s Remoter.txCutoff, retained error, and chained TransmitClosedError behavior has no upstream substrate.

@kentbull

kentbull commented Aug 28, 2026 •

Copy link
Copy Markdown
Collaborator Author

Implements the downstream Remoter portion of ioflo#172 by extending the terminal-cause, unsent-output, and late-enqueue contract from #9. The upstream issue remains broader, including complete Client connection-wide failure classification.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant