azure-sdk-for-cpp
azure-sdk-for-cpp copied to clipboard
Update libCURL transport to use libCURL for HTTP communications.
Is your feature request related to a problem? Please describe. Currently, the C++ SDK's libCURL implementation is a hand written HTTP implementation - libCURL is used in "transport-only" mode, which means that all HTTP communication is performed by the Azure SDK. That means that new HTTP features cannot be added easily and it also means that there may be correctness issues in the HTTP implementation.
This was done because libCURL does not provide a mechanism to stream large payloads to and from the client, which is needed for Storage.
However most other Azure SDKs do not need this capability, and as such they can use the curl_easy_perform API and move all the HTTP processing into libCURL.
Describe the solution you'd like Add a config option to opt into the native C++ CURL implementation that would be used by Storage clients, and have the default CURL implementation use curl_easy_perform.
Describe alternatives you've considered We can always continue to use the current CURL implementation. But that will become increasingly challenging, especially if Azure SDKs start using HTTP/2 and HTTP/3 features.