Repository navigation
Conversation
The egress only sees the donor, so it can't say which client or track a session served. Send the outbound tag (which names the track and route) and the platform on every QUIC connection via the hello added in getlantern/unbounded#454. Pins getlantern/broflake to the getlantern/unbounded#454 branch commit; re-pin to main once that merges. Part of getlantern/engineering#3702. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
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: true
Comment |
|
This seems like overkill and also seems brittle. The similar clientinfo approach with our proxies has been a continual source of pain, but it's also a little unclear to me what the goal is here exactly tbh. |
@myleshorton if I read getlantern/engineering#3702 right, it came from not being able to tell whether a particular device actually reached the egress. Fleet-wide connectivity is now visible (getlantern/unbounded#460 fixed the URL search, verified in prod), but per device it isn't: the egress only sees the donor, a random CSID and an optional country. The consumer hello is meant to close that gap. It goes once per QUIC connection on a separate uni stream, so it never touches proxied traffic, and older egresses just ignore it. For now it only sends the track tag and platform. A device ID would be added later, and only once the client can verify it's talking to the real egress (getlantern/unbounded#455 plus a cert rollout). Without that, a malicious donor could impersonate the egress and collect device IDs. |
Hey @myleshorton thoughts? |
context
summary
SetConsumerHellowith:tag: the outbound tag, which for a lantern-cloud config is<type>-out-<track>-<routeID>, so the egress can say which track and route each session servedplatform:runtime.GOOSclient_versionis left empty: the app version reaches lantern-box viatracker/clientcontext, which this outbound can't get at today. Wiring it through is a follow-up, as is a device ID, pending the open questions on egress: log every session, with an optional consumer hello unbounded#454dependency
go.modpinsgetlantern/broflaketo the getlantern/unbounded#454 branch commit (d822634). That also brings in the unbounded commits since the previous pin, including #434/#435 (activation counting) and theirttlcachedependency. Re-pin to unboundedmainonce #454 merges, before merging this.testing
go build ./...,go vet ./protocol/unbounded/,go test ./...(20 packages) pass🤖 Generated with Claude Code