Skip to content

Fix cancellation of SSH jump handshakes - #136

Merged
andre487 merged 1 commit into
mainfrom
fix-ssh-jump-handshake-cancellation
Oct 27, 2026
Merged

andre487 merged 1 commit into
mainfrom
fix-ssh-jump-handshake-cancellation

Conversation

@andre487

@andre487 andre487 commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

When an SSH jump server stops processing traffic during the destination handshake, cancelling the connection or stopping the VPN can wait forever for an SSH channel close acknowledgement. The blocked handshake holds the dialer mutex and prevents native teardown and subsequent VPN starts.

Make the destination connection close its dedicated jump TCP transport, which unblocks the handshake without cooperation from the server. Add a local encrypted SSH regression test that waits until the destination handshake starts, stalls the jump peer, and verifies both context cancellation and dialer shutdown. Both scenarios failed before the fix.

Validation: bundle exec fastlane android native_tests (race detector); targeted SSH cancellation and rotation tests; git diff --check.

APK artifacts

Built from commit d315748e by CI run #450.
Artifacts expire after 14 days. Neither APK uses the MegaProxy release key.

@andre487
andre487 merged commit 97d0bf0 into main Oct 27, 2026
24 of 26 checks passed
@andre487
andre487 deleted the fix-ssh-jump-handshake-cancellation branch October 27, 2026 17:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant