From fea4fa0095668e392aa3333450e93afc1784762b Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Tue, 14 Mar 2023 14:36:18 +0100 Subject: send payloads as duplicated handles (#240) * send payloads as duplicated handles if requestor provides process id and allows local file references. * linux/macos fixes * tests * fix access rights when duplicating handle * fix closing of duplicated handles on error * cleanup * changelog --- zenutil/cache/cacherequests.cpp | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) (limited to 'zenutil/cache') diff --git a/zenutil/cache/cacherequests.cpp b/zenutil/cache/cacherequests.cpp index 5cbb2e04b..4c865ec22 100644 --- a/zenutil/cache/cacherequests.cpp +++ b/zenutil/cache/cacherequests.cpp @@ -332,7 +332,9 @@ namespace cacherequests { bool GetCacheRecordsRequest::Parse(const CbObjectView& RpcRequest) { ZEN_ASSERT(RpcRequest["Method"].AsString() == "GetCacheRecords"); - AcceptMagic = RpcRequest["AcceptType"].AsUInt32(0); + AcceptMagic = RpcRequest["AcceptType"].AsUInt32(0); + AcceptOptions = RpcRequest["AcceptFlags"].AsUInt16(0); + ProcessPid = RpcRequest["Pid"].AsInt32(0); CbObjectView Params = RpcRequest["Params"].AsObjectView(); std::optional RequestNamespace = GetRequestNamespace(Params); @@ -373,6 +375,14 @@ namespace cacherequests { { Writer << "Accept" << AcceptMagic; } + if (AcceptOptions != 0) + { + Writer << "AcceptFlags" << AcceptOptions; + } + if (ProcessPid != 0) + { + Writer << "Pid" << ProcessPid; + } Writer.BeginObject("Params"); { @@ -656,7 +666,9 @@ namespace cacherequests { bool GetCacheValuesRequest::Parse(const CbObjectView& BatchObject) { ZEN_ASSERT(BatchObject["Method"].AsString() == "GetCacheValues"); - AcceptMagic = BatchObject["AcceptType"].AsUInt32(0); + AcceptMagic = BatchObject["AcceptType"].AsUInt32(0); + AcceptOptions = BatchObject["AcceptFlags"].AsUInt16(0); + ProcessPid = BatchObject["Pid"].AsInt32(0); CbObjectView Params = BatchObject["Params"].AsObjectView(); std::optional RequestNamespace = cacherequests::GetRequestNamespace(Params); @@ -696,6 +708,14 @@ namespace cacherequests { { Writer << "Accept" << AcceptMagic; } + if (AcceptOptions != 0) + { + Writer << "AcceptFlags" << AcceptOptions; + } + if (ProcessPid != 0) + { + Writer << "Pid" << ProcessPid; + } Writer.BeginObject("Params"); { @@ -817,7 +837,9 @@ namespace cacherequests { bool GetCacheChunksRequest::Parse(const CbObjectView& BatchObject) { ZEN_ASSERT(BatchObject["Method"].AsString() == "GetCacheChunks"); - AcceptMagic = BatchObject["AcceptType"].AsUInt32(0); + AcceptMagic = BatchObject["AcceptType"].AsUInt32(0); + AcceptOptions = BatchObject["AcceptFlags"].AsUInt16(0); + ProcessPid = BatchObject["Pid"].AsInt32(0); CbObjectView Params = BatchObject["Params"].AsObjectView(); std::optional RequestNamespace = cacherequests::GetRequestNamespace(Params); @@ -862,6 +884,14 @@ namespace cacherequests { { Writer << "Accept" << AcceptMagic; } + if (AcceptOptions != 0) + { + Writer << "AcceptFlags" << AcceptOptions; + } + if (ProcessPid != 0) + { + Writer << "Pid" << ProcessPid; + } Writer.BeginObject("Params"); { -- cgit v1.2.3