aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore/cache
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-05-02 17:40:30 +0200
committerGitHub Enterprise <[email protected]>2024-05-02 17:40:30 +0200
commit1155ed2048a24f4dfcfa65d63243b77973f820d6 (patch)
tree49961435a57e3a516506bb6965d021c4864e3ecb /src/zenstore/cache
parentuse write and move in place for safer writing of files (#70) (diff)
downloadzen-1155ed2048a24f4dfcfa65d63243b77973f820d6.tar.xz
zen-1155ed2048a24f4dfcfa65d63243b77973f820d6.zip
fix zero size attachment replies (#69)
- Bugfix: Don't try to respond with zero size partial cache value when partial size is zero - Improvement: Added more validation of data read from cache / cas
Diffstat (limited to 'src/zenstore/cache')
-rw-r--r--src/zenstore/cache/cacherpc.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/zenstore/cache/cacherpc.cpp b/src/zenstore/cache/cacherpc.cpp
index 6871dfd56..5bd73e902 100644
--- a/src/zenstore/cache/cacherpc.cpp
+++ b/src/zenstore/cache/cacherpc.cpp
@@ -1632,6 +1632,10 @@ CacheRpcHandler::WriteGetCacheChunksResponse([[maybe_unused]] const CacheRequest
if (Request.Value && !EnumHasAllFlags(Request.DownstreamPolicy, CachePolicy::SkipData))
{
auto IsPartialRangeRequest = [](const ChunkRequest& Request) {
+ if (Request.RequestedOffset == 0 && Request.RequestedSize == 0)
+ {
+ return false;
+ }
if ((Request.RequestedOffset != 0) || (Request.RequestedSize != ~uint64_t(0)))
{
return true;
@@ -1657,7 +1661,8 @@ CacheRpcHandler::WriteGetCacheChunksResponse([[maybe_unused]] const CacheRequest
FragmentRawOffset = Request.RequestedOffset;
}
}
- Request.Value = Request.Value.GetRange(Request.RequestedOffset, Request.RequestedSize);
+ Request.Value =
+ Request.Value.GetRange(Request.RequestedOffset, Request.RequestedSize == 0 ? 1u : Request.RequestedSize);
uint64_t FragmentLength = Request.Value.DecodeRawSize();
IoHashStream FragmentHashStream;