# HG changeset patch # User Alain Mazy # Date 1635166080 -7200 # Node ID f237a8095e8681359e4ca7492fc5b2d9de062caa # Parent ca604fa6714a6d07b907da08b3e1c45deafbe576 fix diff -r ca604fa6714a -r f237a8095e86 Plugin/Plugin.cpp --- a/Plugin/Plugin.cpp Mon Oct 25 13:01:27 2021 +0200 +++ b/Plugin/Plugin.cpp Mon Oct 25 14:48:00 2021 +0200 @@ -111,6 +111,20 @@ } } +static bool IsTransferSyntaxEnabled(const std::string& transferSyntax) +{ + if (!restrictTransferSyntaxes_) + { + return true; + } + + if (enabledTransferSyntaxes_.find(transferSyntax) != enabledTransferSyntaxes_.end()) + { + return true; + } + + return false; +} static OrthancPluginErrorCode DecodeImageCallback(OrthancPluginImage** target, const void* dicom, @@ -270,11 +284,24 @@ { try { - if (!IsTransferSyntaxEnabled(buffer, size)) + std::string sourceTransferSyntax; + ExtractTransferSyntax(sourceTransferSyntax, buffer, size); + + bool pluginShouldHandleTranscoding = false; + for (uint32_t i = 0; i < countSyntaxes; i++) { - return OrthancPluginErrorCode_Plugin; + if (IsTransferSyntaxEnabled(sourceTransferSyntax) || IsTransferSyntaxEnabled(allowedSyntaxes[i])) + { + pluginShouldHandleTranscoding = true; + } } + if (!pluginShouldHandleTranscoding) + { + return OrthancPluginErrorCode_Plugin; // not really an error but only way to tell Orthanc that the plugin did not handle transcoding + } + + std::unique_ptr locker; if (hasThrottling_)