]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Ensure we have at least one protobuf MetaValue 12561/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 17 Feb 2023 13:30:50 +0000 (14:30 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 17 Feb 2023 14:53:20 +0000 (15:53 +0100)
pdns/dnsdist-protobuf.cc
regression-tests.dnsdist/test_Protobuf.py

index c1250ba1547eb3eb57bd478617c3f484f516c915..3eb5b82d924a49438b155fd5bfd8d4c9b3018dcf 100644 (file)
@@ -197,7 +197,13 @@ void DNSDistProtoBufMessage::serialize(std::string& data) const
   m.commitResponse();
 
   for (const auto& [key, values] : d_metaTags) {
-    m.setMeta(key, values, {});
+    if (!values.empty()) {
+      m.setMeta(key, values, {});
+    }
+    else {
+      /* the MetaValue field is _required_ to exist, even if we have no value */
+      m.setMeta(key, {std::string()}, {});
+    }
   }
 }
 
index fead59012a6e3c345d8819b5dbc388454d5f104c..eee259b048714f38f385d788a4f8c3ad188e04eb 100644 (file)
@@ -551,12 +551,8 @@ class TestProtobufMetaDOH(DNSDistProtobufTest):
             self.assertEqual(len(msg.meta), 5)
             tags = {}
             for entry in msg.meta:
-                if method == "sendDOHQueryWrapper":
-                    self.assertEqual(len(entry.value.stringVal), 1)
-                    tags[entry.key] = entry.value.stringVal[0]
-                else:
-                    self.assertEqual(len(entry.value.stringVal), 0)
-                    tags[entry.key] = None
+                self.assertEqual(len(entry.value.stringVal), 1)
+                tags[entry.key] = entry.value.stringVal[0]
 
             self.assertIn('agent', tags)
             if method == "sendDOHQueryWrapper":
@@ -576,12 +572,8 @@ class TestProtobufMetaDOH(DNSDistProtobufTest):
             self.assertEqual(len(msg.meta), 5)
             tags = {}
             for entry in msg.meta:
-                if method == "sendDOHQueryWrapper":
-                    self.assertEqual(len(entry.value.stringVal), 1)
-                    tags[entry.key] = entry.value.stringVal[0]
-                else:
-                    self.assertEqual(len(entry.value.stringVal), 0)
-                    tags[entry.key] = None
+                self.assertEqual(len(entry.value.stringVal), 1)
+                tags[entry.key] = entry.value.stringVal[0]
 
             self.assertIn('agent', tags)
             if method == "sendDOHQueryWrapper":