Mercurial > hg > orthanc
diff OrthancServer/Sources/OrthancFindRequestHandler.cpp @ 5058:d4e5ca0c9307
Fix the "Never" option of the "StorageAccessOnFind" that was sill accessing files (bug introduced in 1.11.0)
author | Alain Mazy <am@osimis.io> |
---|---|
date | Wed, 03 Aug 2022 10:49:50 +0200 |
parents | 2cfa50d8eb60 |
children | 0ea402b4d901 |
line wrap: on
line diff
--- a/OrthancServer/Sources/OrthancFindRequestHandler.cpp Tue Aug 02 11:38:31 2022 +0200 +++ b/OrthancServer/Sources/OrthancFindRequestHandler.cpp Wed Aug 03 10:49:50 2022 +0200 @@ -49,7 +49,8 @@ const std::list<DicomTag>& sequencesToReturn, const std::string& defaultPrivateCreator, const std::map<uint16_t, std::string>& privateCreators, - const std::string& retrieveAet) + const std::string& retrieveAet, + bool allowStorageAccess) { ExpandedResource resource; std::set<DicomTag> requestedTags; @@ -58,7 +59,7 @@ requestedTags.erase(DICOM_TAG_QUERY_RETRIEVE_LEVEL); // this is not part of the answer // reuse ExpandResource to get missing tags and computed tags (ModalitiesInStudy ...). This code is therefore shared between C-Find, tools/find, list-resources and QIDO-RS - context.ExpandResource(resource, publicId, mainDicomTags, instanceId, dicomAsJson, level, requestedTags, ExpandResourceDbFlags_IncludeMainDicomTags); + context.ExpandResource(resource, publicId, mainDicomTags, instanceId, dicomAsJson, level, requestedTags, ExpandResourceDbFlags_IncludeMainDicomTags, allowStorageAccess); DicomMap result; @@ -246,6 +247,7 @@ std::string defaultPrivateCreator_; // the private creator to use if the group is not defined in the query itself const std::map<uint16_t, std::string>& privateCreators_; // the private creators defined in the query itself std::string retrieveAet_; + FindStorageAccessMode findStorageAccessMode_; public: LookupVisitor(DicomFindAnswers& answers, @@ -253,14 +255,16 @@ ResourceType level, const DicomMap& query, const std::list<DicomTag>& sequencesToReturn, - const std::map<uint16_t, std::string>& privateCreators) : + const std::map<uint16_t, std::string>& privateCreators, + FindStorageAccessMode findStorageAccessMode) : answers_(answers), context_(context), level_(level), query_(query), queryAsArray_(query), sequencesToReturn_(sequencesToReturn), - privateCreators_(privateCreators) + privateCreators_(privateCreators), + findStorageAccessMode_(findStorageAccessMode) { answers_.SetComplete(false); @@ -308,7 +312,7 @@ const Json::Value* dicomAsJson) ORTHANC_OVERRIDE { AddAnswer(answers_, context_, publicId, instanceId, mainDicomTags, dicomAsJson, level_, queryAsArray_, sequencesToReturn_, - defaultPrivateCreator_, privateCreators_, retrieveAet_); + defaultPrivateCreator_, privateCreators_, retrieveAet_, IsStorageAccessAllowedForAnswers(findStorageAccessMode_)); } }; @@ -478,7 +482,7 @@ size_t limit = (level == ResourceType_Instance) ? maxInstances_ : maxResults_; - LookupVisitor visitor(answers, context_, level, *filteredInput, sequencesToReturn, privateCreators); + LookupVisitor visitor(answers, context_, level, *filteredInput, sequencesToReturn, privateCreators, context_.GetFindStorageAccessMode()); context_.Apply(visitor, lookup, level, 0 /* "since" is not relevant to C-FIND */, limit); }