Upstreaming SOCKS5 proxy support across CRT libraries
- Dominant language
- C++
- Stars
- 91
- Forks
- 87
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 3
Description
### Describe the feature
Hello,
As part of an internal project, we implemented SOCKS5 proxy support across several AWS CRT libraries:
- aws-crt-cpp
- aws-c-io
- aws-c-http
- aws-c-mqtt
- aws-c-auth
We’re planning to upstream these changes, but before submitting any PRs, we’d like to gather feedback and ensure that our implementation aligns well with the existing CRT architecture and design principles.
The implementation currently includes:
- Support for both unauthenticated and username/password SOCKS5 proxies
- Integration with TLS connections
- Both client-side and proxy-side DNS resolution
- Initial unit and integration tests at the socket and protocol layers (to be adapted and extended for upstream)
Could you please advise us on the preferred next steps for contributing these changes?
For example:
- Would you prefer a design summary or draft PR for initial review?
- How this feature should be properly tested? We are currently including some integration tests we run locally which will have to be adapted.
We appreciate your guidance and are happy to share additional design details or testing results as needed.
Thank you!
### Use Case
Our internal use cases require routing MQTT over websocket and HTTP connections through SOCKS5 proxies.
### Proposed Solution
Here you can find a preview of the changes we are planing to upstream:
- https://github.com/awslabs/aws-crt-cpp/pull/797
- https://github.com/awslabs/aws-c-io/pull/771
- https://github.com/awslabs/aws-c-http/pull/536
- https://github.com/awslabs/aws-c-mqtt/pull/410
- https://github.com/awslabs/aws-c-auth/pull/277
### Other Information
_No response_
### Acknowledgements
- [x] I may be able to implement this feature request
- [ ] This feature might incur a breaking change
Contributor guide
Research direction
Start by reviewing the draft pull requests for aws-crt-cpp, aws-c-io, aws-c-http, aws-c-mqtt, and aws-c-auth linked in the issue. Read the existing socket, protocol, TLS, and proxy-related tests there, then follow the maintainers' guidance on design and test adaptation. Done means an agreed upstream plan or accepted implementation across the affected CRT libraries.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100