Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package orthanc-python for openSUSE:Factory 
checked in at 2021-01-27 18:57:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/orthanc-python (Old)
 and      /work/SRC/openSUSE:Factory/.orthanc-python.new.28504 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "orthanc-python"

Wed Jan 27 18:57:39 2021 rev:2 rq:866879 version:3.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/orthanc-python/orthanc-python.changes    
2020-12-30 17:12:44.936708904 +0100
+++ /work/SRC/openSUSE:Factory/.orthanc-python.new.28504/orthanc-python.changes 
2021-01-27 18:57:41.664383215 +0100
@@ -1,0 +2,7 @@
+Mon Jan 25 14:53:58 UTC 2021 - Axel Braun <axel.br...@gmx.de>
+
+- verion 3.1
+* Fix possible deadlock with "orthanc.RegisterOnChangeCallback()"
+* During Orthanc shutdown, wait for all the pending events to have been 
processed 
+
+-------------------------------------------------------------------

Old:
----
  OrthancPython-3.0.tar.gz

New:
----
  OrthancPython-3.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ orthanc-python.spec ++++++
--- /var/tmp/diff_new_pack.CBCbVz/_old  2021-01-27 18:57:42.260384136 +0100
+++ /var/tmp/diff_new_pack.CBCbVz/_new  2021-01-27 18:57:42.264384143 +0100
@@ -2,7 +2,7 @@
 # spec file for package orthanc-python
 #
 # Copyright (c) 2020 SUSE LLC
-# Copyright (c) 2020 Dr. Axel Braun
+# Copyright (c) 2020-2021 Dr. Axel Braun
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 Summary:        Python plugin for Orthanc
 License:        AGPL-3.0-or-later
 Group:          Productivity/Graphics/Viewers
-Version:        3.0
+Version:        3.1
 Release:        0
 URL:            https://orthanc-server.com
 Source0:        
https://www.orthanc-server.com/downloads/get.php?path=/plugin-python/OrthancPython-%{version}.tar.gz

++++++ OrthancPython-3.0.tar.gz -> OrthancPython-3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/.hg_archival.txt 
new/OrthancPython-3.1/.hg_archival.txt
--- old/OrthancPython-3.0/.hg_archival.txt      2020-12-09 17:30:15.000000000 
+0100
+++ new/OrthancPython-3.1/.hg_archival.txt      2021-01-22 10:08:17.000000000 
+0100
@@ -1,6 +1,6 @@
 repo: 7ed502b17b8f54de8885d96a413c9679f694ad4b
-node: 0dbc1360e8293e80275d5033ead5a8ee8fd57a24
-branch: OrthancPython-3.0
+node: 950c1fb892ad8f990a64c844ae180ca018d2ba84
+branch: OrthancPython-3.1
 latesttag: null
-latesttagdistance: 52
-changessincelatesttag: 55
+latesttagdistance: 58
+changessincelatesttag: 61
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/CMakeLists.txt 
new/OrthancPython-3.1/CMakeLists.txt
--- old/OrthancPython-3.0/CMakeLists.txt        2020-12-09 17:30:15.000000000 
+0100
+++ new/OrthancPython-3.1/CMakeLists.txt        2021-01-22 10:08:17.000000000 
+0100
@@ -1,13 +1,13 @@
 cmake_minimum_required(VERSION 2.8)
 project(OrthancPython)
 
-set(PLUGIN_VERSION "3.0")
+set(PLUGIN_VERSION "3.1")
 
 if (PLUGIN_VERSION STREQUAL "mainline")
   set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "mainline")
   set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "hg")
 else()
-  set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "1.8.1")
+  set(ORTHANC_FRAMEWORK_DEFAULT_VERSION "1.8.2")
   set(ORTHANC_FRAMEWORK_DEFAULT_SOURCE "web")
 endif()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/CodeAnalysis/Class.mustache 
