diff options
| -rw-r--r-- | CHANGELOG.md | 2 | ||||
| -rw-r--r-- | src/zenhttp/httpclient.cpp | 5 | ||||
| -rw-r--r-- | src/zenremotestore/jupiter/jupitersession.cpp | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index a181bac0f..7b072923e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,8 @@ - Bugfix: Minor test stability fixes (flaky hash collisions, per-thread RNG seeds) - Bugfix: Handle long paths in the project store - Bugfix: Authentication callbacks are not thread safe, ensured call sites does single threaded calls +- Bugfix: Retry OIDC token refresh once on failure before propagating the error +- Bugfix: Handle HTTP 501 (Not Implemented) from Jupiter as a signal to fall back from multi-range to single-range requests ## 5.7.23 - Bugfix: Crash at startup if a log message was emitted before logging is properly initialized diff --git a/src/zenhttp/httpclient.cpp b/src/zenhttp/httpclient.cpp index 3e81d4a8a..13c86e9ae 100644 --- a/src/zenhttp/httpclient.cpp +++ b/src/zenhttp/httpclient.cpp @@ -128,6 +128,11 @@ HttpClientBase::GetAccessToken() return m_CachedAccessToken.GetValue(); } HttpClientAccessToken NewAccessToken = m_ConnectionSettings.AccessTokenProvider.value()(); + if (!NewAccessToken.IsValid()) + { + ZEN_WARN("HttpClient failed to refresh access token, retrying once"); + NewAccessToken = m_ConnectionSettings.AccessTokenProvider.value()(); + } if (NewAccessToken.IsValid()) { m_CachedAccessToken = NewAccessToken; diff --git a/src/zenremotestore/jupiter/jupitersession.cpp b/src/zenremotestore/jupiter/jupitersession.cpp index b5531fa60..a9788cb4e 100644 --- a/src/zenremotestore/jupiter/jupitersession.cpp +++ b/src/zenremotestore/jupiter/jupitersession.cpp @@ -882,7 +882,8 @@ JupiterSession::GetBuildBlob(std::string_view Namespace, m_AllowRedirect ? "true"sv : "false"sv); HttpClient::Response Response = m_HttpClient.Download(Url, TempFolderPath, Headers); - if (Response.StatusCode == HttpResponseCode::RangeNotSatisfiable && Ranges.size() > 1) + if ((Response.StatusCode == HttpResponseCode::RangeNotSatisfiable || Response.StatusCode == HttpResponseCode::NotImplemented) && + Ranges.size() > 1) { // Requests to Jupiter that is not served via nginx (content not stored locally in the file system) can not serve multi-range // requests (asp.net limitation) This rejection is not implemented as of 2026-03-02, it is in the backlog (@joakim.lindqvist) |