[med-svn] [Git][med-team/orthanc][master] 5 commits: New upstream version 1.5.6+dfsg

Sebastien Jodogne gitlab at salsa.debian.org
Sat Mar 2 08:29:30 GMT 2019


Sebastien Jodogne pushed to branch master at Debian Med / orthanc


Commits:
cf3958ca by jodogne-guest at 2019-03-01T16:43:59Z
New upstream version 1.5.6+dfsg
- - - - -
24596b9d by jodogne-guest at 2019-03-01T16:44:02Z
Update upstream source from tag 'upstream/1.5.6+dfsg'

Update to upstream version '1.5.6+dfsg'
with Debian dir 1040d4de4828960fa89eca39d5552c1f149f1571
- - - - -
2f1e1b26 by jodogne-guest at 2019-03-01T16:46:27Z
preparing for 1.5.6+dfsg-1

- - - - -
8a4bf551 by jodogne-guest at 2019-03-01T17:00:00Z
updated configuration files

- - - - -
b02677aa by jodogne-guest at 2019-03-02T08:15:59Z
Upload to unstable

- - - - -


18 changed files:

- .hg_archival.txt
- Core/DicomParsing/DicomWebJsonVisitor.cpp
- Core/RestApi/RestApiOutput.cpp
- NEWS
- OrthancExplorer/query-retrieve.js
- OrthancServer/ServerIndex.cpp
- Resources/CMake/BoostConfiguration.cmake
- Resources/CMake/BoostConfiguration.sh
- Resources/CMake/DcmtkConfiguration.cmake
- Resources/CMake/DcmtkConfigurationStatic-3.6.2.cmake
- Resources/CMake/DcmtkConfigurationStatic-3.6.4.cmake
- Resources/CMake/OrthancFrameworkParameters.cmake
- Resources/DownloadOrthancFramework.cmake
- UnitTestsSources/FromDcmtkTests.cpp
- debian/changelog
- debian/control
- debian/docs/Orthanc.1
- debian/docs/OrthancRecoverCompressedFile.8


Changes:

=====================================
.hg_archival.txt
=====================================
@@ -1,6 +1,6 @@
 repo: 3959d33612ccaadc0d4d707227fbed09ac35e5fe
-node: 010d5e6edabed784325c43ce81ec140a6a9ccf84
-branch: Orthanc-1.5.5
+node: 56d7f3d50c89c6c66c9932621a1ae05403e34ee1
+branch: Orthanc-1.5.6
 latesttag: dcmtk-3.6.1
-latesttagdistance: 806
-changessincelatesttag: 923
+latesttagdistance: 817
+changessincelatesttag: 934


=====================================
Core/DicomParsing/DicomWebJsonVisitor.cpp
=====================================
@@ -324,16 +324,25 @@ namespace Orthanc
     
   Json::Value DicomWebJsonVisitor::FormatDouble(double value)
   {
-    long long a = boost::math::llround<double>(value);
+    try
+    {
+      long long a = boost::math::llround<double>(value);
 
-    double d = fabs(value - static_cast<double>(a));
+      double d = fabs(value - static_cast<double>(a));
 
-    if (d <= std::numeric_limits<double>::epsilon() * 100.0)
-    {
-      return FormatInteger(a);
+      if (d <= std::numeric_limits<double>::epsilon() * 100.0)
+      {
+        return FormatInteger(a);
+      }
+      else
+      {
+        return Json::Value(value);
+      }
     }
-    else
+    catch (boost::math::rounding_error&)
     {
+      // Can occur if "long long" is too small to receive this value
+      // (e.g. infinity)
       return Json::Value(value);
     }
   }


=====================================
Core/RestApi/RestApiOutput.cpp
=====================================
@@ -128,9 +128,29 @@ namespace Orthanc
                                    MimeType contentType)
   {
     CheckStatus();
-    output_.SetContentType(contentType);
-    output_.Answer(buffer, length);
-    alreadySent_ = true;
+
+    if (convertJsonToXml_ &&
+        contentType == MimeType_Json)
+    {
+      Json::Value json;
+      Json::Reader reader;
+      if (reader.parse(reinterpret_cast<const char*>(buffer),
+                       reinterpret_cast<const char*>(buffer) + length, json))
+      {
+        AnswerJson(json);
+      }
+      else
+      {
+        throw OrthancException(ErrorCode_BadFileFormat,
+                               "The REST API tries and answers with an invalid JSON file");
+      } 
+    }
+    else
+    {
+      output_.SetContentType(contentType);
+      output_.Answer(buffer, length);
+      alreadySent_ = true;
+    }
   }
 
   void RestApiOutput::Redirect(const std::string& path)


=====================================
NEWS
=====================================
@@ -2,6 +2,25 @@ Pending changes in the mainline
 ===============================
 
 