new/OrthancPython-3.1/CodeAnalysis/Class.mustache
--- old/OrthancPython-3.0/CodeAnalysis/Class.mustache   2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/CodeAnalysis/Class.mustache   2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/CodeAnalysis/Enumeration.mustache 
new/OrthancPython-3.1/CodeAnalysis/Enumeration.mustache
--- old/OrthancPython-3.0/CodeAnalysis/Enumeration.mustache     2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/CodeAnalysis/Enumeration.mustache     2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/CodeAnalysis/GlobalFunctions.mustache 
new/OrthancPython-3.1/CodeAnalysis/GlobalFunctions.mustache
--- old/OrthancPython-3.0/CodeAnalysis/GlobalFunctions.mustache 2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/CodeAnalysis/GlobalFunctions.mustache 2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/CodeAnalysis/ParseOrthancSDK.py 
new/OrthancPython-3.1/CodeAnalysis/ParseOrthancSDK.py
--- old/OrthancPython-3.0/CodeAnalysis/ParseOrthancSDK.py       2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/CodeAnalysis/ParseOrthancSDK.py       2021-01-22 
10:08:17.000000000 +0100
@@ -2,7 +2,7 @@
 
 ##
 ## Python plugin for Orthanc
-## Copyright (C) 2017-2020 Osimis S.A., Belgium
+## Copyright (C) 2020-2021 Osimis S.A., Belgium
 ##
 ## This program is free software: you can redistribute it and/or
 ## modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/CodeAnalysis/sdk.cpp.mustache 
new/OrthancPython-3.1/CodeAnalysis/sdk.cpp.mustache
--- old/OrthancPython-3.0/CodeAnalysis/sdk.cpp.mustache 2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/CodeAnalysis/sdk.cpp.mustache 2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/CodeAnalysis/sdk.h.mustache 
new/OrthancPython-3.1/CodeAnalysis/sdk.h.mustache
--- old/OrthancPython-3.0/CodeAnalysis/sdk.h.mustache   2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/CodeAnalysis/sdk.h.mustache   2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/NEWS new/OrthancPython-3.1/NEWS
--- old/OrthancPython-3.0/NEWS  2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/NEWS  2021-01-22 10:08:17.000000000 +0100
@@ -2,6 +2,13 @@
 ===============================
 
 
+Version 3.1 (2021-01-22)
+========================
+
+* Fix possible deadlock with "orthanc.RegisterOnChangeCallback()"
+* During Orthanc shutdown, wait for all the pending events to have been 
processed
+
+
 Version 3.0 (2020-12-09)
 ========================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/CMake/AutoGeneratedCode.cmake 
new/OrthancPython-3.1/Resources/Orthanc/CMake/AutoGeneratedCode.cmake
--- old/OrthancPython-3.0/Resources/Orthanc/CMake/AutoGeneratedCode.cmake       
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Resources/Orthanc/CMake/AutoGeneratedCode.cmake       
2021-01-22 10:08:17.000000000 +0100
@@ -1,7 +1,7 @@
 # Orthanc - A Lightweight, RESTful DICOM Store
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
+# Copyright (C) 2017-2021 Osimis S.A., Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/CMake/Compiler.cmake 
new/OrthancPython-3.1/Resources/Orthanc/CMake/Compiler.cmake
--- old/OrthancPython-3.0/Resources/Orthanc/CMake/Compiler.cmake        
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Resources/Orthanc/CMake/Compiler.cmake        
2021-01-22 10:08:17.000000000 +0100
@@ -1,7 +1,7 @@
 # Orthanc - A Lightweight, RESTful DICOM Store
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
+# Copyright (C) 2017-2021 Osimis S.A., Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake 
new/OrthancPython-3.1/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake
--- 
old/OrthancPython-3.0/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake    
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake    
    2021-01-22 10:08:17.000000000 +0100
@@ -1,7 +1,7 @@
 # Orthanc - A Lightweight, RESTful DICOM Store
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
+# Copyright (C) 2017-2021 Osimis S.A., Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public License
@@ -120,6 +120,8 @@
         set(ORTHANC_FRAMEWORK_MD5 "f8ec7554ef5d23ea4ce474b1e8214de9")
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.1")
         set(ORTHANC_FRAMEWORK_MD5 "db094f96399cbe8b9bbdbce34884c220")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.2")
+        set(ORTHANC_FRAMEWORK_MD5 "8bfa10e66c9931e74111be0bfb1f4548")
 
       # Below this point are development snapshots that were used to
       # release some plugin, before an official release of the Orthanc
@@ -134,6 +136,12 @@
       elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "82652c5fc04f")
         # Stone Web viewer 1.0 (framework pre-1.8.1)
         set(ORTHANC_FRAMEWORK_MD5 "d77331d68917e66a3f4f9b807bbdab7f")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "4a3ba4bf4ba7")
