Conversation
… host
A URL plugin holding an address for a port a service renumbered has no way
to know where the port went. Absence alone cannot say it: a host being
rebuilt one bind at a time — a restore, a rebind after retire() — passes
through the same state, and nothing a package can read separates the two
(getStatus carries health, not install state).
retire_binding now takes an optional successor and records the retired
port with it in a new Host.retired_bindings map, which binding the port
again clears. The SDK passes it through retirePort(port, { successor }).
StartOS acts on nothing there; Tor reads it to move a .onion attached to
the old port instead of parking it. The guide's retire section and the
3.0.0 changelog entry describe the option.
The TS bindings are regenerated by CI; this commit does not carry them.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Member
|
Closed: the consumer this was written for is going away. Under the tor-startos redesign (Start9Labs/tor-startos#38), Tor does not move an onion to a successor port. A disabled binding is left alone, because it is not a deleted one, and a service that stops using a port retires it, which is what clears the onions attached to it. With nothing reading |
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.
Summary
A URL plugin holding an address for a port a service renumbered has no way to know where the port went, and cannot infer it from the binding's absence: a host being rebuilt one
bindcall at a time — a restore, a rebind afterretire()— passes through the same state, and nothing a package can read separates the two (getStatuscarries health and desired state, not install state). The guide's own "Why this cannot be automatic" is the same argument from the OS's side. So the package says it.retire_bindingtakes an optionalsuccessorand records the retired port with it in a newHost.retired_bindingsmap ({ 8333: 58333 }, or{ 9090: null }when nothing replaces the port).add_bindingandadd_binding_rangeclear the entry when the port is bound again. StartOS itself acts on nothing there.MultiHost.retirePort(port, { successor })passes it through; the existing form is unchanged. TheretireBindingeffect doc, the guide's Retiring a Host or Binding section, the service-to-service note on a retired dependency, and the 3.0.0 changelog entry describe it..onionwhose port its service stopped declaring and lets the user move it; with this record it moves the address itself. The first packages to pass a successor are the fleet's 0.3.5 conversions that renumbered a port on the same host — Bitcoin Core'speer8333 → 58333, Nextcloud'smain8080 → 80, and seven more — in their SDK 3.0 bump.Unit test covers the clearing on rebind; SDK test covers the pass-through.
cargo fmt --checkand prettier clean. The TS bindings are not in this PR:Host.tsandRetireBindingParams.tsneedmake start-core-ts-bindings, which does not fit the machine this was written on, so theGenerated Artifactsjob will fail on drift and upload them; they land as a follow-up commit from that artifact. Not exercised on a box.Refs Start9Labs/tor-startos#36.
🤖 Generated with Claude Code