Mercurial > hg > orthanc
view NEWS @ 1768:70f544f9c38f
fix possible deadlock in custom database plugins
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 09 Nov 2015 17:39:42 +0100 |
parents | 57b9e6890482 |
children | 53e045b5a8ec |
line wrap: on
line source
Pending changes in the mainline =============================== * Full indexation of the patient/study tags to speed up searches and C-Find * Add ".dcm" suffix to files in ZIP archives (cf. URI ".../archive") * "/tools/create-dicom": Support of binary tags encoded using data URI scheme * "/tools/create-dicom": Support of hierarchical structures (creation of sequences) * "/modify" can insert/modify sequences * "/series/.../ordered-slices" to order the slices of a 2D+t or 3D image * New URI "/tools/shutdown" to stop Orthanc from the REST API * New URIs for attachments: ".../compress", ".../uncompress" and ".../is-compressed" * New configuration option: "Dictionary" to declare custom DICOM tags Plugins ------- * New function "OrthancPluginRegisterErrorCode()" to declare custom error codes * New function "OrthancPluginRegisterDictionaryTag()" to declare custom DICOM tags * New "OrthancStarted" and "OrthancStopped" events in change callbacks Lua --- * Optional argument "keepStrings" in "DumpJson()" Maintenance ----------- * Full refactoring of the searching features * C-Move SCP for studies using AccessionNumber tag * Fix issue 4 (C-Store Association not renegotiated on Specific-to-specific transfer syntax change) * "/system" URI gives information about the plugins used for storage area and DB back-end * Plugin callbacks should now return explicit "OrthancPluginErrorCode" instead of integers * "/tools/create-dicom" can create tags with unknown VR * "--logdir" flag creates a single log file instead of 3 separate files for errors/warnings/infos * "--errors" flag lists the error codes that could be returned by Orthanc * Under Windows, the exit status of Orthanc corresponds to the encountered error code Version 0.9.4 (2015/09/16) ========================== * Preview of PDF files encapsulated in DICOM from Orthanc Explorer * Creation of DICOM files with encapsulated PDF through "/tools/create-dicom" * "limit" and "since" arguments while retrieving DICOM resources in the REST API * Support of "deflate" and "gzip" content-types in HTTP requests * Options to validate peers against CA certificates in HTTPS requests * New configuration option: "HttpTimeout" to set the default timeout for HTTP requests Lua --- * More information about the origin request in the "OnStoredInstance()" and "ReceivedInstanceFilter()" callbacks. WARNING: This can result in incompatibilities wrt. previous versions of Orthanc. * New function "GetOrthancConfiguration()" to get the Orthanc configuration Plugins ------- * New functions to compress/uncompress images using PNG and JPEG * New functions to issue HTTP requests from plugins * New function "OrthancPluginBufferCompression()" to (un)compress memory buffers * New function "OrthancPluginReadFile()" to read files from the filesystem * New function "OrthancPluginWriteFile()" to write files to the filesystem * New function "OrthancPluginGetErrorDescription()" to convert error codes to strings * New function "OrthancPluginSendHttpStatus()" to send HTTP status with a body * New function "OrthancPluginRegisterRestCallbackNoLock()" for high-performance plugins * Plugins have access to explicit error codes * Improvements to the sample "ServeFolders" plugin * Primitives to upgrade the database version in plugins Maintenance ----------- * Many code refactorings * Improved error codes (no more custom descriptions in exceptions) * If error while calling the REST API, the answer body contains description of the error (this feature can be disabled with the "HttpDescribeErrors" option) * Upgrade to curl 7.44.0 for static and Windows builds * Upgrade to libcurl 1.0.2d for static and Windows builds * Depends on libjpeg 9a * Bypass zlib uncompression if "StorageCompression" is enabled and HTTP client supports deflate Version 0.9.3 (2015/08/07) ========================== * C-Echo testing can be triggered from Orthanc Explorer (in the query/retrieve page) * Removal of the dependency upon Google Log, Orthanc now uses its internal logger (use -DENABLE_GOOGLE_LOG=ON to re-enable Google Log) * Upgrade to JsonCpp 0.10.5 for static and Windows builds Version 0.9.2 (2015/08/02) ========================== * Upgrade to Boost 1.58.0 for static and Windows builds * Source code repository moved from Google Code to BitBucket * Inject version information into Windows binaries * Fix access to binary data in HTTP/REST requests by Lua scripts * Fix potential deadlock in the callbacks of plugins Version 0.9.1 (2015/07/02) ========================== General ------- * The configuration can be splitted into several files stored inside the same folder * Custom setting of the local AET during C-Store SCU (both in Lua and in the REST API) * Many code refactorings Lua --- * Access to the REST API of Orthanc (RestApiGet, RestApiPost, RestApiPut, RestApiDelete) * Functions to convert between Lua values and JSON strings: "ParseJson" and "DumpJson" * New events: "OnStablePatient", "OnStableStudy", "OnStableSeries", "Initialize", "Finalize" Plugins ------- * Plugins can retrieve the configuration file directly as a JSON string * Plugins can send answers as multipart messages Fixes ----- * Fix compatibility issues for C-Find SCU to Siemens Syngo.Via modalities SCP * Fix issue 15 (Lua scripts making HTTP requests) * Fix issue 35 (Characters in PatientID string are not protected for C-Find) * Fix issue 37 (Hyphens trigger range query even if datatype does not support ranges) Version 0.9.0 (2015/06/03) ========================== Major ----- * DICOM Query/Retrieve available from Orthanc Explorer * C-Move SCU and C-Find SCU are accessible through the REST API * "?expand" flag for URIs "/patients", "/studies" and "/series" * "/tools/find" URI to search for DICOM resources from REST * Support of FreeBSD * The "Orthanc Client" SDK is now a separate project Minor ----- * Speed-up in Orthanc Explorer for large amount of images * Speed-up of the C-Find SCP server of Orthanc * Allow replacing PatientID/StudyInstanceUID/SeriesInstanceUID from Lua scripts * Option "CaseSensitivePN" to enable case-insensitive C-Find SCP Fixes ----- * Prevent freeze on C-FIND if no DICOM tag is to be returned * Fix slow C-Store SCP on recent versions of Linux, if USE_SYSTEM_DCMTK is set to OFF (http://forum.dcmtk.org/viewtopic.php?f=1&t=4009) * Fix issue 30 (QR response missing "Query/Retrieve Level" (008,0052)) * Fix issue 32 (Cyrillic symbols): Introduction of the "Windows1251" encoding * Plugins now receive duplicated GET arguments in their REST callbacks Version 0.8.6 (2015/02/12) ========================== Major ----- * URIs to get all the parents of a given resource in a single REST call * Instances without PatientID are now allowed * Support of HTTP proxy to access Orthanc peers Minor ----- * Support of Tudor DICOM in Query/Retrieve * More flexible "/modify" and "/anonymize" for single instance * Access to called AET and remote AET from Lua scripts ("OnStoredInstance") * Option "DicomAssociationCloseDelay" to set delay before closing DICOM association * ZIP archives now display the accession number of the studies Plugins ------- * Introspection of plugins (cf. the "/plugins" URI) * Plugins can access the command-line arguments used to launch Orthanc * Plugins can extend Orthanc Explorer with custom JavaScript * Plugins can get/set global properties to save their configuration * Plugins can do REST calls to other plugins (cf. "xxxAfterPlugins()") * Scan of folders for plugins Fixes ----- * Code refactorings * Fix issue 25 (AET with underscore not allowed) * Fix replacement and insertion of private DICOM tags * Fix anonymization generating non-portable DICOM files Version 0.8.5 (2014/11/04) ========================== General ------- * Major speed-up thanks to a new database schema * Plugins can monitor changes through callbacks * Download ZIP + DICOMDIR from Orthanc Explorer * Sample plugin framework to serve static resources (./Plugins/Samples/WebSkeleton/) Fixes ----- * Fix issue 19 (YBR_FULL are decoded incorrectly) * Fix issue 21 (Microsoft Visual Studio precompiled headers) * Fix issue 22 (Error decoding multi-frame instances) * Fix issue 24 (Build fails on OSX when directory has .DS_Store files) * Fix crash when bad HTTP credentials are provided Version 0.8.4 (2014/09/19) ========================== * "/instances-tags" to get the tags of all the child instances of a patient/study/series with a single REST call (bulk tags retrieval) * Configuration/Lua to select the accepted C-Store SCP transfer syntaxes * Fix reporting of errors in Orthanc Explorer when sending images to peers/modalities * Installation of plugin SDK in CMake Version 0.8.3 (2014/09/11) ========================== Major ----- * Creation of ZIP archives for media storage, with DICOMDIR * URIs to get all the children of a given resource in a single REST call * "/tools/lookup" URI to map DICOM UIDs to Orthanc identifiers * Support of index-only mode (using the "StoreDicom" option) * Plugins can implement a custom storage area Minor ----- * Configuration option to enable HTTP Keep-Alive * Configuration option to disable the logging of exported resources in "/exports" * Plugins can retrieve the path to Orthanc and to its configuration file * "/tools/create-dicom" now accepts the "PatientID" DICOM tag (+ updated sample) * Possibility to set HTTP headers from plugins * "LastUpdate" metadata is now always returned for patients, studies and series Maintenance ----------- * Refactoring of HttpOutput ("Content-Length" header is now always sent) * Upgrade to Mongoose 3.8 * Fixes for Visual Studio 2013 and Windows 64bit * Fix issue 16: Handling of "AT" value representations in JSON * Fix issue 17 Version 0.8.2 (2014/08/07) ========================== * Support of the standard text encodings * Hot restart of Orthanc by posting to "/tools/reset" * More fault-tolerant commands in Lua scripts * Parameter to set the default encoding for DICOM files without SpecificCharacterSet * Fix of issue #14 (support of XCode 5.1) * Upgrade to Google Test 1.7.0 Version 0.8.1 (2014/07/29) ========================== General ------- * Access patient module at the study level to cope with PatientID collisions * On-the-fly conversion of JSON to XML according to the HTTP Accept header * C-Echo SCU in the REST API * DICOM conformance statement available at URI "/tools/dicom-conformance" Lua scripts ----------- * Lua scripts can do HTTP requests, and thus can call Web services * Lua scripts can invoke system commands, with CallSystem() Plugins ------- * Lookup for DICOM UIDs in the plugin SDK * Plugins have access to the HTTP headers and can answer with HTTP status codes * Callback to react to the incoming of DICOM instances Fixes ----- * Fix build of Google Log with Visual Studio >= 11.0 * Fix automated generation of the list of resource children in the REST API Version 0.8.0 (2014/07/10) ========================== Major changes ------------- * Routing images with Lua scripts * Introduction of the Orthanc Plugin SDK * Official support of OS X (Darwin) 10.8 Minor changes ------------- * Extraction of tags for the patient/study/series/instance DICOM modules * Extraction of the tags shared by all the instances of a patient/study/series * Options to limit the number of results for an incoming C-FIND query * Support of kFreeBSD * Several code refactorings * Fix OrthancCppClient::GetVoxelSizeZ() Version 0.7.6 (2014/06/11) ========================== * Support of JPEG and JPEG-LS decompression * Download DICOM images as Matlab/Octave arrays * Precompiled headers for Microsoft Visual Studio Version 0.7.5 (2014/05/08) ========================== * Dynamic negotiation of SOP classes for C-Store SCU * Creation of DICOM instances using the REST API * Embedding of images within DICOM instances * Adding/removal/modification of remote modalities/peers through REST * Reuse of the previous SCU connection to avoid unnecessary handshakes * Fix problems with anonymization and modification * Fix missing licensing terms about reuse of some code from DCMTK * Various code refactorings Version 0.7.4 (2014/04/16) ========================== * Switch to openssl-1.0.1g in static builds (cf. Heartbleed exploit) * Switch to boost 1.55.0 in static builds (to solve compiling errors) * Better logging about nonexistent tags * Dcm4Chee manufacturer * Automatic discovering of the path to the DICOM dictionaries * In the "DicomModalities" config, the port number can be a string Version 0.7.3 (2014/02/14) ========================== Major changes ------------- * Fixes in the implementation of the C-FIND handler for Query/Retrieve * Custom attachment of files to patients, studies, series or instances * Access to lowlevel info about the attached files through the REST API * Recover pixel data for more transfer syntaxes (notably JPEG) Minor changes ------------- * AET comparison is now case-insensitive by default * Possibility to disable the HTTP server or the DICOM server * Automatic computation of MD5 hashes for the stored DICOM files * Maintenance tool to recover DICOM files compressed by Orthanc * The newline characters in the configuration file are fixed for Linux * Capture of the SIGTERM signal in Linux Version 0.7.2 (2013/11/08) ========================== * Support of Query/Retrieve from medInria * Accept more transfer syntaxes for C-Store SCP and SCU (notably JPEG) * Create the meta-header when receiving files through C-Store SCP * Fixes and improvements thanks to the static analyzer cppcheck Version 0.7.1 (2013/10/30) ========================== * Use ZIP64 only when required to improve compatibility (cf. issue #7) * Refactoring of the CMake options * Fix for big-endian architectures (RedHat bug #985748) * Use filenames with 8 characters in ZIP files for maximum compatibility * Possibility to build Orthanc inplace (in the source directory) Version 0.7.0 (2013/10/25) ========================== Major changes ------------- * DICOM Query/Retrieve is supported Minor changes ------------- * Possibility to keep the PatientID during an anonymization * Check whether "unzip", "tar" and/or "7-zip" are installed from CMake Version 0.6.2 (2013/10/04) ========================== * Build of the C++ client as a shared library * Improvements and documentation of the C++ client API * Fix of Debian bug #724947 (licensing issue with the SHA-1 library) * Switch to Boost 1.54.0 (cf. issue #9) * "make uninstall" is now possible Version 0.6.1 (2013/09/16) ========================== * Detection of stable patients/studies/series * C-Find SCU at the instance level * Link from modified to original resource in Orthanc Explorer * Fix of issue #8 * Anonymization of the medical alerts tag (0010,2000) Version 0.6.0 (2013/07/16) ========================== Major changes ------------- * Introduction of the C++ client * Send DICOM resources to other Orthanc instances through HTTP * Access to signed images (instances/.../image-int16) (Closes: Debian #716958) Minor changes ------------- * Export of DICOM files to the host filesystem (instances/.../export) * Statistics about patients, studies, series and instances * Link from anonymized to original resource in Orthanc Explorer * Fixes for Red Hat and Debian packaging * Fixes for history in Orthanc Explorer * Fixes for boost::thread, as reported by Cyril Paulus * Fix licensing (Closes: Debian #712038) Metadata -------- * Access to the metadata through the REST API (.../metadata) * Support of user-defined metadata * "LastUpdate" metadata for patients, studies and series * "/tools/now" to be used in combination with "LastUpdate" * Improved support of series with temporal positions Version 0.5.2 (2013/05/07) ========================== * "Bulk" Store-SCU (send several DICOM instances with the same DICOM connection) * Store-SCU for patients and studies in Orthanc Explorer * Filtering of incoming DICOM instances (through Lua scripting) * Filtering of incoming HTTP requests (through Lua scripting) * Clearing of "/exports" and "/changes" * Check MD5 of third party downloads * Faking of the HTTP methods PUT and DELETE Version 0.5.1 (2013/04/17) ========================== * Support of RGB images * Fix of store SCU in release builds * Possibility to store the SQLite index at another place than the DICOM instances (for performance) Version 0.5.0 (2013/01/31) ========================== Major changes ------------- * Download of modified or anonymized DICOM instances * Inplace modification and anonymization of DICOM series, studies and patients Minor changes ------------- * Support of private tags * Implementation of the PMSCT_RLE1 image decoding for Philips modalities * Generation of random DICOM UID through the REST API (/tools/generate-uid) Version 0.4.0 (2012/12/14) ========================== Major changes ------------- * Recycling of disk space * Raw access to the value of the DICOM tags in the REST API Minor changes ------------- * Protection of patients against recycling (also in Orthanc Explorer) * The DICOM dictionaries are embedded in Windows builds Version 0.3.1 (2012/12/05) ========================== * Download archives of patients, studies and series as ZIP files * Orthanc now checks the version of its database schema before starting Version 0.3.0 (2012/11/30) ========================== Major changes ------------- * Transparent compression of the DICOM instances on the disk * The patient/study/series/instances are now indexed by SHA-1 digests of their DICOM Instance IDs (and not by UUIDs anymore): The same DICOM objects are thus always identified by the same Orthanc IDs * Log of exported instances through DICOM C-Store SCU ("/exported" URI) * Full refactoring of the DB schema and of the REST API * Introduction of generic classes for REST APIs (in Core/RestApi) Minor changes ------------- * "/statistics" URI * "last" flag to retrieve the last change from the "/changes" URI * Generate a sample configuration file from command line * "CompletedSeries" event in the changes API * Thread to continuously flush DB to disk (SQLite checkpoints for improved robustness) Version 0.2.3 (2012/10/26) ========================== * Use HTTP Content-Disposition to set a filename when downloading JSON/DCM * URI "/system" for general information about Orthanc * Versioning info and help on the command line * Improved logging * Possibility of dynamic linking against jsoncpp, sqlite, boost and dmctk for Debian packaging * Fix some bugs * Switch to default 8042 port for HTTP Version 0.2.2 (2012/10/04) ========================== * Switch to Google Logging * Fixes to Debian packaging Version 0.2.1 (2012/09/28) ========================== * Status of series * Continuous Integration Server is up and running * Ready for Debian packaging Version 0.2.0 (2012/09/16) ========================== Major changes ------------- * Renaming to "Orthanc" * Focus on security: Support of SSL, HTTP Basic Authentication and interdiction of remote access * Access to multi-frame images (for nuclear medicine) * Access to the raw PNG images (in 8bpp and 16bpp) Minor changes ------------- * Change of the licensing of the "Core/SQLite" folder to BSD (to reflect the original licensing terms of Chromium, from which the code derives) * Standalone build for cross-compilation Version 0.1.1 (2012/07/20) ========================== * Fix Windows version * Native Windows build with Microsoft Visual Studio 2005 * Add path to storage in Configuration.json Version 0.1.0 (2012/07/19) ========================== * Initial release