+        # PostgreSQL 3.3 (framework pre-1.8.2)
+        set(ORTHANC_FRAMEWORK_MD5 "2d82bddf06f9cfe82095495cb3b8abde")
+      elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "23ad1b9c7800")
+        # For "Toolbox::ReadJson()" and "Toolbox::Write{...}Json()" (pre-1.9.0)
+        set(ORTHANC_FRAMEWORK_MD5 "9af92080e57c60dd288eba46ce606c00")
       endif()
     endif()
   endif()
@@ -529,6 +537,16 @@
       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()
   endif()
 
   # Look for Orthanc framework shared library
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/CMake/DownloadPackage.cmake 
new/OrthancPython-3.1/Resources/Orthanc/CMake/DownloadPackage.cmake
--- old/OrthancPython-3.0/Resources/Orthanc/CMake/DownloadPackage.cmake 
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Resources/Orthanc/CMake/DownloadPackage.cmake 
2021-01-22 10:08:17.000000000 +0100
@@ -1,7 +1,7 @@
 # Orthanc - A Lightweight, RESTful DICOM Store
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
+# Copyright (C) 2017-2021 Osimis S.A., Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp 
new/OrthancPython-3.1/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp
--- old/OrthancPython-3.0/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp 
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp 
2021-01-22 10:08:17.000000000 +0100
@@ -2,7 +2,7 @@
  * Orthanc - A Lightweight, RESTful DICOM Store
  * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
  * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2017-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -24,9 +24,33 @@
 #include <boost/algorithm/string/predicate.hpp>
 #include <boost/move/unique_ptr.hpp>
 #include <boost/thread.hpp>
+
+
 #include <json/reader.h>
+#include <json/version.h>
 #include <json/writer.h>
 
+#if !defined(JSONCPP_VERSION_MAJOR) || !defined(JSONCPP_VERSION_MINOR)
+#  error Cannot access the version of JsonCpp
+#endif
+
+
+/**
+ * We use deprecated "Json::Reader", "Json::StyledWriter" and
+ * "Json::FastWriter" if JsonCpp < 1.7.0. This choice is rather
+ * arbitrary, but if Json >= 1.9.0, gcc generates explicit deprecation
+ * warnings (clang was warning in earlier versions). For reference,
+ * these classes seem to have been deprecated since JsonCpp 1.4.0 (on
+ * February 2015) by the following changeset:
+ * 
https://github.com/open-source-parsers/jsoncpp/commit/8df98f6112890d6272734975dd6d70cf8999bb22
+ **/
+#if (JSONCPP_VERSION_MAJOR >= 2 ||                                      \
+     (JSONCPP_VERSION_MAJOR == 1 && JSONCPP_VERSION_MINOR >= 8))
+#  define JSONCPP_USE_DEPRECATED 0
+#else
+#  define JSONCPP_USE_DEPRECATED 1
+#endif
+
 
 #if !ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 2, 0)
 static const OrthancPluginErrorCode OrthancPluginErrorCode_NullPointer = 
OrthancPluginErrorCode_Plugin;
@@ -202,10 +226,7 @@
       ORTHANC_PLUGINS_THROW_EXCEPTION(InternalError);
     }
 
-    const char* tmp = reinterpret_cast<const char*>(buffer_.data);
-
-    Json::Reader reader;
-    if (!reader.parse(tmp, tmp + buffer_.size, target))
+    if (!ReadJson(target, buffer_.data, buffer_.size))
     {
       LogError("Cannot convert some memory buffer to JSON");
       ORTHANC_PLUGINS_THROW_EXCEPTION(BadFileFormat);
@@ -292,12 +313,102 @@
   }
 
 
