summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
index 3cd9d4a8..ed9a00a5 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp
@@ -62,15 +62,20 @@ template <typename TRequest,
std::nullopt) -> TIterator {
std::size_t content_size = 0;
for (auto it = begin; it != end; ++it) {
- auto to_merge = std::invoke(request_creator, *it);
- if (request->ByteSizeLong() + to_merge.ByteSizeLong() > message_limit) {
+ std::optional<TRequest> to_merge = std::invoke(request_creator, *it);
+ if (not to_merge.has_value()) {
+ return it;
+ }
+
+ if (request->ByteSizeLong() + to_merge->ByteSizeLong() >
+ message_limit) {
return it;
}
if (content_limit.has_value() and
content_size + GetContentSize(*it) > *content_limit) {
return it;
}
- request->MergeFrom(to_merge);
+ request->MergeFrom(*std::move(to_merge));
content_size += GetContentSize(*it);
}
return end;