aboutsummaryrefslogtreecommitdiff
path: root/src/zenhttp/clients/httpclientcurl.h
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-03-16 10:56:11 +0100
committerGitHub Enterprise <[email protected]>2026-03-16 10:56:11 +0100
commit8c3ba4e8c522d119df3cb48966e36c0eaa80aeb9 (patch)
treecf51b07e097904044b4bf65bc3fe0ad14134074f /src/zenhttp/clients/httpclientcurl.h
parentMerge branch 'sb/no-network' of https://github.ol.epicgames.net/ue-foundation... (diff)
parentEnable cross compilation of Windows targets on Linux (#839) (diff)
downloadzen-sb/no-network.tar.xz
zen-sb/no-network.zip
Merge branch 'main' into sb/no-networksb/no-network
Diffstat (limited to 'src/zenhttp/clients/httpclientcurl.h')
-rw-r--r--src/zenhttp/clients/httpclientcurl.h25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/zenhttp/clients/httpclientcurl.h b/src/zenhttp/clients/httpclientcurl.h
index 871877863..b7fa52e6c 100644
--- a/src/zenhttp/clients/httpclientcurl.h
+++ b/src/zenhttp/clients/httpclientcurl.h
@@ -75,40 +75,39 @@ private:
struct Session
{
Session(CurlHttpClient* InOuter, CURL* InHandle) : Outer(InOuter), Handle(InHandle) {}
- ~Session() { Outer->ReleaseSession(Handle); }
+ ~Session();
CURL* Get() const { return Handle; }
+ // Takes ownership of the curl_slist and sets it on the handle.
+ // The list is freed automatically when the Session is destroyed.
+ void SetHeaders(curl_slist* Headers);
+
+ // Low-level perform: executes the request and collects status/timing.
CurlResult Perform();
+ // Sets up standard write+header callbacks, performs the request, and
+ // moves the collected body and headers into the returned CurlResult.
+ CurlResult PerformWithResponseCallbacks();
+
LoggerRef Log() { return Outer->Log(); }
private:
CurlHttpClient* Outer;
CURL* Handle;
+ curl_slist* HeaderList = nullptr;
Session(Session&&) = delete;
Session& operator=(Session&&) = delete;
};
- Session AllocSession(std::string_view BaseUrl,
- std::string_view Url,
- const HttpClientSettings& ConnectionSettings,
- const KeyValueMap& AdditionalHeader,
- const KeyValueMap& Parameters,
- std::string_view SessionId,
- std::optional<HttpClientAccessToken> AccessToken);
+ Session AllocSession(std::string_view ResourcePath, const KeyValueMap& Parameters);
RwLock m_SessionLock;
std::vector<CURL*> m_Sessions;
void ReleaseSession(CURL* Handle);
- struct RetryResult
- {
- CurlResult Result;
- };
-
CurlResult DoWithRetry(std::string_view SessionId,
std::function<CurlResult()>&& Func,
std::unique_ptr<detail::TempPayloadFile>& PayloadFile);