]> granicus.if.org Git - pdns/commitdiff
remotebackend: fix http connector to use C style post content generation
authorPeter van Dijk <peter.van.dijk@netherlabs.nl>
Wed, 9 Jan 2013 13:19:21 +0000 (13:19 +0000)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Wed, 9 Jan 2013 13:19:21 +0000 (13:19 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@3031 d19b8d6e-7fed-0310-83ef-9ca221ded41b

modules/remotebackend/httpconnector.cc
modules/remotebackend/regression-tests/dnsbackend.rb

index 4ab9deec303a35107c01b4cf89959796dbed7b7c..7edd2b8fe7cab77fb3f59b3c1063884edce82c52 100644 (file)
@@ -96,15 +96,17 @@ void HTTPConnector::requestbuilder(const std::string &method, const rapidjson::V
         curl_easy_setopt(d_c, CURLOPT_POSTFIELDSIZE, 0);
     } else if (method == "addDomainKey") {
         // create post with keydata
-        std::stringstream ss2;
-        const rapidjson::Value& param = parameters["key"]; 
-        ss2 << "flags=" << param["flags"].GetUint() << "&active=" << (param["active"].GetBool() ? 1 : 0) << "&content=";
+        char *postfields;
+        int nsize;
+        const rapidjson::Value& param = parameters["key"];
         tmpstr = curl_easy_escape(d_c, param["content"].GetString(), 0);
-        ss2 << tmpstr;
-        sparam = ss2.str();
-        curl_easy_setopt(d_c, CURLOPT_POSTFIELDSIZE, sparam.size());
-        curl_easy_setopt(d_c, CURLOPT_COPYPOSTFIELDS, sparam.c_str());
+        nsize = 35 + strlen(tmpstr);
+        postfields = new char[nsize];
+        nsize = snprintf(postfields, nsize, "flags=%u&active=%d&content=%s", param["flags"].GetUint(), (param["active"].GetBool() ? 1 : 0), tmpstr);
+        curl_easy_setopt(d_c, CURLOPT_POSTFIELDSIZE, nsize);
+        curl_easy_setopt(d_c, CURLOPT_COPYPOSTFIELDS, postfields);
         curl_free(tmpstr);
+        delete postfields;
     } else if (method == "setDomainMetadata") {
         int n=0;
         // copy all metadata values into post
index 0bd9f45704e0eb9d24d0bc38ebc53df6bcc8e192..dbf9e95835459006c1de3ab1c88b1720a091891e 100644 (file)
@@ -48,6 +48,8 @@ class DNSBackendHandler < WEBrick::HTTPServlet::AbstractServlet
    end
 
    def do_GET(req,res)
+     req.continue
+
      tmp = req.path[/dns\/(.*)/,1]
      return 400, "Bad request" if (tmp.nil?)