aboutsummaryrefslogtreecommitdiff
path: root/src/zenhttp/clients/httpclientcommon.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2026-03-03 20:49:01 +0100
committerGitHub Enterprise <[email protected]>2026-03-03 20:49:01 +0100
commit463a0fde16b827c0ec44c9e88fe3c8c8098aa5ea (patch)
tree736553b3ded853fe945bdeea7585631617d171c3 /src/zenhttp/clients/httpclientcommon.cpp
parentfix objectstore uri path parsing (#801) (diff)
downloadzen-463a0fde16b827c0ec44c9e88fe3c8c8098aa5ea.tar.xz
zen-463a0fde16b827c0ec44c9e88fe3c8c8098aa5ea.zip
use multi range requests (#800)
- Improvement: `zen builds download` now uses multi-range requests for blocks to reduce download size - Improvement: `zen oplog-import` now uses partial block with multi-range requests for blocks to reduce download size - Improvement: Improved feedback in log/console during `zen oplog-import` - Improvement: `--allow-partial-block-requests` now defaults to `true` for `zen builds download` and `zen oplog-import` (was `mixed`) - Improvement: Improved range merging analysis when downloading partial blocks
Diffstat (limited to 'src/zenhttp/clients/httpclientcommon.cpp')
-rw-r--r--src/zenhttp/clients/httpclientcommon.cpp33
1 files changed, 15 insertions, 18 deletions
diff --git a/src/zenhttp/clients/httpclientcommon.cpp b/src/zenhttp/clients/httpclientcommon.cpp
index 248ae9d70..9ded23375 100644
--- a/src/zenhttp/clients/httpclientcommon.cpp
+++ b/src/zenhttp/clients/httpclientcommon.cpp
@@ -394,31 +394,28 @@ namespace detail {
{
// Yes, we do a substring of the non-lowercase value string as we want the exact boundary string
std::string_view BoundaryName = std::string_view(ContentTypeHeaderValue).substr(BoundaryPos + 9);
+ size_t BoundaryEnd = std::string::npos;
+ while (!BoundaryName.empty() && BoundaryName[0] == ' ')
+ {
+ BoundaryName = BoundaryName.substr(1);
+ }
if (!BoundaryName.empty())
{
- size_t BoundaryEnd = std::string::npos;
- while (BoundaryName[0] == ' ')
- {
- BoundaryName = BoundaryName.substr(1);
- }
- if (!BoundaryName.empty())
+ if (BoundaryName.size() > 2 && BoundaryName.front() == '"' && BoundaryName.back() == '"')
{
- if (BoundaryName.size() > 2 && BoundaryName.front() == '"' && BoundaryName.back() == '"')
+ BoundaryEnd = BoundaryName.find('"', 1);
+ if (BoundaryEnd != std::string::npos)
{
- BoundaryEnd = BoundaryName.find('"', 1);
- if (BoundaryEnd != std::string::npos)
- {
- BoundaryBeginMatcher.Init(fmt::format("\r\n--{}", BoundaryName.substr(1, BoundaryEnd - 1)));
- return true;
- }
- }
- else
- {
- BoundaryEnd = BoundaryName.find_first_of(" \r\n");
- BoundaryBeginMatcher.Init(fmt::format("\r\n--{}", BoundaryName.substr(0, BoundaryEnd)));
+ BoundaryBeginMatcher.Init(fmt::format("\r\n--{}", BoundaryName.substr(1, BoundaryEnd - 1)));
return true;
}
}
+ else
+ {
+ BoundaryEnd = BoundaryName.find_first_of(" \r\n");
+ BoundaryBeginMatcher.Init(fmt::format("\r\n--{}", BoundaryName.substr(0, BoundaryEnd)));
+ return true;
+ }
}
}
}