diff options
| author | Dan Engelbrecht <[email protected]> | 2023-08-09 13:27:52 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-08-09 13:27:52 +0200 |
| commit | 6132ee22dba626e221e615addb780b5f2a5a7bf9 (patch) | |
| tree | 410857cb939611cd8353eb347ed266734e907a90 /src/zenserver | |
| parent | handle exception in asio header parsing (#348) (diff) | |
| download | zen-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')
| -rw-r--r-- | src/zenserver/projectstore/jupiterremoteprojectstore.cpp | 3 | ||||
| -rw-r--r-- | src/zenserver/projectstore/jupiterremoteprojectstore.h | 1 | ||||
| -rw-r--r-- | src/zenserver/projectstore/projectstore.cpp | 4 | ||||
| -rw-r--r-- | src/zenserver/upstream/jupiter.cpp | 9 | ||||
| -rw-r--r-- | src/zenserver/upstream/jupiter.h | 2 |
5 files changed, 15 insertions, 4 deletions
diff --git a/src/zenserver/projectstore/jupiterremoteprojectstore.cpp b/src/zenserver/projectstore/jupiterremoteprojectstore.cpp index 08c8aa0e6..b1a68c6d2 100644 --- a/src/zenserver/projectstore/jupiterremoteprojectstore.cpp +++ b/src/zenserver/projectstore/jupiterremoteprojectstore.cpp @@ -252,7 +252,8 @@ CreateJupiterRemoteStore(const JupiterRemoteStoreOptions& Options) CloudCacheClientOptions ClientOptions{.Name = "Remote store"sv, .ServiceUrl = Url, .ConnectTimeout = std::chrono::milliseconds(2000), - .Timeout = std::chrono::milliseconds(60000)}; + .Timeout = std::chrono::milliseconds(60000), + .AssumeHttp2 = Options.AssumeHttp2}; // 1) Access token as parameter in request // 2) Environment variable (different win vs linux/mac) // 3) openid-provider (assumes oidctoken.exe -Zen true has been run with matching Options.OpenIdProvider diff --git a/src/zenserver/projectstore/jupiterremoteprojectstore.h b/src/zenserver/projectstore/jupiterremoteprojectstore.h index 697379acb..f2375a730 100644 --- a/src/zenserver/projectstore/jupiterremoteprojectstore.h +++ b/src/zenserver/projectstore/jupiterremoteprojectstore.h @@ -19,6 +19,7 @@ struct JupiterRemoteStoreOptions : RemoteStoreOptions AuthMgr& AuthManager; bool ForceDisableBlocks = false; bool ForceDisableTempBlocks = false; + bool AssumeHttp2 = false; }; std::unique_ptr<RemoteProjectStore> CreateJupiterRemoteStore(const JupiterRemoteStoreOptions& Options); diff --git a/src/zenserver/projectstore/projectstore.cpp b/src/zenserver/projectstore/projectstore.cpp index ae6f0d1d8..e5088e11d 100644 --- a/src/zenserver/projectstore/projectstore.cpp +++ b/src/zenserver/projectstore/projectstore.cpp @@ -148,6 +148,7 @@ namespace { } bool ForceDisableBlocks = Cloud["disableblocks"sv].AsBool(false); bool ForceDisableTempBlocks = Cloud["disabletempblocks"sv].AsBool(false); + bool AssumeHttp2 = Cloud["assumehttp2"sv].AsBool(false); JupiterRemoteStoreOptions Options = {RemoteStoreOptions{.MaxBlockSize = MaxBlockSize, .MaxChunkEmbedSize = MaxChunkEmbedSize}, Url, @@ -158,7 +159,8 @@ namespace { AccessToken, AuthManager, ForceDisableBlocks, - ForceDisableTempBlocks}; + ForceDisableTempBlocks, + AssumeHttp2}; RemoteStore = CreateJupiterRemoteStore(Options); } 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; |