diff options
| author | Stefan Boberg <[email protected]> | 2021-05-24 16:32:43 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-05-24 16:32:43 +0200 |
| commit | 508671de7550d103073c87413c35acfc21734406 (patch) | |
| tree | 706b3430482ab66316cc2395943abb72ac272cc1 /zenserver/cache/structuredcache.cpp | |
| parent | Implemented support for UE5-style CompressedBuffers (diff) | |
| download | zen-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.cpp | 22 |
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); |