[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