changeset 3394:2f82ef41bf5a

fix
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 06 Jun 2019 16:42:41 +0200
parents 2cd0369a156f
children 0ce9b4f5fdf5
files Plugins/Samples/Common/OrthancPluginCppWrapper.cpp
diffstat 1 files changed, 23 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp	Thu Jun 06 16:12:55 2019 +0200
+++ b/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp	Thu Jun 06 16:42:41 2019 +0200
@@ -33,6 +33,7 @@
 
 #include "OrthancPluginCppWrapper.h"
 
+#include <boost/algorithm/string/predicate.hpp>
 #include <json/reader.h>
 #include <json/writer.h>
 
@@ -2262,6 +2263,13 @@
         }
       }
 
+      void AddStaticString(const char* key,
+                           const char* value)
+      {
+        headersKeys_.push_back(key);
+        headersValues_.push_back(value);
+      }
+
       uint32_t GetCount() const
       {
         return headersKeys_.size();
@@ -2405,18 +2413,23 @@
                                      IAnswer& answer,
                                      IRequestBody& body) const
   {
-    std::auto_ptr<HeadersWrapper> h;
+    HeadersWrapper h(headers_);
 
     // Automatically set the "Transfer-Encoding" header if absent
-    if (headers_.find("Transfer-Encoding") == headers_.end())
+    bool found = false;
+
+    for (HttpHeaders::const_iterator it = headers_.begin(); it != headers_.end(); ++it)
     {
-      HttpHeaders tmp = headers_;
-      tmp["Transfer-Encoding"] = "chunked";
-      h.reset(new HeadersWrapper(tmp));
+      if (boost::iequals(it->first, "Transfer-Encoding"))
+      {
+        found = true;
+        break;
+      }
     }
-    else
+
+    if (!found)
     {
-      h.reset(new HeadersWrapper(headers_));
+      h.AddStaticString("Transfer-Encoding", "chunked");
     }
 
     RequestBodyWrapper request(body);
@@ -2429,9 +2442,9 @@
       &httpStatus,
       method_,
       url_.c_str(),
-      h->GetCount(),
-      h->GetKeys(),
-      h->GetValues(),
+      h.GetCount(),
+      h.GetKeys(),
+      h.GetValues(),
       &request,
       RequestBodyWrapper::IsDone,
       RequestBodyWrapper::GetChunkData,