[med-svn] [Git][med-team/orthanc-dicomweb][master] 4 commits: New upstream version 1.6+dfsg

Sebastien Jodogne gitlab at salsa.debian.org
Fri May 7 15:39:50 BST 2021



Sebastien Jodogne pushed to branch master at Debian Med / orthanc-dicomweb


Commits:
88183ebb by jodogne-guest at 2021-05-07T16:28:42+02:00
New upstream version 1.6+dfsg
- - - - -
21aaffa6 by jodogne-guest at 2021-05-07T16:28:43+02:00
Update upstream source from tag 'upstream/1.6+dfsg'

Update to upstream version '1.6+dfsg'
with Debian dir f3354aabe7cb6f6f593060286a75b3730e354e47
- - - - -
19d06a8d by jodogne-guest at 2021-05-07T16:30:50+02:00
preparing 1.6+dfsg-1

- - - - -
4bb12906 by jodogne-guest at 2021-05-07T16:39:09+02:00
Upload to experimental

- - - - -


14 changed files:

- .hg_archival.txt
- CMakeLists.txt
- NEWS
- Plugin/DicomWebServers.cpp
- Plugin/StowRs.cpp
- Plugin/StowRs.h
- Plugin/WadoRsRetrieveFrames.cpp
- Resources/Orthanc/CMake/Compiler.cmake
- Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
- Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp
- debian/changelog
- debian/patches/cmake
- debian/patches/series
- − debian/patches/static-framework


Changes:

=====================================
.hg_archival.txt
=====================================
@@ -1,6 +1,6 @@
 repo: d5f45924411123cfd02d035fd50b8e37536eadef
-node: 37795a3d49021da79ce0651451e19b3ee529e28e
-branch: OrthancDicomWeb-1.5
+node: 01bae1ba951d3c66e55aba6129bcba0ef825d081
+branch: OrthancDicomWeb-1.6
 latesttag: null
-latesttagdistance: 453
-changessincelatesttag: 482
+latesttagdistance: 462
+changessincelatesttag: 491


=====================================
CMakeLists.txt
=====================================
@@ -21,13 +21,13 @@ cmake_minimum_required(VERSION 2.8)
 
 project(OrthancDicomWeb)
 
-set(ORTHANC_DICOM_WEB_VERSION "1.5")
+set(ORTHANC_DICOM_WEB_VERSION "1.6")
 
 if (ORTHANC_DICOM_WEB_VERSION STREQUAL "mainline")
   set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "mainline")
   set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
 else()
-  set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "1.8.2")
+  set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "1.9.3")
   set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
 endif()
 


=====================================
NEWS
=====================================
@@ -2,6 +2,16 @@ Pending changes in the mainline
 ===============================
 
 
+Version 1.6 (2021-05-07)
+========================
+
+* New field "Timeout" in "DicomWeb.Servers" to specify HTTP timeout on a per-server basis
+* Reduced memory consumption in STOW-RS server thanks to an optimization of
+  Orthanc::MultipartStreamReader in Orthanc framework 1.9.3
+* Fix issue #194 (Upgrade media types to DICOM 2021a, cf. table 8.7.3-5)
+* Fix issue #196 (STOW-RS: Should return 200 only when successfully stored all instances)
+
+
 Version 1.5 (2021-01-26)
 ========================
 


=====================================
Plugin/DicomWebServers.cpp
=====================================
@@ -155,6 +155,11 @@ namespace OrthancPlugins
       parameters.GetBooleanUserProperty(HAS_CHUNKED_TRANSFERS, true));
 
     userProperties = parameters.GetUserProperties();
+
+    if (parameters.HasTimeout())
+    {
+      client.SetTimeout(parameters.GetTimeout());
+    }
   }
 
 


=====================================
Plugin/StowRs.cpp
=====================================
@@ -37,7 +37,9 @@ namespace OrthancPlugins
     isFirst_(true),
     result_(Json::objectValue),
     success_(Json::arrayValue),
