Repository navigation
Fix IPv6 proxy addresses, add AAAA bootstrap fallback and verify IPv6 traffic - #147
Merged
Merged
Conversation
andre487
marked this pull request as ready for review
November 10, 2026 15:47
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.
IPv6 literals were rejected by Android validation, JSON import and native configuration parsing before connections were attempted. Valid bare/bracketed addresses now work for proxy and jump hosts; native bootstrap normalizes brackets and URL export emits IPv6 authorities correctly. Bootstrap prefers A across resolvers, then tries AAAA only when no A succeeds and at least one valid NODATA response exists. DNS/HTTP errors alone do not trigger fallback.
Coverage includes:
The disposable OpenSSH fixture disables timed source penalties to keep negative authentication cases independent. Device fixtures block direct origin traffic for both address families and wait for the calling UID's VPN default network before sending traffic.
Validation: CI run 479 passed: 360 native tests, 81 real-server integration tests, Android JVM/lint/build checks and both API 26/35 suites. Python tests/style passed on the unchanged ancestor. Only report publication was rerun after GitHub Check API 404 responses; failed tests were not retried.
Limits: GOST 3.3.0 still rejects IPv6 literal CONNECT-UDP, which tests require to fail without direct fallback. The production client has no GOST-specific IPv6 ban and succeeds with the controlled compatible relay. Bootstrap DoH endpoints still require IPv4 reachability; physical IPv6-only uplinks and the reporter's Pixel/GrapheneOS device were not tested.
Fixes #146.