aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/upstream
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-08-09 13:27:52 +0200
committerGitHub <[email protected]>2023-08-09 13:27:52 +0200
commit6132ee22dba626e221e615addb780b5f2a5a7bf9 (patch)
tree410857cb939611cd8353eb347ed266734e907a90 /src/zenserver/upstream
parenthandle exception in asio header parsing (#348) (diff)
downloadzen-6132ee22dba626e221e615addb780b5f2a5a7bf9.tar.xz
zen-6132ee22dba626e221e615addb780b5f2a5a7bf9.zip
Add `--assume-http2` option to cloud style import/export command to use a HTTP/2 endpoint without without HTTP/1.1 upgrade (#347)
Diffstat (limited to 'src/zenserver/upstream')
-rw-r--r--src/zenserver/upstream/jupiter.cpp9
-rw-r--r--src/zenserver/upstream/jupiter.h2
2 files changed, 9 insertions, 2 deletions
diff --git a/src/zenserver/upstream/jupiter.cpp b/src/zenserver/upstream/jupiter.cpp
index e7bb2cbcf..0f810ea2b 100644
--- a/src/zenserver/upstream/jupiter.cpp
+++ b/src/zenserver/upstream/jupiter.cpp
@@ -46,12 +46,16 @@ namespace detail {
cpr::Session& GetSession() { return m_Session; }
- void Reset(std::chrono::milliseconds ConnectTimeout, std::chrono::milliseconds Timeout)
+ void Reset(std::chrono::milliseconds ConnectTimeout, std::chrono::milliseconds Timeout, bool AssumeHttp2)
{
m_Session.SetBody({});
m_Session.SetHeader({});
m_Session.SetConnectTimeout(ConnectTimeout);
m_Session.SetTimeout(Timeout);
+ if (AssumeHttp2)
+ {
+ m_Session.SetHttpVersion(cpr::HttpVersion{cpr::HttpVersionCode::VERSION_2_0_PRIOR_KNOWLEDGE});
+ }
}
private:
@@ -912,6 +916,7 @@ CloudCacheClient::CloudCacheClient(const CloudCacheClientOptions& Options, std::
, m_ConnectTimeout(Options.ConnectTimeout)
, m_Timeout(Options.Timeout)
, m_TokenProvider(std::move(TokenProvider))
+, m_AssumeHttp2(Options.AssumeHttp2)
{
ZEN_ASSERT(m_TokenProvider.get() != nullptr);
}
@@ -958,7 +963,7 @@ CloudCacheClient::AllocSessionState()
State = new detail::CloudCacheSessionState(*this);
}
- State->Reset(m_ConnectTimeout, m_Timeout);
+ State->Reset(m_ConnectTimeout, m_Timeout, m_AssumeHttp2);
if (IsTokenValid == false)
{
diff --git a/src/zenserver/upstream/jupiter.h b/src/zenserver/upstream/jupiter.h
index dd50f75e1..3d965e846 100644
--- a/src/zenserver/upstream/jupiter.h
+++ b/src/zenserver/upstream/jupiter.h
@@ -175,6 +175,7 @@ struct CloudCacheClientOptions
std::string_view ComputeCluster;
std::chrono::milliseconds ConnectTimeout{5000};
std::chrono::milliseconds Timeout{};
+ bool AssumeHttp2 = false;
};
/**
@@ -203,6 +204,7 @@ private:
std::chrono::milliseconds m_ConnectTimeout{};
std::chrono::milliseconds m_Timeout{};
std::unique_ptr<CloudCacheTokenProvider> m_TokenProvider;
+ bool m_AssumeHttp2;
RwLock m_SessionStateLock;
std::list<detail::CloudCacheSessionState*> m_SessionStateCache;