Mercurial > hg > orthanc
changeset 6178:8cfe9a74e771
refactored HTTP and REST clients in plugins using PluginMemoryBuffer32
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 12 Jun 2025 11:33:54 +0200 |
parents | 81c7f800856a |
children | 6d442d7f3b6a |
files | OrthancServer/Plugins/Engine/OrthancPlugins.cpp |
diffstat | 1 files changed, 58 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/OrthancServer/Plugins/Engine/OrthancPlugins.cpp Thu Jun 12 11:01:53 2025 +0200 +++ b/OrthancServer/Plugins/Engine/OrthancPlugins.cpp Thu Jun 12 11:33:54 2025 +0200 @@ -456,7 +456,7 @@ } - static void CopyDictionary(OrthancPluginMemoryBuffer* target, + static void CopyDictionary(PluginMemoryBuffer32& target, const std::map<std::string, std::string>& dictionary) { Json::Value json = Json::objectValue; @@ -467,7 +467,7 @@ json[it->first] = it->second; } - CopyToMemoryBuffer(target, json.toStyledString()); + target.Assign(json.toStyledString()); } @@ -3848,29 +3848,29 @@ } // Copy the HTTP headers of the answer, if the plugin requested them + PluginMemoryBuffer32 tmpHeaders; if (answerHeaders != NULL) { - CopyDictionary(answerHeaders, headers); + CopyDictionary(tmpHeaders, headers); } // Copy the body of the answer if it makes sense - if (client.GetMethod() != HttpMethod_Delete) - { - try - { - if (answerBody != NULL) - { - CopyToMemoryBuffer(answerBody, body); - } - } - catch (OrthancException&) - { - if (answerHeaders != NULL) - { - free(answerHeaders->data); - } - throw; - } + PluginMemoryBuffer32 tmpBody; + if (client.GetMethod() != HttpMethod_Delete && + answerBody != NULL) + { + tmpBody.Assign(body); + } + + // All the memory has been allocated at this point, so we can safely release the buffers + if (answerHeaders != NULL) + { + tmpHeaders.Release(answerHeaders); + } + + if (answerBody != NULL) + { + tmpBody.Release(answerBody); } } @@ -4069,25 +4069,28 @@ *p.httpStatus = static_cast<uint16_t>(status); + PluginMemoryBuffer32 tmpHeaders; if (p.answerHeaders != NULL) { - CopyDictionary(p.answerHeaders, answerHeaders); - } - - try - { - if (p.answerBody != NULL) - { - CopyToMemoryBuffer(p.answerBody, answerBody); - } - } - catch (OrthancException&) - { - if (p.answerHeaders != NULL) - { - free(p.answerHeaders->data); - } - throw; + CopyDictionary(tmpHeaders, answerHeaders); + } + + PluginMemoryBuffer32 tmpBody; + if (p.method != OrthancPluginHttpMethod_Delete && + p.answerBody != NULL) + { + tmpBody.Assign(answerBody); + } + + // All the memory has been allocated at this point, so we can safely release the buffers + if (p.answerHeaders != NULL) + { + tmpHeaders.Release(p.answerHeaders); + } + + if (p.answerBody != NULL) + { + tmpBody.Release(p.answerBody); } } @@ -4154,29 +4157,29 @@ } // Copy the HTTP headers of the answer, if the plugin requested them + PluginMemoryBuffer32 tmpHeaders; if (p.answerHeaders != NULL) { - CopyDictionary(p.answerHeaders, headers); + CopyDictionary(tmpHeaders, headers); } // Copy the body of the answer if it makes sense - if (p.method != OrthancPluginHttpMethod_Delete) - { - try - { - if (p.answerBody != NULL) - { - CopyToMemoryBuffer(p.answerBody, body); - } - } - catch (OrthancException&) - { - if (p.answerHeaders != NULL) - { - free(p.answerHeaders->data); - } - throw; - } + PluginMemoryBuffer32 tmpBody; + if (p.method != OrthancPluginHttpMethod_Delete && + p.answerBody != NULL) + { + tmpBody.Assign(body); + } + + // All the memory has been allocated at this point, so we can safely release the buffers + if (p.answerHeaders != NULL) + { + tmpHeaders.Release(p.answerHeaders); + } + + if (p.answerBody != NULL) + { + tmpBody.Release(p.answerBody); } }