diff options
| author | zousar <[email protected]> | 2025-03-26 16:57:48 -0600 |
|---|---|---|
| committer | zousar <[email protected]> | 2025-03-26 16:57:48 -0600 |
| commit | df9bbea4fb1dad9e8c853f14600259a4af12d334 (patch) | |
| tree | c2ecf0f521ecb9198d8dcfed8373c8ec640abd1e /src | |
| parent | Removed do_nothing from entry.js (diff) | |
| download | zen-df9bbea4fb1dad9e8c853f14600259a4af12d334.tar.xz zen-df9bbea4fb1dad9e8c853f14600259a4af12d334.zip | |
Descriptive type conversion messages
Handling decompression or validation errors with more descriptive messages
Diffstat (limited to 'src')
| -rw-r--r-- | src/zenserver/projectstore/httpprojectstore.cpp | 54 |
1 files changed, 39 insertions, 15 deletions
diff --git a/src/zenserver/projectstore/httpprojectstore.cpp b/src/zenserver/projectstore/httpprojectstore.cpp index f9a13220a..6313fd69e 100644 --- a/src/zenserver/projectstore/httpprojectstore.cpp +++ b/src/zenserver/projectstore/httpprojectstore.cpp @@ -896,27 +896,51 @@ HttpProjectService::HandleChunkByCidRequest(HttpRouterRequest& Req) CompressedBuffer Compressed = CompressedBuffer::FromCompressedNoValidate(std::move(Value)); IoBuffer DecompressedBuffer = Compressed.Decompress().AsIoBuffer(); - if (AcceptType == ZenContentType::kJSON || AcceptType == ZenContentType::kYAML || - AcceptType == ZenContentType::kCbObject) + if (DecompressedBuffer) { - CbValidateError CbErr = ValidateCompactBinary(DecompressedBuffer.GetView(), CbValidateMode::Default); - if (!!CbErr) + if (AcceptType == ZenContentType::kJSON || AcceptType == ZenContentType::kYAML || + AcceptType == ZenContentType::kCbObject) { - m_ProjectStats.BadRequestCount++; - ZEN_DEBUG("chunk - '{}/{}/{}' WRONGTYPE", ProjectId, OplogId, Cid); - return HttpReq.WriteResponse(HttpResponseCode::NotAcceptable, - HttpContentType::kText, - fmt::format("chunk - '{}' WRONGTYPE", Cid)); - } + CbValidateError CbErr = ValidateCompactBinary(DecompressedBuffer.GetView(), CbValidateMode::Default); + if (!!CbErr) + { + m_ProjectStats.BadRequestCount++; + ZEN_DEBUG( + "chunk - '{}/{}/{}' WRONGTYPE. Reason: `Requested {} format, but could not convert to object`", + ProjectId, + OplogId, + Cid, + ToString(AcceptType)); + return HttpReq.WriteResponse( + HttpResponseCode::NotAcceptable, + HttpContentType::kText, + fmt::format("Content format not supported, requested {} format, but could not convert to object", + ToString(AcceptType))); + } - m_ProjectStats.ChunkHitCount++; - CbObject ContainerObject = LoadCompactBinaryObject(DecompressedBuffer); - return HttpReq.WriteResponse(HttpResponseCode::OK, ContainerObject); + m_ProjectStats.ChunkHitCount++; + CbObject ContainerObject = LoadCompactBinaryObject(DecompressedBuffer); + return HttpReq.WriteResponse(HttpResponseCode::OK, ContainerObject); + } + else + { + Value = DecompressedBuffer; + Value.SetContentType(ZenContentType::kBinary); + } } else { - Value = DecompressedBuffer; - Value.SetContentType(ZenContentType::kBinary); + m_ProjectStats.BadRequestCount++; + ZEN_DEBUG("chunk - '{}/{}/{}' WRONGTYPE. Reason: `Requested {} format, but could not decompress stored data`", + ProjectId, + OplogId, + Cid, + ToString(AcceptType)); + return HttpReq.WriteResponse( + HttpResponseCode::NotAcceptable, + HttpContentType::kText, + fmt::format("Content format not supported, requested {} format, but could not decompress stored data", + ToString(AcceptType))); } } m_ProjectStats.ChunkHitCount++; |