aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver
diff options
context:
space:
mode:
authorZousar Shaker <[email protected]>2025-09-25 10:52:11 -0600
committerGitHub Enterprise <[email protected]>2025-09-25 10:52:11 -0600
commitae107e8e7fe1cdf573a93c8d8908592ea671ee51 (patch)
tree2accd8ecaa662f3527b7ba6567c07aed8cbe6693 /src/zenserver
parent5.7.2-pre2 (diff)
parentImprovement to Incomplete Result Iteration (diff)
downloadzen-ae107e8e7fe1cdf573a93c8d8908592ea671ee51.tar.xz
zen-ae107e8e7fe1cdf573a93c8d8908592ea671ee51.zip
Merge pull request #509 from ue-foundation/zs/put-overwrite-policy-response
Zs/put overwrite policy response
Diffstat (limited to 'src/zenserver')
-rw-r--r--src/zenserver/cache/httpstructuredcache.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/zenserver/cache/httpstructuredcache.cpp b/src/zenserver/cache/httpstructuredcache.cpp
index c83065506..bc3f4ee20 100644
--- a/src/zenserver/cache/httpstructuredcache.cpp
+++ b/src/zenserver/cache/httpstructuredcache.cpp
@@ -821,7 +821,8 @@ HttpStructuredCacheService::HandleGetCacheRecord(HttpServerRequest& Request, con
const bool SkipData = EnumHasAllFlags(PolicyFromUrl, CachePolicy::SkipData);
const bool PartialRecord = EnumHasAllFlags(PolicyFromUrl, CachePolicy::PartialRecord);
- bool Success = false;
+ bool Success = false;
+ uint32_t MissingCount = 0;
ZenCacheValue ClientResultValue;
if (!EnumHasAnyFlags(PolicyFromUrl, CachePolicy::Query))
{
@@ -844,7 +845,6 @@ HttpStructuredCacheService::HandleGetCacheRecord(HttpServerRequest& Request, con
if (ContentType == ZenContentType::kCbObject)
{
CbPackage Package;
- uint32_t MissingCount = 0;
CbValidateError ValidateError = CbValidateError::None;
if (CbObject PackageObject = ValidateAndReadCompactBinaryObject(std::move(ClientResultValue.Value), ValidateError);
ValidateError == CbValidateError::None)
@@ -936,7 +936,9 @@ HttpStructuredCacheService::HandleGetCacheRecord(HttpServerRequest& Request, con
else
{
// kCbPackage handled SkipData when constructing the ClientResultValue, kcbObject ignores SkipData
- return Request.WriteResponse(HttpResponseCode::OK, ClientResultValue.Value.GetContentType(), ClientResultValue.Value);
+ return Request.WriteResponse((MissingCount == 0) ? HttpResponseCode::OK : HttpResponseCode::PartialContent,
+ ClientResultValue.Value.GetContentType(),
+ ClientResultValue.Value);
}
}
else if (!HasUpstream || !EnumHasAllFlags(PolicyFromUrl, CachePolicy::QueryRemote))
@@ -1221,8 +1223,11 @@ HttpStructuredCacheService::HandlePutCacheRecord(HttpServerRequest& Request, con
break;
}
- return PutResult.Message.empty() ? Request.WriteResponse(ResponseCode)
- : Request.WriteResponse(ResponseCode, zen::HttpContentType::kText, PutResult.Message);
+ if (PutResult.Details)
+ {
+ Request.WriteResponse(ResponseCode, PutResult.Details);
+ }
+ return Request.WriteResponse(ResponseCode);
};
const HttpContentType ContentType = Request.RequestContentType();