fix(openvpn): survive server-initiated soft reset and rekey - #3109
Open
ayanami-desu wants to merge 2 commits into
Open
fix(openvpn): survive server-initiated soft reset and rekey#3109ayanami-desu wants to merge 2 commits into
ayanami-desu wants to merge 2 commits into
Conversation
Collaborator
|
The PR does not fully implement the fault-tolerance semantics of the original |
Collaborator
|
However, you need to fix the Go 1.20 compatibility issue; do not use |
Collaborator
|
Also need fix |
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.
Fixes #3085.
Supersedes the closed review iteration in #3107. This version is rebased onto the current
Alphabranch and incorporates the complete follow-up audit.Summary
P_CONTROL_SOFT_RESET_V1as a fresh TLS/key epoch and follow OpenVPN's0 → 1 → … → 7 → 1key-ID sequence.AUTH_PENDING, token refresh, push continuation, and shortened KM2 records across arbitrary TLS read boundaries.tran-windowfrom explicit zero; reject negative and overflowing values.Compatibility and safety details
AUTH_FAILED,RESTART,HALT, andEXITtake precedence over coalesced push data without leaking adjacent auth tokens.auth-token-user, invalidpush-continuation, oversized control buffers, stale sessions, and invalid ACK arrays are rejected.Tests
go test ./transport/openvpn ./adapter/outbound -count=1go test -race ./transport/openvpn -count=1go vet ./...SKIP_INTEROP_TEST=1 SKIP_CONCURRENT_TEST=1 go test ./... -count=1SKIP_INTEROP_TEST=1 SKIP_CONCURRENT_TEST=1 go test ./... -tags with_gvisor -count=1The branch is a single commit directly on the current upstream
Alphahead.