Skip to content

Conversation

@kinyoklion
Copy link
Member

@kinyoklion kinyoklion commented Oct 13, 2025

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

Adds an optional CURL-based HTTP/SSE networking backend with proxy support, a new networking lib, and CI/release/testing to build and verify both CURL and Boost.Beast variants.

  • Core networking:
    • Introduce libs/networking with CurlMultiManager and CURL integration (launchdarkly::networking).
    • Add network::Requester abstraction to switch between CURL and Boost.Beast.
  • SDK changes:
    • Implement CURL SSE client and HTTP requester; wire into client/server SDKs and internal events.
    • Add proxy config (HttpProperties.Proxy) and C bindings (*_HttpProperties_Proxy); pass to SSE builder.
    • Default/properties updated to carry ProxyOptions.
  • Build/CMake:
    • New option LD_CURL_NETWORKING to enable CURL networking; find_package(CURL QUIET) in config.
    • Add code coverage option LD_BUILD_COVERAGE and coverage script.
  • CI/Release:
    • New install-curl action; extend shared CI to toggle CURL builds and simulate releases (Linux/macOS/Windows).
    • Update client/server/SSE workflows to run both Boost.Beast and CURL jobs; add cmake-integration CURL jobs.
    • Release action now builds/zips additional *-curl artifacts (with -experimental suffix for server).
  • Examples/Docs/Tests:
    • Add proxy validation Docker-compose example.
    • Update README and cmake-tests docs for CURL setup.
    • Add unit tests for CURL requester and SSE CurlClient; extend contract tests to advertise proxy capability.
    • Release manifest includes libs/networking.

Written by Cursor Bugbot for commit f916106. This will update automatically on new commits. Configure here.

@kinyoklion
Copy link
Member Author

bugbot review

cursor[bot]

This comment was marked as outdated.

@kinyoklion kinyoklion force-pushed the rlamb/basic-network-request-abstraction branch from 64ff5eb to 417b1de Compare October 18, 2025 20:57
@kinyoklion
Copy link
Member Author

bugbot review

cursor[bot]

This comment was marked as outdated.

@kinyoklion
Copy link
Member Author

bugbot review

cursor[bot]

This comment was marked as outdated.

@kinyoklion kinyoklion force-pushed the rlamb/basic-network-request-abstraction branch from 0564360 to 3782ee9 Compare October 18, 2025 21:31
@kinyoklion kinyoklion marked this pull request as ready for review October 19, 2025 01:09
@kinyoklion kinyoklion requested a review from a team as a code owner October 19, 2025 01:09
cursor[bot]

This comment was marked as outdated.

@kinyoklion kinyoklion merged commit c9a6b17 into main Oct 29, 2025
41 checks passed
@kinyoklion kinyoklion deleted the rlamb/basic-network-request-abstraction branch October 29, 2025 22:21
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.

3 participants