]> granicus.if.org Git - pdns/commitdiff
Allow 1 or 0 as boolean too
authorAki Tuomi <cmouse@cmouse.fi>
Fri, 8 Jan 2016 12:38:01 +0000 (14:38 +0200)
committerAki Tuomi <cmouse@cmouse.fi>
Mon, 11 Jan 2016 18:44:19 +0000 (20:44 +0200)
pdns/json.cc

index 29e24f2caff77eeca45844cafbfadf26af8bf77c..cab7fb4faaea977979a9fd05bbe96afb57623e3a 100644 (file)
@@ -93,9 +93,11 @@ bool boolFromJson(const Json container, const std::string& key)
   auto val = container[key];
   if (val.is_bool()) {
     return val.bool_value();
-  } else {
-    throw JsonException("Key '" + string(key) + "' not present or not a Bool");
+  } else if (val.is_number())  {
+    if (val.int_value() == 1) return true;
+    else if (val.int_value() == 0) return false;
   }
+  throw JsonException("Key '" + string(key) + "' not present or not a Bool");
 }
 
 bool boolFromJson(const Json container, const std::string& key, const bool default_value)
@@ -103,7 +105,9 @@ bool boolFromJson(const Json container, const std::string& key, const bool defau
   auto val = container[key];
   if (val.is_bool()) {
     return val.bool_value();
-  } else {
-    return default_value;
+  } else if (val.is_number())  {
+    if (val.int_value() == 1) return true;
+    else if (val.int_value() == 0) return false;
   }
+  return default_value;
 }