+  static bool ReadJsonInternal(Json::Value& target,
+                               const void* buffer,
+                               size_t size,
+                               bool collectComments)
+  {
+#if JSONCPP_USE_DEPRECATED == 1
+    Json::Reader reader;
+    return reader.parse(reinterpret_cast<const char*>(buffer),
+                        reinterpret_cast<const char*>(buffer) + size, target, 
collectComments);
+#else
+    Json::CharReaderBuilder builder;
+    builder.settings_["collectComments"] = collectComments;
+    
+    const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
+    assert(reader.get() != NULL);
+    
+    JSONCPP_STRING err;
+    if (reader->parse(reinterpret_cast<const char*>(buffer),
+                      reinterpret_cast<const char*>(buffer) + size, &target, 
&err))
+    {
+      return true;
+    }
+    else
+    {
+      LogError("Cannot parse JSON: " + std::string(err));
+      return false;
+    }
+#endif
+  }
+
+
+  bool ReadJson(Json::Value& target,
+                const std::string& source)
+  {
+    return ReadJson(target, source.empty() ? NULL : source.c_str(), 
source.size());
+  }
+  
+
+  bool ReadJson(Json::Value& target,
+                const void* buffer,
+                size_t size)
+  {
+    return ReadJsonInternal(target, buffer, size, true);
+  }
+  
+
+  bool ReadJsonWithoutComments(Json::Value& target,
+                               const std::string& source)
+  {
+    return ReadJsonWithoutComments(target, source.empty() ? NULL : 
source.c_str(), source.size());
+  }
+  
+
+  bool ReadJsonWithoutComments(Json::Value& target,
+                               const void* buffer,
+                               size_t size)
+  {
+    return ReadJsonInternal(target, buffer, size, false);
+  }
+
+
+  void WriteFastJson(std::string& target,
+                     const Json::Value& source)
+  {
+#if JSONCPP_USE_DEPRECATED == 1
+    Json::FastWriter writer;
+    target = writer.write(source);
+#else
+    Json::StreamWriterBuilder builder;
+    builder.settings_["indentation"] = "";
+    target = Json::writeString(builder, source);
+#endif
+  }
+  
+
+  void WriteStyledJson(std::string& target,
+                       const Json::Value& source)
+  {
+#if JSONCPP_USE_DEPRECATED == 1
+    Json::StyledWriter writer;
+    target = writer.write(source);
+#else
+    Json::StreamWriterBuilder builder;
+    builder.settings_["indentation"] = "   ";
+    target = Json::writeString(builder, source);
+#endif
+  }
+
+
   bool MemoryBuffer::RestApiPost(const std::string& uri,
                                  const Json::Value& body,
                                  bool applyPlugins)
   {
-    Json::FastWriter writer;
-    return RestApiPost(uri, writer.write(body), applyPlugins);
+    std::string s;
+    WriteFastJson(s, body);
+    return RestApiPost(uri, s, applyPlugins);
   }
 
 
@@ -305,8 +416,9 @@
                                 const Json::Value& body,
                                 bool applyPlugins)
   {
-    Json::FastWriter writer;
-    return RestApiPut(uri, writer.write(body), applyPlugins);
+    std::string s;
+    WriteFastJson(s, body);
+    return RestApiPut(uri, s, applyPlugins);
   }
 
 
@@ -315,8 +427,8 @@
   {
     Clear();
 
-    Json::FastWriter writer;
-    std::string s = writer.write(tags);
+    std::string s;
+    WriteFastJson(s, tags);
 
     Check(OrthancPluginCreateDicom(GetGlobalContext(), &buffer_, s.c_str(), 
NULL, flags));
   }
@@ -327,8 +439,8 @@
   {
     Clear();
 
-    Json::FastWriter writer;
-    std::string s = writer.write(tags);
+    std::string s;
+    WriteFastJson(s, tags);
 
     Check(OrthancPluginCreateDicom(GetGlobalContext(), &buffer_, s.c_str(), 
pixelData.GetObject(), flags));
   }
@@ -390,8 +502,7 @@
       ORTHANC_PLUGINS_THROW_EXCEPTION(InternalError);
     }
 
-    Json::Reader reader;
-    if (!reader.parse(str_, target))
+    if (!ReadJson(target, str_))
     {
       LogError("Cannot convert some memory buffer to JSON");
       ORTHANC_PLUGINS_THROW_EXCEPTION(BadFileFormat);
@@ -1190,19 +1301,16 @@
 #endif /* HAS_ORTHANC_PLUGIN_FIND_MATCHER == 1 */
 
   void AnswerJson(const Json::Value& value,
-                  OrthancPluginRestOutput* output
-    )
+                  OrthancPluginRestOutput* output)
   {
-    Json::StyledWriter writer;
-    std::string bodyString = writer.write(value);
-
+    std::string bodyString;
+    WriteStyledJson(bodyString, value);    
     OrthancPluginAnswerBuffer(GetGlobalContext(), output, bodyString.c_str(), 
bodyString.size(), "application/json");
   }
 
   void AnswerString(const std::string& answer,
                     const char* mimeType,
-                    OrthancPluginRestOutput* output
-    )
+                    OrthancPluginRestOutput* output)
   {
     OrthancPluginAnswerBuffer(GetGlobalContext(), output, answer.c_str(), 
answer.size(), mimeType);
   }
