Repository navigation
Add shared SOCKS5 support to WebSocket and HTTP clients - #580
Merged
Merged
Conversation
Collaborator
|
That's a big PR so it will take a bit of time to review, hope you understand. |
Collaborator
|
@wuraxor I'm having an agent trying to implement this, following libcurl design. |
bsergean
marked this pull request as ready for review
November 10, 2026 16:30
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.
Add configurable SOCKS5 proxies to WebSocket and HTTP clients, including WS/WSS and HTTP/HTTPS. Proxy settings are opt-in through
ProxyOptionsandsetProxyOptions(); existing callers retain their current connection behavior.The TCP connection and SOCKS5 negotiation share one internal connector used by plain sockets, OpenSSL/LibreSSL, Mbed TLS, and SecureTransport. The existing socket hierarchy and TLS implementations remain in place, and TLS uses the original destination hostname for SNI and certificate verification. This replaces the original proposal's copied TLS implementations and incorporates current master, including recent close/cancellation fixes.
Network.framework TLS currently rejects proxy configuration with an explicit error. During validation, its native SOCKS API bypassed the proxy for loopback destinations even with direct fallback disabled, and stalled on fragmented replies. Native SOCKS integration is therefore excluded pending a separate implementation. Plain connections in a Network.framework build use the shared connector normally. SOCKS4 and HTTP CONNECT are outside this change.
Validation: