aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache/structuredcache.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-05-24 16:32:43 +0200
committerStefan Boberg <[email protected]>2021-05-24 16:32:43 +0200
commit508671de7550d103073c87413c35acfc21734406 (patch)
tree706b3430482ab66316cc2395943abb72ac272cc1 /zenserver/cache/structuredcache.cpp
parentImplemented support for UE5-style CompressedBuffers (diff)
downloadzen-508671de7550d103073c87413c35acfc21734406.tar.xz
zen-508671de7550d103073c87413c35acfc21734406.zip
Fixed attachment index code so it doesn't generate zero-sized compactbinary arrays (which are disallowed)
Diffstat (limited to 'zenserver/cache/structuredcache.cpp')
-rw-r--r--zenserver/cache/structuredcache.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index 728cfaded..ecc2367ad 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -137,17 +137,21 @@ HttpStructuredCacheService::HandleCacheRecordRequest(zen::HttpServerRequest& Req
// Extract data for index
zen::CbObjectView Cbo(Body.Data());
- int ReferenceCount = 0;
+ std::vector<IoHash> References;
+ Cbo.IterateAttachments([&](CbFieldView AttachmentView) { References.push_back(AttachmentView.AsHash()); });
- zen::CbObjectWriter Idx;
- Idx.BeginArray();
+ if (!References.empty())
+ {
+ zen::CbObjectWriter Idx;
+ Idx.BeginArray();
- Cbo.IterateAttachments([&](CbFieldView AttachmentView) {
- Idx.AddHash(AttachmentView.AsHash());
- ++ReferenceCount;
- });
+ for (const IoHash& Hash : References)
+ {
+ Idx.AddHash(Hash);
+ }
- Idx.EndArray();
+ Idx.EndArray();
+ }
// TODO: store references in index
}
@@ -214,7 +218,7 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
case kHead:
case kGet:
{
- // TODO: need to map from uncompressed content address into the storage
+ // TODO: need to map from uncompressed content address into the storage
// (compressed) content address
zen::IoBuffer Payload = m_CasStore.FindChunk(Ref.PayloadId);