+Version 1.5.6 (2019-03-01)
+==========================
+
+Orthanc Explorer
+----------------
+
+* If performing a Query/Retrieve operation, the default value for the
+  tags is set to an empty string instead of '*', which allows to match
+  even if the tag is not present. This allows malformed DICOM files to
+  be matched, even though they lack required tags such as "PatientSex"
+
+Maintenance
+-----------
+
+* Enlarge the support of JSON-to-XML conversion in the REST API
+* Fix missing DB transactions in some write operations
+* Fix performance issue in DICOM protocol by disabling Nagle's algorithm
+
+
 Version 1.5.5 (2019-02-25)
 ==========================
 


=====================================
OrthancExplorer/query-retrieve.js
=====================================
@@ -84,11 +84,11 @@ $('#qr-submit').live('click', function() {
   query = {
     'Level' : 'Study',
     'Query' : {
-      'AccessionNumber' : '*',
-      'PatientBirthDate' : '*',
-      'PatientID' : '*',
-      'PatientName' : '*',
-      'PatientSex' : '*',
+      'AccessionNumber' : '',
+      'PatientBirthDate' : '',
+      'PatientID' : '',
+      'PatientName' : '',
+      'PatientSex' : '',
       'StudyDate' : $('#qr-date').val(),
       'StudyDescription' : '*'
     }


=====================================
OrthancServer/ServerIndex.cpp
=====================================
@@ -1935,13 +1935,19 @@ namespace Orthanc
   void ServerIndex::DeleteChanges()
   {
     boost::mutex::scoped_lock lock(mutex_);
+
+    Transaction transaction(*this);
     db_.ClearChanges();
+    transaction.Commit(0);
   }
 
   void ServerIndex::DeleteExportedResources()
   {
     boost::mutex::scoped_lock lock(mutex_);
+
+    Transaction transaction(*this);
     db_.ClearExportedResources();
+    transaction.Commit(0);
   }
 
 
@@ -2235,7 +2241,10 @@ namespace Orthanc
                                       const std::string& value)
   {
     boost::mutex::scoped_lock lock(mutex_);
+
+    Transaction transaction(*this);
     db_.SetGlobalProperty(property, value);
+    transaction.Commit(0);
   }
 
 


=====================================
Resources/CMake/BoostConfiguration.cmake
=====================================
@@ -55,8 +55,8 @@ if (BOOST_STATIC)
   
   set(BOOST_NAME boost_1_69_0)
   set(BOOST_VERSION 1.69.0)
-  set(BOOST_BCP_SUFFIX bcpdigest-1.5.5)
-  set(BOOST_MD5 "a5d027d6668b69ccee707c4ceaf2496e")
+  set(BOOST_BCP_SUFFIX bcpdigest-1.5.6)
+  set(BOOST_MD5 "579bccc0ea4d1a261c1d0c5e27446c3d")
   set(BOOST_URL "http://orthanc.osimis.io/ThirdPartyDownloads/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz")
   set(BOOST_SOURCES_DIR ${CMAKE_BINARY_DIR}/${BOOST_NAME})
 


=====================================
Resources/CMake/BoostConfiguration.sh
=====================================
@@ -24,7 +24,7 @@ set -u
 ##   - Orthanc >= 1.5.5: Boost 1.69.0
 
 BOOST_VERSION=1_69_0
-ORTHANC_VERSION=1.5.5
+ORTHANC_VERSION=1.5.6
 
 rm -rf /tmp/boost_${BOOST_VERSION}
 rm -rf /tmp/bcp/boost_${BOOST_VERSION}
@@ -35,7 +35,7 @@ tar xfz ./boost_${BOOST_VERSION}.tar.gz
 
 echo "Generating the subset..."
 mkdir -p /tmp/bcp/boost_${BOOST_VERSION}
-bcp --boost=/tmp/boost_${BOOST_VERSION} thread system locale date_time filesystem math/special_functions algorithm uuid atomic iostreams program_options numeric/ublas geometry polygon signals2 /tmp/bcp/boost_${BOOST_VERSION}
+bcp --boost=/tmp/boost_${BOOST_VERSION} thread system locale date_time filesystem math/special_functions algorithm uuid atomic iostreams program_options numeric/ublas geometry polygon signals2 chrono /tmp/bcp/boost_${BOOST_VERSION}
 
 echo "Removing documentation..."
 rm -rf /tmp/bcp/boost_${BOOST_VERSION}/libs/locale/doc/html


=====================================
Resources/CMake/DcmtkConfiguration.cmake
=====================================
@@ -88,6 +88,7 @@ if (STATIC_BUILD OR NOT USE_SYSTEM_DCMTK)
     -DDCMTK_VERSION_NUMBER=${DCMTK_VERSION_NUMBER}
     )
 
+
   if (NOT ENABLE_DCMTK_LOG)
     # Disable logging internal to DCMTK
     # https://groups.google.com/d/msg/orthanc-users/v2SzzAmY948/VxT1QVGiBAAJ


=====================================
Resources/CMake/DcmtkConfigurationStatic-3.6.2.cmake
=====================================
@@ -179,3 +179,16 @@ endif()
 #set_source_files_properties(${DCMTK_SOURCES}
 #  PROPERTIES COMPILE_DEFINITIONS
 #  "PACKAGE_VERSION=\"${DCMTK_PACKAGE_VERSION}\";PACKAGE_VERSION_NUMBER=\"${DCMTK_VERSION_NUMBER}\"")
+
+
+# Starting with DCMTK 3.6.2, the Nagle algorithm is not disabled by
+# default since this does not seem to be appropriate (anymore) for
+# most modern operating systems. In order to change this default, the
+# environment variable NO_TCPDELAY can be set to "1" (see envvars.txt
+# for details). Alternatively, the macro DISABLE_NAGLE_ALGORITHM can
+# be defined to change this setting at compilation time (see
+# macros.txt for details).
+# https://forum.dcmtk.org/viewtopic.php?t=4632
+add_definitions(
+  -DDISABLE_NAGLE_ALGORITHM=1
+  )


=====================================
Resources/CMake/DcmtkConfigurationStatic-3.6.4.cmake
=====================================
@@ -169,3 +169,16 @@ list(REMOVE_ITEM DCMTK_SOURCES
   ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/mkdictbi.cc
   ${DCMTK_SOURCES_DIR}/dcmdata/libsrc/mkdeftag.cc
   )
+
+
+# Starting with DCMTK 3.6.2, the Nagle algorithm is not disabled by
+# default since this does not seem to be appropriate (anymore) for
+# most modern operating systems. In order to change this default, the
+# environment variable NO_TCPDELAY can be set to "1" (see envvars.txt
+# for details). Alternatively, the macro DISABLE_NAGLE_ALGORITHM can
+# be defined to change this setting at compilation time (see
+# macros.txt for details).
+# https://forum.dcmtk.org/viewtopic.php?t=4632
+add_definitions(
+  -DDISABLE_NAGLE_ALGORITHM=1
+  )


=====================================
Resources/CMake/OrthancFrameworkParameters.cmake
=====================================
@@ -3,7 +3,7 @@
 #####################################################################
 
 # Version of the build, should always be "mainline" except in release branches
-set(ORTHANC_VERSION "1.5.5")
+set(ORTHANC_VERSION "1.5.6")
 
 # Version of the database schema. History:
 #   * Orthanc 0.1.0 -> Orthanc 0.3.0 = no versioning


=====================================
Resources/DownloadOrthancFramework.cmake
=====================================
@@ -101,6 +101,8 @@ if (ORTHANC_FRAMEWORK_SOURCE STREQUAL "hg" OR
         set(ORTHANC_FRAMEWORK_MD5 "bf2f5ed1adb8b0fc5f10d278e68e1dfe")
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.4")
         set(ORTHANC_FRAMEWORK_MD5 "404baef5d4c43e7c5d9410edda8ef5a5")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.5.5")
+        set(ORTHANC_FRAMEWORK_MD5 "cfc437e0687ae4bd725fd93dc1f08bc4")
       endif()
     endif()
   endif()


=====================================
UnitTestsSources/FromDcmtkTests.cpp
=====================================
@@ -1521,6 +1521,18 @@ static std::string DecodeFromSpecification(const std::string& s)
 
 
 
+// Compatibility wrapper
+static pugi::xpath_node SelectNode(const pugi::xml_document& doc,
+                                   const char* xpath)
+{
+#if PUGIXML_VERSION <= 140
+  return doc.select_single_node(xpath);  // Deprecated in pugixml 1.5
+#else
+  return doc.select_node(xpath);
+#endif
+}
+
+
 TEST(Toolbox, EncodingsKorean)
 {
   // http://dicom.nema.org/MEDICAL/dicom/current/output/chtml/part05/sect_I.2.html
@@ -1569,37 +1581,36 @@ TEST(Toolbox, EncodingsKorean)
   pugi::xml_document doc;
   doc.load_buffer(xml.c_str(), xml.size());
 
-  pugi::xpath_node node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00080005\"]/Value");
+  pugi::xpath_node node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00080005\"]/Value");
   ASSERT_STREQ("ISO_IR 192", node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00080005\"]");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00080005\"]");
   ASSERT_STREQ("CS", node.node().attribute("vr").value());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]");
   ASSERT_STREQ("PN", node.node().attribute("vr").value());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Alphabetic/FamilyName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Alphabetic/FamilyName");
   ASSERT_STREQ("Hong", node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Alphabetic/GivenName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Alphabetic/GivenName");
   ASSERT_STREQ("Gildong", node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Ideographic/FamilyName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Ideographic/FamilyName");
   ASSERT_EQ(utf8.substr(13, 3), node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Ideographic/GivenName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Ideographic/GivenName");
   ASSERT_EQ(utf8.substr(17, 6), node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Phonetic/FamilyName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Phonetic/FamilyName");
   ASSERT_EQ(utf8.substr(24, 3), node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Phonetic/GivenName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Phonetic/GivenName");
   ASSERT_EQ(utf8.substr(28), node.node().text().as_string());
 #endif  
 }
 
 
-
 TEST(Toolbox, EncodingsJapaneseKanji)
 {
   // http://dicom.nema.org/MEDICAL/dicom/current/output/chtml/part05/sect_H.3.html
@@ -1650,31 +1661,31 @@ TEST(Toolbox, EncodingsJapaneseKanji)
   pugi::xml_document doc;
   doc.load_buffer(xml.c_str(), xml.size());
 
-  pugi::xpath_node node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00080005\"]/Value");
+  pugi::xpath_node node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00080005\"]/Value");
   ASSERT_STREQ("ISO_IR 192", node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00080005\"]");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00080005\"]");
   ASSERT_STREQ("CS", node.node().attribute("vr").value());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]");
   ASSERT_STREQ("PN", node.node().attribute("vr").value());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Alphabetic/FamilyName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Alphabetic/FamilyName");
   ASSERT_STREQ("Yamada", node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Alphabetic/GivenName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Alphabetic/GivenName");
   ASSERT_STREQ("Tarou", node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Ideographic/FamilyName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Ideographic/FamilyName");
   ASSERT_EQ(utf8.substr(13, 6), node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Ideographic/GivenName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Ideographic/GivenName");
   ASSERT_EQ(utf8.substr(20, 6), node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Phonetic/FamilyName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Phonetic/FamilyName");
   ASSERT_EQ(utf8.substr(27, 9), node.node().text().as_string());
 
-  node = doc.select_node("//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Phonetic/GivenName");
+  node = SelectNode(doc, "//NativeDicomModel/DicomAttribute[@tag=\"00100010\"]/PersonName/Phonetic/GivenName");
   ASSERT_EQ(utf8.substr(37), node.node().text().as_string());
 #endif  
 }


=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+orthanc (1.5.6+dfsg-1) unstable; urgency=medium
+
+  * New upstream version
+
+ -- Sebastien Jodogne <s.jodogne at gmail.com>  Sat, 02 Mar 2019 09:15:35 +0100
+
 orthanc (1.5.5+dfsg-1) unstable; urgency=medium
 
   * New upstream version


=====================================
debian/control
=====================================
@@ -25,7 +25,7 @@ Build-Depends: cmake,
                uuid-dev,
                zlib1g-dev,
                yui-compressor
-Standards-Version: 4.3.0.2
+Standards-Version: 4.3.0.3
 Vcs-Browser: https://salsa.debian.org/med-team/orthanc
 Vcs-Git: https://salsa.debian.org/med-team/orthanc.git
 Homepage: http://www.orthanc-server.com/


=====================================
debian/docs/Orthanc.1
=====================================
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.8.
-.TH ORTHANC "1" "February 2019" "Orthanc 1.5.5" "User Commands"
+.TH ORTHANC "1" "March 2019" "Orthanc 1.5.6" "User Commands"
 .SH NAME
 Orthanc \- Lightweight, RESTful DICOM server for healthcare and medical research
 .SH SYNOPSIS


=====================================
debian/docs/OrthancRecoverCompressedFile.8
=====================================
@@ -1,4 +1,4 @@
-.TH ORTHANC "8" "February 2019" "Orthanc 1.5.5" "System Administration tools and Deamons"
+.TH ORTHANC "8" "March 2019" "Orthanc 1.5.6" "System Administration tools and Deamons"
 .SH NAME
 Orthanc \- Lightweight, RESTful DICOM server for healthcare and medical research
 .SH SYNOPSIS



View it on GitLab: https://salsa.debian.org/med-team/orthanc/compare/b3883c45217ef43d59377ea3c2392c46dcba5bec...b02677aa707fccfc96c783bc7863cd9b10a54da6

-- 
View it on GitLab: https://salsa.debian.org/med-team/orthanc/compare/b3883c45217ef43d59377ea3c2392c46dcba5bec...b02677aa707fccfc96c783bc7863cd9b10a54da6
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/20190302/47f87a27/attachment-0001.html>


More information about the debian-med-commit mailing list