Allow the proxy public listener protocol to differ from the advertised one (server config)#6597
Draft
ndr-ds wants to merge 2 commits into
Draft
Allow the proxy public listener protocol to differ from the advertised one (server config)#6597ndr-ds wants to merge 2 commits into
ndr-ds wants to merge 2 commits into
Conversation
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.
Motivation
linera-proxybinds its public listener fromvalidator.network.protocol— the same field the committee advertises to clients. When an ingress in front of the proxy (e.g. an Envoy Gateway with a real certificate) terminates TLS, the two roles diverge: clients must keep dialingtls, while the proxy itself must listen incleartext(its only TLS identity is the self-signedCERT_PEMbaked into the binary, which webpki-validating clients reject anyway). Today the only way to express that is post-editingserver_N.jsonafterlinera-server generate.Proposal
A config field, not a CLI flag (reviewer feedback):
ValidatorServerConfiggains an optionalpublic_listen_protocol(serde-defaulted and skipped whenNone, so every existingserver.jsonparses AND serializes unchanged).linera-server generateaccepts the same optional field invalidator_N.tomland writes it through, so deployments express the topology at mint time — no post-editing. The proxy binds its public listener withpublic_listen_protocol.unwrap_or(advertised); setting it on a non-gRPC network fails explicitly. Absent field = behavior identical to today.Test Plan
cargo clippy -p linera-client -p linera-service --all-targets -- -D warningsclean;cargo +nightly fmt.test_validator_options(extended TOML round-trip) passes.Release Plan
These changes follow the usual release cycle.
Links
server_N.json; this field replaces that jq)