-    failed_(Json::arrayValue)
+    failed_(Json::arrayValue),
+    hasBadSyntax_(false),
+    hasConflict_(false)
   { 
     std::string tmp, contentType, subType, boundary;
     if (!Orthanc::MultipartStreamReader::GetMainContentType(tmp, headers) ||
@@ -111,8 +113,9 @@ namespace OrthancPlugins
 
     if (!ok)
     {
-      // Bad DICOM file => TODO add to error
+      // Bad DICOM file
       LogWarning("STOW-RS cannot parse an incoming DICOM file");
+      hasBadSyntax_ = true;
       return;
     }
 
@@ -127,6 +130,21 @@ namespace OrthancPlugins
         dicom[Orthanc::DICOM_TAG_STUDY_INSTANCE_UID.Format()].type() != Json::stringValue)
     {
       LogWarning("STOW-RS: Missing a mandatory tag in incoming DICOM file");
+      hasBadSyntax_ = true;      
+
+      if (dicom.isMember(Orthanc::DICOM_TAG_SOP_CLASS_UID.Format()) &&
+          dicom.isMember(Orthanc::DICOM_TAG_SOP_INSTANCE_UID.Format()) &&
+          dicom[Orthanc::DICOM_TAG_SOP_CLASS_UID.Format()].type() == Json::stringValue &&
+          dicom[Orthanc::DICOM_TAG_SOP_INSTANCE_UID.Format()].type() == Json::stringValue)
+      {
+        Json::Value item = Json::objectValue;
+        item[DICOM_TAG_REFERENCED_SOP_CLASS_UID.Format()] = dicom[Orthanc::DICOM_TAG_SOP_CLASS_UID.Format()].asString();
+        item[DICOM_TAG_REFERENCED_SOP_INSTANCE_UID.Format()] = dicom[Orthanc::DICOM_TAG_SOP_INSTANCE_UID.Format()].asString();
+        item[DICOM_TAG_FAILURE_REASON.Format()] =
+          boost::lexical_cast<std::string>(0xC000);  // Error: Cannot understand
+        failed_.append(item);
+      }
+
       return;
     }
 
@@ -142,12 +160,14 @@ namespace OrthancPlugins
     if (!expectedStudy_.empty() &&
         studyInstanceUid != expectedStudy_)
     {
-      LogInfo("STOW-RS request restricted to study [" + expectedStudy_ + 
-              "]: Ignoring instance from study [" + studyInstanceUid + "]");
+      LogWarning("STOW-RS request restricted to study [" + expectedStudy_ + 
+                 "], but received instance from study [" + studyInstanceUid + "]");
 
-      /*item[DICOM_TAG_WARNING_REASON.Format()] =
-        boost::lexical_cast<std::string>(0xB006);  // Elements discarded
-        success.append(item);*/
+      hasConflict_ = true;
+
+      item[DICOM_TAG_FAILURE_REASON.Format()] =
+        boost::lexical_cast<std::string>(0x0110);  // Processing failure
+      failed_.append(item);
     }
     else
     {
@@ -203,9 +223,23 @@ namespace OrthancPlugins
     
     DicomWebFormatter::Apply(answer, context_, result_, xml_,
                              OrthancPluginDicomWebBinaryMode_Ignore, "");
-      
-    OrthancPluginAnswerBuffer(context_, output, answer.c_str(), answer.size(),
-                              xml_ ? "application/dicom+xml" : "application/dicom+json");
+
+    // http://dicom.nema.org/medical/dicom/current/output/html/part18.html#table_10.5.3-1
+    if (hasBadSyntax_)
+    {
+      // Error 400
+      OrthancPluginSendHttpStatus(context_, output, 400, answer.c_str(), answer.size());
+    }
+    else if (hasConflict_)
+    {
+      // Error 409
+      OrthancPluginSendHttpStatus(context_, output, 409, answer.c_str(), answer.size());
+    }
+    else
+    {      
+      OrthancPluginAnswerBuffer(context_, output, answer.c_str(), answer.size(),
+                                xml_ ? "application/dicom+xml" : "application/dicom+json");
+    }
   };
 
   


=====================================
Plugin/StowRs.h
=====================================
@@ -41,6 +41,8 @@ namespace OrthancPlugins
     Json::Value            result_;
     Json::Value            success_;
     Json::Value            failed_;
+    bool                   hasBadSyntax_;
+    bool                   hasConflict_;
 
     std::unique_ptr<Orthanc::MultipartStreamReader>  parser_;
 


=====================================
Plugin/WadoRsRetrieveFrames.cpp
=====================================
@@ -166,19 +166,25 @@ static bool ParseTransferSyntax(Orthanc::DicomTransferSyntax& syntax,
           syntax = Orthanc::DicomTransferSyntax_JPEGProcess14;
           return true;
         }
-        else if (type == "image/x-dicom-rle" && (transferSyntax.empty() ||  // Default
-                                                 transferSyntax == "1.2.840.10008.1.2.5"))
+        else if ((type == "image/x-dicom-rle" ||   // Table 6.1.1.8-3b of DICOM 2017c (backward compatibility)
+                  type == "image/dicom-rle") &&    // Table 8.7.3-5 of DICOM 2021a
+                 (transferSyntax.empty() ||        // Default
+                  transferSyntax == "1.2.840.10008.1.2.5"))
         {
           syntax = Orthanc::DicomTransferSyntax_RLELossless;
           return true;
         }
-        else if (type == "image/x-jls" && (transferSyntax.empty() ||  // Default
-                                           transferSyntax == "1.2.840.10008.1.2.4.80"))
+        else if ((type == "image/x-jls" ||   // Table 6.1.1.8-3b of DICOM 2017c (backward compatibility)
+                  type == "image/jls") &&    // Table 8.7.3-5 of DICOM 2021a
+                 (transferSyntax.empty() ||  // Default
+                  transferSyntax == "1.2.840.10008.1.2.4.80"))
         {
           syntax = Orthanc::DicomTransferSyntax_JPEGLSLossless;
           return true;
         }
-        else if (type == "image/x-jls" && transferSyntax == "1.2.840.10008.1.2.4.81")
+        else if ((type == "image/x-jls" ||   // Table 6.1.1.8-3b of DICOM 2017c (backward compatibility)
+                  type == "image/jls") &&    // Table 8.7.3-5 of DICOM 2021a
+                 transferSyntax == "1.2.840.10008.1.2.4.81")
         {
           syntax = Orthanc::DicomTransferSyntax_JPEGLSLossy;
           return true;
@@ -345,13 +351,16 @@ static const char* GetMimeType(const Orthanc::DicomTransferSyntax& syntax)
       return "image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.70";
     
     case Orthanc::DicomTransferSyntax_RLELossless:
-      return "image/x-dicom-rle; transfer-syntax=1.2.840.10008.1.2.5";
+      // Was "image/x-dicom-rle" in DICOMweb <= 1.5
+      return "image/dicom-rle; transfer-syntax=1.2.840.10008.1.2.5";
 
     case Orthanc::DicomTransferSyntax_JPEGLSLossless:
-      return "image/x-jls; transfer-syntax=1.2.840.10008.1.2.4.80";
+      // Was "image/x-jls" in DICOMweb <= 1.5
+      return "image/jls; transfer-syntax=1.2.840.10008.1.2.4.80";
 
     case Orthanc::DicomTransferSyntax_JPEGLSLossy:
-      return "image/x-jls; transfer-syntax=1.2.840.10008.1.2.4.81";
+      // Was "image/x-jls" in DICOMweb <= 1.5
+      return "image/jls; transfer-syntax=1.2.840.10008.1.2.4.81";
 
     case Orthanc::DicomTransferSyntax_JPEG2000LosslessOnly:
       return "image/jp2; transfer-syntax=1.2.840.10008.1.2.4.90";


=====================================
Resources/Orthanc/CMake/Compiler.cmake
=====================================
@@ -188,7 +188,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   add_definitions(
     -D_CRT_SECURE_NO_WARNINGS=1
     )
-  link_libraries(rpcrt4 ws2_32)
+  link_libraries(rpcrt4 ws2_32 iphlpapi)  # "iphlpapi" is for "SystemToolbox::GetMacAddresses()"
 
   if (CMAKE_COMPILER_IS_GNUCXX)
     # Some additional C/C++ compiler flags for MinGW


=====================================
Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
=====================================
@@ -122,6 +122,14 @@ if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR
         set(ORTHANC_FRAMEWORK_MD5 "db094f96399cbe8b9bbdbce34884c220")
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.2")
         set(ORTHANC_FRAMEWORK_MD5 "8bfa10e66c9931e74111be0bfb1f4548")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.9.0")
+        set(ORTHANC_FRAMEWORK_MD5 "cea0b02ce184671eaf1bd668beefbf28")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.9.1")
+        set(ORTHANC_FRAMEWORK_MD5 "08eebc66ef93c3b40115c38501db5fbd")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.9.2")
+        set(ORTHANC_FRAMEWORK_MD5 "3ea66c09f64aca990016683b6375734e")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.9.3")
+        set(ORTHANC_FRAMEWORK_MD5 "9b86e6f00e03278293cd15643cc0233f")
 
       # Below this point are development snapshots that were used to
       # release some plugin, before an official release of the Orthanc
@@ -426,6 +434,8 @@ endif()
 
 if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
   set(ORTHANC_FRAMEWORK_LIBDIR "" CACHE PATH "")
+  set(ORTHANC_FRAMEWORK_USE_SHARED ON CACHE BOOL "Whether to use the shared library or the static library")
+  set(ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES "" CACHE STRING "Additional libraries to link against, separated by whitespaces, typically needed if using the static library (a common minimal value is \"boost_filesystem boost_iostreams boost_locale boost_regex boost_thread jsoncpp pugixml uuid\")")
 
   if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND
       CMAKE_COMPILER_IS_GNUCXX) # MinGW
@@ -442,113 +452,75 @@ if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
   include(${CMAKE_CURRENT_LIST_DIR}/AutoGeneratedCode.cmake)
   set(EMBED_RESOURCES_PYTHON ${CMAKE_CURRENT_LIST_DIR}/EmbedResources.py)
 
-  if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR
-      ORTHANC_FRAMEWORK_STATIC)
-    include_directories(${ORTHANC_FRAMEWORK_ROOT}/..)
+  if (ORTHANC_FRAMEWORK_USE_SHARED)
+    list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
+    list(GET CMAKE_FIND_LIBRARY_SUFFIXES 0 Suffix)
+  else()
+    list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
+    list(GET CMAKE_FIND_LIBRARY_SUFFIXES 1 Suffix)
+  endif()
+
+  # The "OrthancFramework" library must be the first one to be included
+  if ("${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "")
+    set(ORTHANC_FRAMEWORK_LIBRARIES ${Prefix}OrthancFramework${Suffix})
+  else ()
+    set(ORTHANC_FRAMEWORK_LIBRARIES ${ORTHANC_FRAMEWORK_LIBDIR}/${Prefix}OrthancFramework${Suffix})
+  endif()
+
+  if (NOT ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES STREQUAL "")
+    # https://stackoverflow.com/a/5272993/881731
+    string(REPLACE " " ";" tmp ${ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES})
+    list(APPEND ORTHANC_FRAMEWORK_LIBRARIES ${tmp})
+  endif()
+
+  # Look for the version of the mandatory dependency JsonCpp (cf. JsonCppConfiguration.cmake)
+  if (CMAKE_CROSSCOMPILING)
+    set(JSONCPP_INCLUDE_DIR ${ORTHANC_FRAMEWORK_ROOT}/..)
   else()
-    # Look for mandatory dependency JsonCpp (cf. JsonCppConfiguration.cmake)
     find_path(JSONCPP_INCLUDE_DIR json/reader.h
+      ${ORTHANC_FRAMEWORK_ROOT}/..
       /usr/include/jsoncpp
       /usr/local/include/jsoncpp
       )
+  endif()
 
-    message("JsonCpp include dir: ${JSONCPP_INCLUDE_DIR}")
-    include_directories(${JSONCPP_INCLUDE_DIR})
-    link_libraries(jsoncpp)
-
-    CHECK_INCLUDE_FILE_CXX(${JSONCPP_INCLUDE_DIR}/json/reader.h HAVE_JSONCPP_H)
-    if (NOT HAVE_JSONCPP_H)
-      message(FATAL_ERROR "Please install the libjsoncpp-dev package")
-    endif()
-
-    # Switch to the C++11 standard if the version of JsonCpp is 1.y.z
-    # (same as variable JSONCPP_CXX11 in the source code of Orthanc)
-    if (EXISTS ${JSONCPP_INCLUDE_DIR}/json/version.h)
-      file(STRINGS
-        "${JSONCPP_INCLUDE_DIR}/json/version.h" 
-        JSONCPP_VERSION_MAJOR1 REGEX
-        ".*define JSONCPP_VERSION_MAJOR.*")
+  message("JsonCpp include dir: ${JSONCPP_INCLUDE_DIR}")
+  include_directories(${JSONCPP_INCLUDE_DIR})
 
-      if (NOT JSONCPP_VERSION_MAJOR1)
-        message(FATAL_ERROR "Unable to extract the major version of JsonCpp")
-      endif()
-      
-      string(REGEX REPLACE
-        ".*JSONCPP_VERSION_MAJOR.*([0-9]+)$" "\\1" 
-        JSONCPP_VERSION_MAJOR ${JSONCPP_VERSION_MAJOR1})
-      message("JsonCpp major version: ${JSONCPP_VERSION_MAJOR}")
-
-      if (JSONCPP_VERSION_MAJOR GREATER 0)
-        message("Switching to C++11 standard, as version of JsonCpp is >= 1.0.0")
-        if (CMAKE_COMPILER_IS_GNUCXX)
-          set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
-        elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-          set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-        endif()
-      endif()
-    else()
-      message("Unable to detect the major version of JsonCpp, assuming < 1.0.0")
-    endif()
+  CHECK_INCLUDE_FILE_CXX(${JSONCPP_INCLUDE_DIR}/json/reader.h HAVE_JSONCPP_H)
+  if (NOT HAVE_JSONCPP_H)
+    message(FATAL_ERROR "Please install the libjsoncpp-dev package")
+  endif()
 
-    # Look for mandatory dependency Boost (cf. BoostConfiguration.cmake)
-    include(FindBoost)
-    find_package(Boost COMPONENTS filesystem thread system date_time regex ${ORTHANC_BOOST_COMPONENTS})
+  # Switch to the C++11 standard if the version of JsonCpp is 1.y.z
+  # (same as variable JSONCPP_CXX11 in the source code of Orthanc)
+  if (EXISTS ${JSONCPP_INCLUDE_DIR}/json/version.h)
+    file(STRINGS
+      "${JSONCPP_INCLUDE_DIR}/json/version.h" 
+      JSONCPP_VERSION_MAJOR1 REGEX
+      ".*define JSONCPP_VERSION_MAJOR.*")
 
-    if (NOT Boost_FOUND)
-      message(FATAL_ERROR "Unable to locate Boost on this system")
+    if (NOT JSONCPP_VERSION_MAJOR1)
+      message(FATAL_ERROR "Unable to extract the major version of JsonCpp")
     endif()
     
-    include_directories(${Boost_INCLUDE_DIRS})
-    link_libraries(${Boost_LIBRARIES})
-
-    # Optional component - Lua
-    if (ENABLE_LUA)
-      include(FindLua)
-
-      if (NOT LUA_FOUND)
-        message(FATAL_ERROR "Please install the liblua-dev package")
+    string(REGEX REPLACE
+      ".*JSONCPP_VERSION_MAJOR.*([0-9]+)$" "\\1" 
+      JSONCPP_VERSION_MAJOR ${JSONCPP_VERSION_MAJOR1})
+    message("JsonCpp major version: ${JSONCPP_VERSION_MAJOR}")
+
+    if (JSONCPP_VERSION_MAJOR GREATER 0)
+      message("Switching to C++11 standard, as version of JsonCpp is >= 1.0.0")
+      if (CMAKE_COMPILER_IS_GNUCXX)
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
+      elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
       endif()
-
-      include_directories(${LUA_INCLUDE_DIR})
-      link_libraries(${LUA_LIBRARIES})
-    endif()
-
-    # Optional component - SQLite
-    if (ENABLE_SQLITE)    
-      CHECK_INCLUDE_FILE(sqlite3.h HAVE_SQLITE_H)
-      if (NOT HAVE_SQLITE_H)
-        message(FATAL_ERROR "Please install the libsqlite3-dev package")
-      endif()
-      link_libraries(sqlite3)
-    endif()
-
-    # Optional component - Pugixml
-    if (ENABLE_PUGIXML)
-      CHECK_INCLUDE_FILE_CXX(pugixml.hpp HAVE_PUGIXML_H)
-      if (NOT HAVE_PUGIXML_H)
-        message(FATAL_ERROR "Please install the libpugixml-dev package")
-      endif()      
-      link_libraries(pugixml)
-    endif()
-
-    # Optional component - DCMTK
-    if (ENABLE_DCMTK)
-      include(FindDCMTK)
-      include_directories(${DCMTK_INCLUDE_DIRS})
-      link_libraries(${DCMTK_LIBRARIES})
-    endif()
-
-    # Optional component - OpenSSL
-    if (ENABLE_SSL)
-      include(FindOpenSSL)
-      if (NOT ${OPENSSL_FOUND})
-        message(FATAL_ERROR "Unable to find OpenSSL")
-      endif()
-      include_directories(${OPENSSL_INCLUDE_DIR})
-      link_libraries(${OPENSSL_LIBRARIES})
     endif()
+  else()
+    message("Unable to detect the major version of JsonCpp, assuming < 1.0.0")
   endif()
-
+  
   # Look for Orthanc framework shared library
   include(CheckCXXSymbolExists)
 
@@ -568,28 +540,17 @@ if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
   
   message("Orthanc framework include dir: ${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
   include_directories(${ORTHANC_FRAMEWORK_INCLUDE_DIR})
-  
-  if ("${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "")
-    set(ORTHANC_FRAMEWORK_LIBRARIES OrthancFramework)
-  else()
-    if (MSVC)
-      set(Suffix ".lib")
-      set(Prefix "")
-    else()
-      list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
-      list(GET CMAKE_FIND_LIBRARY_SUFFIXES 0 Suffix)
-    endif()
-    set(ORTHANC_FRAMEWORK_LIBRARIES ${ORTHANC_FRAMEWORK_LIBDIR}/${Prefix}OrthancFramework${Suffix})
-  endif()
 
-  set(CMAKE_REQUIRED_INCLUDES "${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
-  set(CMAKE_REQUIRED_LIBRARIES "${ORTHANC_FRAMEWORK_LIBRARIES}")
-  
-  check_cxx_symbol_exists("Orthanc::InitializeFramework" "OrthancFramework.h" HAVE_ORTHANC_FRAMEWORK)
-  if (NOT HAVE_ORTHANC_FRAMEWORK)
-    message(FATAL_ERROR "Cannot find the Orthanc framework")
+  if (ORTHANC_FRAMEWORK_USE_SHARED)
+    set(CMAKE_REQUIRED_INCLUDES "${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
+    set(CMAKE_REQUIRED_LIBRARIES "${ORTHANC_FRAMEWORK_LIBRARIES}")
+    
+    check_cxx_symbol_exists("Orthanc::InitializeFramework" "OrthancFramework.h" HAVE_ORTHANC_FRAMEWORK)
+    if (NOT HAVE_ORTHANC_FRAMEWORK)
+      message(FATAL_ERROR "Cannot find the Orthanc framework")
+    endif()
+    
+    unset(CMAKE_REQUIRED_INCLUDES)
+    unset(CMAKE_REQUIRED_LIBRARIES)
   endif()
-
-  unset(CMAKE_REQUIRED_INCLUDES)
-  unset(CMAKE_REQUIRED_LIBRARIES)
 endif()


=====================================
Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp
=====================================
@@ -2726,10 +2726,18 @@ namespace OrthancPlugins
           delete *it;
         }
 
+        size_ = 0;
         content_.clear();
       }
 
-      void Flatten(std::string& target) const
+      /**
+       * Since Orthanc 1.9.3, this function also clears the content of
+       * the ChunkedBuffer in order to mimic the behavior of the
+       * original class "Orthanc::ChunkedBuffer". This prevents the
+       * forgetting of calling "Clear()" in order to reduce memory
+       * consumption.
+       **/
+      void Flatten(std::string& target)
       {
         target.resize(size_);
 
@@ -2745,10 +2753,14 @@ namespace OrthancPlugins
             memcpy(&target[pos], (*it)->c_str(), s);
             pos += s;
           }
+
+          delete *it;
         }
 
-        assert(size_ == 0 ||
-               pos == target.size());
+        assert(pos == target.size());
+
+        size_ = 0;
+        content_.clear();
       }
 
       void AddChunk(const void* data,
@@ -2779,7 +2791,7 @@ namespace OrthancPlugins
         return headers_;
       }
 
-      const ChunkedBuffer& GetBody() const
+      ChunkedBuffer& GetBody()
       {
         return body_;
       }


=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+orthanc-dicomweb (1.6+dfsg-1) experimental; urgency=medium
+
+  * New upstream version
+
+ -- Sebastien Jodogne <s.jodogne at gmail.com>  Fri, 07 May 2021 16:28:52 +0200
+
 orthanc-dicomweb (1.5+dfsg-2) unstable; urgency=medium
 
   * Statically link against the Orthanc framework


=====================================
debian/patches/cmake
=====================================
@@ -2,10 +2,10 @@ Description: Fix the inclusion of the JavaScript libraries
 Author: Sebastien Jodogne <s.jodogne at orthanc-labs.com>
 ---
 This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: OrthancDicomWeb-1.5/CMakeLists.txt
+Index: OrthancDicomWeb-1.6/CMakeLists.txt
 ===================================================================
---- OrthancDicomWeb-1.5.orig/CMakeLists.txt
-+++ OrthancDicomWeb-1.5/CMakeLists.txt
+--- OrthancDicomWeb-1.6.orig/CMakeLists.txt
++++ OrthancDicomWeb-1.6/CMakeLists.txt
 @@ -80,7 +80,7 @@ else()
  endif()
  


=====================================
debian/patches/series
=====================================
@@ -1,2 +1 @@
 cmake
-static-framework


=====================================
debian/patches/static-framework deleted
=====================================
@@ -1,239 +0,0 @@
-Description: Statically link against the Orthanc framework
-Author: Sebastien Jodogne <s.jodogne at orthanc-labs.com>
-Forwarded: yes
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: OrthancDicomWeb-1.5/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
-===================================================================
---- OrthancDicomWeb-1.5.orig/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
-+++ OrthancDicomWeb-1.5/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
-@@ -122,6 +122,10 @@ if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "h
-         set(ORTHANC_FRAMEWORK_MD5 "db094f96399cbe8b9bbdbce34884c220")
-       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.2")
-         set(ORTHANC_FRAMEWORK_MD5 "8bfa10e66c9931e74111be0bfb1f4548")
-+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.9.0")
-+        set(ORTHANC_FRAMEWORK_MD5 "cea0b02ce184671eaf1bd668beefbf28")
-+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.9.1")
-+        set(ORTHANC_FRAMEWORK_MD5 "08eebc66ef93c3b40115c38501db5fbd")
- 
-       # Below this point are development snapshots that were used to
-       # release some plugin, before an official release of the Orthanc
-@@ -426,6 +430,8 @@ endif()
- 
- if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "system")
-   set(ORTHANC_FRAMEWORK_LIBDIR "" CACHE PATH "")
-+  set(ORTHANC_FRAMEWORK_USE_SHARED ON CACHE BOOL "Whether to use the shared library or the static library")
-+  set(ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES "" CACHE STRING "Additional libraries to link against, separated by whitespaces, typically needed if using the static library (a common minimal value is \"boost_filesystem boost_iostreams boost_locale boost_regex boost_thread jsoncpp pugixml uuid\")")
- 
-   if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND
-       CMAKE_COMPILER_IS_GNUCXX) # MinGW
-@@ -442,113 +448,75 @@ if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "s
-   include(${CMAKE_CURRENT_LIST_DIR}/AutoGeneratedCode.cmake)
-   set(EMBED_RESOURCES_PYTHON ${CMAKE_CURRENT_LIST_DIR}/EmbedResources.py)
- 
--  if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR
--      ORTHANC_FRAMEWORK_STATIC)
--    include_directories(${ORTHANC_FRAMEWORK_ROOT}/..)
-+  if (ORTHANC_FRAMEWORK_USE_SHARED)
-+    list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
-+    list(GET CMAKE_FIND_LIBRARY_SUFFIXES 0 Suffix)
-+  else()
-+    list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
-+    list(GET CMAKE_FIND_LIBRARY_SUFFIXES 1 Suffix)
-+  endif()
-+
-+  # The "OrthancFramework" library must be the first one to be included
-+  if ("${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "")
-+    set(ORTHANC_FRAMEWORK_LIBRARIES ${Prefix}OrthancFramework${Suffix})
-+  else ()
-+    set(ORTHANC_FRAMEWORK_LIBRARIES ${ORTHANC_FRAMEWORK_LIBDIR}/${Prefix}OrthancFramework${Suffix})
-+  endif()
-+
-+  if (NOT ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES STREQUAL "")
-+    # https://stackoverflow.com/a/5272993/881731
-+    string(REPLACE " " ";" tmp ${ORTHANC_FRAMEWORK_ADDITIONAL_LIBRARIES})
-+    list(APPEND ORTHANC_FRAMEWORK_LIBRARIES ${tmp})
-+  endif()
-+
-+  # Look for the version of the mandatory dependency JsonCpp (cf. JsonCppConfiguration.cmake)
-+  if (CMAKE_CROSSCOMPILING)
-+    set(JSONCPP_INCLUDE_DIR ${ORTHANC_FRAMEWORK_ROOT}/..)
-   else()
--    # Look for mandatory dependency JsonCpp (cf. JsonCppConfiguration.cmake)
-     find_path(JSONCPP_INCLUDE_DIR json/reader.h
-+      ${ORTHANC_FRAMEWORK_ROOT}/..
-       /usr/include/jsoncpp
-       /usr/local/include/jsoncpp
-       )
-+  endif()
- 
--    message("JsonCpp include dir: ${JSONCPP_INCLUDE_DIR}")
--    include_directories(${JSONCPP_INCLUDE_DIR})
--    link_libraries(jsoncpp)
--
--    CHECK_INCLUDE_FILE_CXX(${JSONCPP_INCLUDE_DIR}/json/reader.h HAVE_JSONCPP_H)
--    if (NOT HAVE_JSONCPP_H)
--      message(FATAL_ERROR "Please install the libjsoncpp-dev package")
--    endif()
--
--    # Switch to the C++11 standard if the version of JsonCpp is 1.y.z
--    # (same as variable JSONCPP_CXX11 in the source code of Orthanc)
--    if (EXISTS ${JSONCPP_INCLUDE_DIR}/json/version.h)
--      file(STRINGS
--        "${JSONCPP_INCLUDE_DIR}/json/version.h" 
--        JSONCPP_VERSION_MAJOR1 REGEX
--        ".*define JSONCPP_VERSION_MAJOR.*")
--
--      if (NOT JSONCPP_VERSION_MAJOR1)
--        message(FATAL_ERROR "Unable to extract the major version of JsonCpp")
--      endif()
--      
--      string(REGEX REPLACE
--        ".*JSONCPP_VERSION_MAJOR.*([0-9]+)$" "\\1" 
--        JSONCPP_VERSION_MAJOR ${JSONCPP_VERSION_MAJOR1})
--      message("JsonCpp major version: ${JSONCPP_VERSION_MAJOR}")
--
--      if (JSONCPP_VERSION_MAJOR GREATER 0)
--        message("Switching to C++11 standard, as version of JsonCpp is >= 1.0.0")
--        if (CMAKE_COMPILER_IS_GNUCXX)
--          set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
--        elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
--          set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
--        endif()
--      endif()
--    else()
--      message("Unable to detect the major version of JsonCpp, assuming < 1.0.0")
--    endif()
-+  message("JsonCpp include dir: ${JSONCPP_INCLUDE_DIR}")
-+  include_directories(${JSONCPP_INCLUDE_DIR})
- 
--    # Look for mandatory dependency Boost (cf. BoostConfiguration.cmake)
--    include(FindBoost)
--    find_package(Boost COMPONENTS filesystem thread system date_time regex ${ORTHANC_BOOST_COMPONENTS})
-+  CHECK_INCLUDE_FILE_CXX(${JSONCPP_INCLUDE_DIR}/json/reader.h HAVE_JSONCPP_H)
-+  if (NOT HAVE_JSONCPP_H)
-+    message(FATAL_ERROR "Please install the libjsoncpp-dev package")
-+  endif()
-+
-+  # Switch to the C++11 standard if the version of JsonCpp is 1.y.z
-+  # (same as variable JSONCPP_CXX11 in the source code of Orthanc)
-+  if (EXISTS ${JSONCPP_INCLUDE_DIR}/json/version.h)
-+    file(STRINGS
-+      "${JSONCPP_INCLUDE_DIR}/json/version.h" 
-+      JSONCPP_VERSION_MAJOR1 REGEX
-+      ".*define JSONCPP_VERSION_MAJOR.*")
- 
--    if (NOT Boost_FOUND)
--      message(FATAL_ERROR "Unable to locate Boost on this system")
-+    if (NOT JSONCPP_VERSION_MAJOR1)
-+      message(FATAL_ERROR "Unable to extract the major version of JsonCpp")
-     endif()
-     
--    include_directories(${Boost_INCLUDE_DIRS})
--    link_libraries(${Boost_LIBRARIES})
--
--    # Optional component - Lua
--    if (ENABLE_LUA)
--      include(FindLua)
--
--      if (NOT LUA_FOUND)
--        message(FATAL_ERROR "Please install the liblua-dev package")
--      endif()
--
--      include_directories(${LUA_INCLUDE_DIR})
--      link_libraries(${LUA_LIBRARIES})
--    endif()
--
--    # Optional component - SQLite
--    if (ENABLE_SQLITE)    
--      CHECK_INCLUDE_FILE(sqlite3.h HAVE_SQLITE_H)
--      if (NOT HAVE_SQLITE_H)
--        message(FATAL_ERROR "Please install the libsqlite3-dev package")
--      endif()
--      link_libraries(sqlite3)
--    endif()
--
--    # Optional component - Pugixml
--    if (ENABLE_PUGIXML)
--      CHECK_INCLUDE_FILE_CXX(pugixml.hpp HAVE_PUGIXML_H)
--      if (NOT HAVE_PUGIXML_H)
--        message(FATAL_ERROR "Please install the libpugixml-dev package")
--      endif()      
--      link_libraries(pugixml)
--    endif()
--
--    # Optional component - DCMTK
--    if (ENABLE_DCMTK)
--      include(FindDCMTK)
--      include_directories(${DCMTK_INCLUDE_DIRS})
--      link_libraries(${DCMTK_LIBRARIES})
--    endif()
--
--    # Optional component - OpenSSL
--    if (ENABLE_SSL)
--      include(FindOpenSSL)
--      if (NOT ${OPENSSL_FOUND})
--        message(FATAL_ERROR "Unable to find OpenSSL")
-+    string(REGEX REPLACE
-+      ".*JSONCPP_VERSION_MAJOR.*([0-9]+)$" "\\1" 
-+      JSONCPP_VERSION_MAJOR ${JSONCPP_VERSION_MAJOR1})
-+    message("JsonCpp major version: ${JSONCPP_VERSION_MAJOR}")
-+
-+    if (JSONCPP_VERSION_MAJOR GREATER 0)
-+      message("Switching to C++11 standard, as version of JsonCpp is >= 1.0.0")
-+      if (CMAKE_COMPILER_IS_GNUCXX)
-+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
-+      elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-       endif()
--      include_directories(${OPENSSL_INCLUDE_DIR})
--      link_libraries(${OPENSSL_LIBRARIES})
-     endif()
-+  else()
-+    message("Unable to detect the major version of JsonCpp, assuming < 1.0.0")
-   endif()
--
-+  
-   # Look for Orthanc framework shared library
-   include(CheckCXXSymbolExists)
- 
-@@ -568,28 +536,17 @@ if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "s
-   
-   message("Orthanc framework include dir: ${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
-   include_directories(${ORTHANC_FRAMEWORK_INCLUDE_DIR})
--  
--  if ("${ORTHANC_FRAMEWORK_LIBDIR}" STREQUAL "")
--    set(ORTHANC_FRAMEWORK_LIBRARIES OrthancFramework)
--  else()
--    if (MSVC)
--      set(Suffix ".lib")
--      set(Prefix "")
--    else()
--      list(GET CMAKE_FIND_LIBRARY_PREFIXES 0 Prefix)
--      list(GET CMAKE_FIND_LIBRARY_SUFFIXES 0 Suffix)
--    endif()
--    set(ORTHANC_FRAMEWORK_LIBRARIES ${ORTHANC_FRAMEWORK_LIBDIR}/${Prefix}OrthancFramework${Suffix})
--  endif()
- 
--  set(CMAKE_REQUIRED_INCLUDES "${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
--  set(CMAKE_REQUIRED_LIBRARIES "${ORTHANC_FRAMEWORK_LIBRARIES}")
--  
--  check_cxx_symbol_exists("Orthanc::InitializeFramework" "OrthancFramework.h" HAVE_ORTHANC_FRAMEWORK)
--  if (NOT HAVE_ORTHANC_FRAMEWORK)
--    message(FATAL_ERROR "Cannot find the Orthanc framework")
-+  if (ORTHANC_FRAMEWORK_USE_SHARED)
-+    set(CMAKE_REQUIRED_INCLUDES "${ORTHANC_FRAMEWORK_INCLUDE_DIR}")
-+    set(CMAKE_REQUIRED_LIBRARIES "${ORTHANC_FRAMEWORK_LIBRARIES}")
-+    
-+    check_cxx_symbol_exists("Orthanc::InitializeFramework" "OrthancFramework.h" HAVE_ORTHANC_FRAMEWORK)
-+    if (NOT HAVE_ORTHANC_FRAMEWORK)
-+      message(FATAL_ERROR "Cannot find the Orthanc framework")
-+    endif()
-+    
-+    unset(CMAKE_REQUIRED_INCLUDES)
-+    unset(CMAKE_REQUIRED_LIBRARIES)
-   endif()
--
--  unset(CMAKE_REQUIRED_INCLUDES)
--  unset(CMAKE_REQUIRED_LIBRARIES)
- endif()



View it on GitLab: https://salsa.debian.org/med-team/orthanc-dicomweb/-/compare/10f1830644d2917e05453fd426da594364d9abaa...4bb12906fd6fee010852f325144cecc80c8a3844

-- 
View it on GitLab: https://salsa.debian.org/med-team/orthanc-dicomweb/-/compare/10f1830644d2917e05453fd426da594364d9abaa...4bb12906fd6fee010852f325144cecc80c8a3844
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20210507/f69fbbe9/attachment-0001.htm>


More information about the debian-med-commit mailing list