]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/mon/ConfigKeyService.cc
update sources to 12.2.7
[ceph.git] / ceph / src / mon / ConfigKeyService.cc
index 29ae9d959427aa4c38872fddb33607b44b1c6e24..e191f8367c80276d9f7f55c4d8973e269188417a 100644 (file)
@@ -108,6 +108,17 @@ bool ConfigKeyService::store_has_prefix(const string &prefix)
   return false;
 }
 
+static bool is_binary_string(const string& s)
+{
+  for (auto c : s) {
+    // \n and \t are escaped in JSON; other control characters are not.
+    if ((c < 0x20 && c != '\n' && c != '\t') || c >= 0x7f) {
+      return true;
+    }
+  }
+  return false;
+}
+
 void ConfigKeyService::store_dump(stringstream &ss)
 {
   KeyValueDB::Iterator iter =
@@ -117,7 +128,14 @@ void ConfigKeyService::store_dump(stringstream &ss)
   f.open_object_section("config-key store");
 
   while (iter->valid()) {
-    f.dump_string(iter->key().c_str(), iter->value().to_str());
+    string s = iter->value().to_str();
+    if (is_binary_string(s)) {
+      ostringstream ss;
+      ss << "<<< binary blob of length " << s.size() << " >>>";
+      f.dump_string(iter->key().c_str(), ss.str());
+    } else {
+      f.dump_string(iter->key().c_str(), s);
+    }
     iter->next();
   }
   f.close_section();