@@ -1324,8 +1432,9 @@
                    const Json::Value& body,
                    bool applyPlugins)
   {
-    Json::FastWriter writer;
-    return RestApiPost(result, uri, writer.write(body), applyPlugins);
+    std::string s;
+    WriteFastJson(s, body);
+    return RestApiPost(result, uri, s, applyPlugins);
   }
 
 
@@ -1357,8 +1466,9 @@
                   const Json::Value& body,
                   bool applyPlugins)
   {
-    Json::FastWriter writer;
-    return RestApiPut(result, uri, writer.write(body), applyPlugins);
+    std::string s;
+    WriteFastJson(s, body);
+    return RestApiPut(result, uri, s, applyPlugins);
   }
 
 
@@ -2020,8 +2130,7 @@
     }
     else
     {
-      Json::FastWriter writer;
-      content_ = writer.write(content);
+      WriteFastJson(content_, content);
     }
   }
 
@@ -2041,8 +2150,7 @@
     }
     else
     {
-      Json::FastWriter writer;
-      serialized_ = writer.write(serialized);
+      WriteFastJson(serialized_, serialized);
       hasSerialized_ = true;
     }
   }
@@ -2902,8 +3010,7 @@
     std::string body;
     Execute(answerHeaders, body);
     
-    Json::Reader reader;
-    if (!reader.parse(body, answerBody))
+    if (!ReadJson(answerBody, body))
     {
       LogError("Cannot convert HTTP answer body to JSON");
       ORTHANC_PLUGINS_THROW_EXCEPTION(BadFileFormat);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h 
new/OrthancPython-3.1/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h
--- old/OrthancPython-3.0/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h   
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h   
2021-01-22 10:08:17.000000000 +0100
@@ -2,7 +2,7 @@
  * Orthanc - A Lightweight, RESTful DICOM Store
  * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
  * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2017-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -476,6 +476,26 @@
 #endif
 
 
+  bool ReadJson(Json::Value& target,
+                const std::string& source);
+  
+  bool ReadJson(Json::Value& target,
+                const void* buffer,
+                size_t size);
+
+  bool ReadJsonWithoutComments(Json::Value& target,
+                               const std::string& source);  
+
+  bool ReadJsonWithoutComments(Json::Value& target,
+                               const void* buffer,
+                               size_t size);
+
+  void WriteFastJson(std::string& target,
+                     const Json::Value& source);
+
+  void WriteStyledJson(std::string& target,
+                       const Json::Value& source);
+
   bool RestApiGet(Json::Value& result,
                   const std::string& uri,
                   bool applyPlugins);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/Plugins/OrthancPluginException.h 
new/OrthancPython-3.1/Resources/Orthanc/Plugins/OrthancPluginException.h
--- old/OrthancPython-3.0/Resources/Orthanc/Plugins/OrthancPluginException.h    
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Resources/Orthanc/Plugins/OrthancPluginException.h    
2021-01-22 10:08:17.000000000 +0100
@@ -2,7 +2,7 @@
  * Orthanc - A Lightweight, RESTful DICOM Store
  * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
  * Department, University Hospital of Liege, Belgium
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2017-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/Plugins/OrthancPluginsExports.cmake 
new/OrthancPython-3.1/Resources/Orthanc/Plugins/OrthancPluginsExports.cmake
--- old/OrthancPython-3.0/Resources/Orthanc/Plugins/OrthancPluginsExports.cmake 
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Resources/Orthanc/Plugins/OrthancPluginsExports.cmake 
2021-01-22 10:08:17.000000000 +0100
@@ -1,7 +1,7 @@
 # Orthanc - A Lightweight, RESTful DICOM Store
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
+# Copyright (C) 2017-2021 Osimis S.A., Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU General Public License as
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/Toolchains/LinuxStandardBaseToolchain.cmake
 
new/OrthancPython-3.1/Resources/Orthanc/Toolchains/LinuxStandardBaseToolchain.cmake
--- 
old/OrthancPython-3.0/Resources/Orthanc/Toolchains/LinuxStandardBaseToolchain.cmake
 2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Resources/Orthanc/Toolchains/LinuxStandardBaseToolchain.cmake
 2021-01-22 10:08:17.000000000 +0100
@@ -1,7 +1,7 @@
 # Orthanc - A Lightweight, RESTful DICOM Store
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
+# Copyright (C) 2017-2021 Osimis S.A., Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake 
new/OrthancPython-3.1/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake
--- 
old/OrthancPython-3.0/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake  
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain32.cmake  
    2021-01-22 10:08:17.000000000 +0100
@@ -1,7 +1,7 @@
 # Orthanc - A Lightweight, RESTful DICOM Store
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
+# Copyright (C) 2017-2021 Osimis S.A., Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake 
new/OrthancPython-3.1/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake
--- 
old/OrthancPython-3.0/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake  
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Resources/Orthanc/Toolchains/MinGW-W64-Toolchain64.cmake  
    2021-01-22 10:08:17.000000000 +0100
@@ -1,7 +1,7 @@
 # Orthanc - A Lightweight, RESTful DICOM Store
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
+# Copyright (C) 2017-2021 Osimis S.A., Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Resources/Orthanc/Toolchains/MinGWToolchain.cmake 
new/OrthancPython-3.1/Resources/Orthanc/Toolchains/MinGWToolchain.cmake
--- old/OrthancPython-3.0/Resources/Orthanc/Toolchains/MinGWToolchain.cmake     
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Resources/Orthanc/Toolchains/MinGWToolchain.cmake     
2021-01-22 10:08:17.000000000 +0100
@@ -1,7 +1,7 @@
 # Orthanc - A Lightweight, RESTful DICOM Store
 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
 # Department, University Hospital of Liege, Belgium
-# Copyright (C) 2017-2020 Osimis S.A., Belgium
+# Copyright (C) 2017-2021 Osimis S.A., Belgium
 #
 # This program is free software: you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/Autogenerated/sdk.cpp 
new/OrthancPython-3.1/Sources/Autogenerated/sdk.cpp
--- old/OrthancPython-3.0/Sources/Autogenerated/sdk.cpp 2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/Autogenerated/sdk.cpp 2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/Autogenerated/sdk.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk.h
--- old/OrthancPython-3.0/Sources/Autogenerated/sdk.h   2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/Autogenerated/sdk.h   2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_GlobalFunctions.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_GlobalFunctions.impl.h
--- old/OrthancPython-3.0/Sources/Autogenerated/sdk_GlobalFunctions.impl.h      
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/Autogenerated/sdk_GlobalFunctions.impl.h      
2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginChangeType.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginChangeType.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginChangeType.impl.h  
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginChangeType.impl.h  
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginCompressionType.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginCompressionType.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginCompressionType.impl.h
 2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginCompressionType.impl.h
 2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginConstraintType.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginConstraintType.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginConstraintType.impl.h
  2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginConstraintType.impl.h
  2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginContentType.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginContentType.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginContentType.impl.h 
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginContentType.impl.h 
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginCreateDicomFlags.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginCreateDicomFlags.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginCreateDicomFlags.impl.h
        2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginCreateDicomFlags.impl.h
        2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomInstance.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomInstance.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomInstance.impl.h
   2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomInstance.impl.h
   2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomToJsonFlags.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomToJsonFlags.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomToJsonFlags.impl.h
        2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomToJsonFlags.impl.h
        2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomToJsonFormat.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomToJsonFormat.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomToJsonFormat.impl.h
       2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomToJsonFormat.impl.h
       2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomWebBinaryMode.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomWebBinaryMode.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomWebBinaryMode.impl.h
      2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomWebBinaryMode.impl.h
      2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomWebNode.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomWebNode.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginDicomWebNode.impl.h
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginDicomWebNode.impl.h
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginErrorCode.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginErrorCode.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginErrorCode.impl.h   
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginErrorCode.impl.h   
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginFindAnswers.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginFindAnswers.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginFindAnswers.impl.h 
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginFindAnswers.impl.h 
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginFindMatcher.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginFindMatcher.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginFindMatcher.impl.h 
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginFindMatcher.impl.h 
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginFindQuery.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginFindQuery.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginFindQuery.impl.h   
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginFindQuery.impl.h   
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginHttpMethod.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginHttpMethod.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginHttpMethod.impl.h  
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginHttpMethod.impl.h  
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginIdentifierConstraint.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginIdentifierConstraint.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginIdentifierConstraint.impl.h
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginIdentifierConstraint.impl.h
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginImage.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginImage.impl.h
--- old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginImage.impl.h   
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginImage.impl.h   
2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginImageFormat.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginImageFormat.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginImageFormat.impl.h 
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginImageFormat.impl.h 
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginInstanceOrigin.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginInstanceOrigin.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginInstanceOrigin.impl.h
  2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginInstanceOrigin.impl.h
  2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginJob.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginJob.impl.h
--- old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginJob.impl.h     
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginJob.impl.h     
2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginJobStepStatus.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginJobStepStatus.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginJobStepStatus.impl.h
   2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginJobStepStatus.impl.h
   2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginJobStopReason.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginJobStopReason.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginJobStopReason.impl.h
   2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginJobStopReason.impl.h
   2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginMetricsType.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginMetricsType.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginMetricsType.impl.h 
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginMetricsType.impl.h 
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginPeers.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginPeers.impl.h
--- old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginPeers.impl.h   
2020-12-09 17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginPeers.impl.h   
2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginPixelFormat.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginPixelFormat.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginPixelFormat.impl.h 
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginPixelFormat.impl.h 
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginResourceType.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginResourceType.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginResourceType.impl.h
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginResourceType.impl.h
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginRestOutput.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginRestOutput.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginRestOutput.impl.h  
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginRestOutput.impl.h  
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginServerChunkedRequestReader.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginServerChunkedRequestReader.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginServerChunkedRequestReader.impl.h
      2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginServerChunkedRequestReader.impl.h
      2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginStorageArea.impl.h 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginStorageArea.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginStorageArea.impl.h 
    2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginStorageArea.impl.h 
    2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginStorageCommitmentFailureReason.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginStorageCommitmentFailureReason.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginStorageCommitmentFailureReason.impl.h
  2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginStorageCommitmentFailureReason.impl.h
  2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginValueRepresentation.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginValueRepresentation.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginValueRepresentation.impl.h
     2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginValueRepresentation.impl.h
     2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginWorklistAnswers.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginWorklistAnswers.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginWorklistAnswers.impl.h
 2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginWorklistAnswers.impl.h
 2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginWorklistQuery.impl.h
 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginWorklistQuery.impl.h
--- 
old/OrthancPython-3.0/Sources/Autogenerated/sdk_OrthancPluginWorklistQuery.impl.h
   2020-12-09 17:30:15.000000000 +0100
+++ 
new/OrthancPython-3.1/Sources/Autogenerated/sdk_OrthancPluginWorklistQuery.impl.h
   2021-01-22 10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/IncomingHttpRequestFilter.cpp 
new/OrthancPython-3.1/Sources/IncomingHttpRequestFilter.cpp
--- old/OrthancPython-3.0/Sources/IncomingHttpRequestFilter.cpp 2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/IncomingHttpRequestFilter.cpp 2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/IncomingHttpRequestFilter.h 
new/OrthancPython-3.1/Sources/IncomingHttpRequestFilter.h
--- old/OrthancPython-3.0/Sources/IncomingHttpRequestFilter.h   2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/IncomingHttpRequestFilter.h   2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/OnChangeCallback.cpp 
new/OrthancPython-3.1/Sources/OnChangeCallback.cpp
--- old/OrthancPython-3.0/Sources/OnChangeCallback.cpp  2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/OnChangeCallback.cpp  2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
@@ -70,6 +70,8 @@
 
 
 
+// This corresponds to a simplified, standalone version of
+// "Orthanc::SharedMessageQueue" from the Orthanc framework
 class PendingChanges : public boost::noncopyable
 {
 private:
@@ -133,6 +135,17 @@
 static PyObject*       changesCallback_ = NULL;
 
 
+static void StopThread()
+{
+  stopping_ = true;
+
+  if (changesThread_.joinable())
+  {
+    changesThread_.join();
+  }
+}
+
+
 static void ChangesWorker()
 {
   while (!stopping_)
@@ -181,9 +194,11 @@
                                                OrthancPluginResourceType 
resourceType,
                                                const char* resourceId)
 {
+  pendingChanges_.Enqueue(changeType, resourceType, resourceId);
+
+  if (changeType == OrthancPluginChangeType_OrthancStopped)
   {
-    PythonLock lock;
-    pendingChanges_.Enqueue(changeType, resourceType, resourceId);
+    StopThread();
   }
   
   return OrthancPluginErrorCode_Success;
@@ -229,12 +244,7 @@
 
 void FinalizeOnChangeCallback()
 {
-  stopping_ = true;
-
-  if (changesThread_.joinable())
-  {
-    changesThread_.join();
-  }
+  StopThread();
 
   {
     PythonLock lock;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/OnChangeCallback.h 
new/OrthancPython-3.1/Sources/OnChangeCallback.h
--- old/OrthancPython-3.0/Sources/OnChangeCallback.h    2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/OnChangeCallback.h    2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/OrthancPython-3.0/Sources/OnStoredInstanceCallback.cpp 
new/OrthancPython-3.1/Sources/OnStoredInstanceCallback.cpp
--- old/OrthancPython-3.0/Sources/OnStoredInstanceCallback.cpp  2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/OnStoredInstanceCallback.cpp  2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/OnStoredInstanceCallback.h 
new/OrthancPython-3.1/Sources/OnStoredInstanceCallback.h
--- old/OrthancPython-3.0/Sources/OnStoredInstanceCallback.h    2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/OnStoredInstanceCallback.h    2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/Plugin.cpp 
new/OrthancPython-3.1/Sources/Plugin.cpp
--- old/OrthancPython-3.0/Sources/Plugin.cpp    2020-12-09 17:30:15.000000000 
+0100
+++ new/OrthancPython-3.1/Sources/Plugin.cpp    2021-01-22 10:08:17.000000000 
+0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonFunction.cpp 
new/OrthancPython-3.1/Sources/PythonFunction.cpp
--- old/OrthancPython-3.0/Sources/PythonFunction.cpp    2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonFunction.cpp    2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonFunction.h 
new/OrthancPython-3.1/Sources/PythonFunction.h
--- old/OrthancPython-3.0/Sources/PythonFunction.h      2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonFunction.h      2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonHeaderWrapper.h 
new/OrthancPython-3.1/Sources/PythonHeaderWrapper.h
--- old/OrthancPython-3.0/Sources/PythonHeaderWrapper.h 2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonHeaderWrapper.h 2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonLock.cpp 
new/OrthancPython-3.1/Sources/PythonLock.cpp
--- old/OrthancPython-3.0/Sources/PythonLock.cpp        2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonLock.cpp        2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonLock.h 
new/OrthancPython-3.1/Sources/PythonLock.h
--- old/OrthancPython-3.0/Sources/PythonLock.h  2020-12-09 17:30:15.000000000 
+0100
+++ new/OrthancPython-3.1/Sources/PythonLock.h  2021-01-22 10:08:17.000000000 
+0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonModule.cpp 
new/OrthancPython-3.1/Sources/PythonModule.cpp
--- old/OrthancPython-3.0/Sources/PythonModule.cpp      2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonModule.cpp      2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonModule.h 
new/OrthancPython-3.1/Sources/PythonModule.h
--- old/OrthancPython-3.0/Sources/PythonModule.h        2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonModule.h        2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
 2 * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonObject.cpp 
new/OrthancPython-3.1/Sources/PythonObject.cpp
--- old/OrthancPython-3.0/Sources/PythonObject.cpp      2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonObject.cpp      2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonObject.h 
new/OrthancPython-3.1/Sources/PythonObject.h
--- old/OrthancPython-3.0/Sources/PythonObject.h        2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonObject.h        2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonString.cpp 
new/OrthancPython-3.1/Sources/PythonString.cpp
--- old/OrthancPython-3.0/Sources/PythonString.cpp      2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonString.cpp      2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/PythonString.h 
new/OrthancPython-3.1/Sources/PythonString.h
--- old/OrthancPython-3.0/Sources/PythonString.h        2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/PythonString.h        2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/RestCallbacks.cpp 
new/OrthancPython-3.1/Sources/RestCallbacks.cpp
--- old/OrthancPython-3.0/Sources/RestCallbacks.cpp     2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/RestCallbacks.cpp     2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/OrthancPython-3.0/Sources/RestCallbacks.h 
new/OrthancPython-3.1/Sources/RestCallbacks.h
--- old/OrthancPython-3.0/Sources/RestCallbacks.h       2020-12-09 
17:30:15.000000000 +0100
+++ new/OrthancPython-3.1/Sources/RestCallbacks.h       2021-01-22 
10:08:17.000000000 +0100
@@ -1,6 +1,6 @@
 /**
  * Python plugin for Orthanc
- * Copyright (C) 2017-2020 Osimis S.A., Belgium
+ * Copyright (C) 2020-2021 Osimis S.A., Belgium
  *
  * This program is free software: you can redistribute it and/or
  * modify it under the terms of the GNU Affero General Public License

Reply via email to