-
Notifications
You must be signed in to change notification settings - Fork 4
feat: Add support for CURL networking. #487
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…c-network-request-abstraction
bugbot review |
64ff5eb
to
417b1de
Compare
bugbot review |
bugbot review |
0564360
to
3782ee9
Compare
BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} | ||
Boost_DIR: ${{ steps.install-boost.outputs.Boost_DIR }} | ||
OPENSSL_ROOT_DIR: ${{ steps.install-openssl.outputs.OPENSSL_ROOT_DIR }} | ||
CURL_ROOT: ${{ steps.install-curl.outputs.CURL_ROOT }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it safe to reference a step that might be skipped?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be. It should just end up with no value.
Co-authored-by: Matthew M. Keeler <[email protected]>
Boost_DIR: ${{ steps.install-boost.outputs.Boost_DIR }} | ||
OPENSSL_ROOT_DIR: ${{ steps.install-openssl.outputs.OPENSSL_ROOT_DIR }} | ||
CURL_ROOT: ${{ steps.install-curl.outputs.CURL_ROOT }} | ||
CMAKE_PREFIX_PATH: ${{ steps.install-curl.outputs.CURL_ROOT }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Conditional CURL Installation Causes Environment Variable Issues
The CURL_ROOT
and CMAKE_PREFIX_PATH
environment variables are unconditionally set using outputs from the Install CURL
step. Since this step is conditional on inputs.use_curl == 'true'
, these variables become empty when CURL is not used. This can cause build failures or unexpected behavior in subsequent build steps.
BEGIN_COMMIT_OVERRIDE
feat: Add support for CURL networking.
feat: Add proxy support when using CURL networking.
END_COMMIT_OVERRIDE
This PR adds an alternate networking implementation which uses CURL instead of boost beast. Using CURL enables support for all advanced networking features including support for http, https, socks4, and socks 5 proxies.
Proxy configuration can be done using standard environment variables, or using the builder for the SDK.
CURL is used via the CURL multi interface combined with boost::asio to provide non-blocking IO. https://curl.se/libcurl/c/libcurl-multi.html
This allows for the CURL requests to be driven similarly to the boost.beast networking which is additionally supported.
CURL support is conditional based on the LD_CURL_NETWORKING CMake option. When it is enabled all HTTP/HTTPS request in the SDK use CURL. This support does not affect the redis persistence implementation.
The CI and release process has been updated to build and test the CURL and boost.Beast versions of all of the libraries. These changes constitute a non-trivial portion of the PR.
Note
Introduce optional CURL-based networking (LD_CURL_NETWORKING) with proxy support, new networking lib, SSE/cHTTP integrations, tests, docs, and CI/release pipelines building both CURL and Boost.Beast variants.
LD_CURL_NETWORKING
option and newlibs/networking
withCurlMultiManager
and CURL requester.network::Requester
abstraction; wire into client polling, event delivery, and SSE.HttpProperties
(ProxyOptions
) and C/C++ builders (client/server), incl. SSE builder.LD_BUILD_COVERAGE
.launchdarklyConfig.cmake
to find CURL when needed.--with-curl
; produce separate*-curl
build dirs/artifacts.install-curl
composite action; CI inputsuse_curl
.libs/networking
to release-please.Written by Cursor Bugbot for commit 75c79b8. This will update automatically on new commits. Configure here.