]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#521,!270] Addressed review comments.
authorMarcin Siodelski <marcin@isc.org>
Mon, 11 Mar 2019 13:57:58 +0000 (14:57 +0100)
committerMarcin Siodelski <marcin@isc.org>
Thu, 14 Mar 2019 08:59:58 +0000 (04:59 -0400)
src/hooks/dhcp/mysql_cb/mysql_cb_impl.cc
src/lib/dhcpsrv/testutils/generic_backend_unittest.cc

index 0e104120e5dc120608a300a53b2ca44c869dafd3..8ac602aa8ae17ece46c0b4c264a5c6859fb1b54b 100644 (file)
@@ -602,17 +602,21 @@ MySqlConfigBackendImpl::processOptionRow(const Option::Universe& universe,
         code = (*(first_binding + 1))->getInteger<uint16_t>();
     }
 
-    // Option can be stored as a blob or formatted value in the configuration.
-    std::vector<uint8_t> blob;
-    if (!(*(first_binding + 2))->amNull()) {
-        blob = (*(first_binding + 2))->getBlob();
-    }
-    OptionBuffer buf(blob.begin(), blob.end());
 
     // Get formatted value if available.
     std::string formatted_value = (*(first_binding + 3))->getStringOrDefault("");
 
-    OptionPtr option(new Option(universe, code, buf.begin(), buf.end()));
+    OptionPtr option(new Option(universe, code));
+
+    // If we don't have a formatted value, check for a blob. Add it to the
+    // option if it exists.
+    if (formatted_value.empty()) {
+        std::vector<uint8_t> blob;
+        if (!(*(first_binding + 2))->amNull()) {
+            blob = (*(first_binding + 2))->getBlob();
+        }
+        option->setData(blob.begin(), blob.end());
+    }
 
     // Check if the option is persistent.
     bool persistent = static_cast<bool>((*(first_binding + 5))->getIntegerOrDefault<uint8_t>(0));
index 85f2fc82d9136a4be99f7230491a5b446ede4146..baceb72f135128c264e9429273d5c84b07231e7c 100644 (file)
@@ -84,6 +84,10 @@ GenericBackendTest::testOptionsEquivalent(const OptionDescriptor& ref_option,
 
         // Compare the on-wire data.
         EXPECT_EQ(ref_option_buf_vec, tested_option_buf_vec);
+
+    } else {
+        // If the formatted value is non-empty the buffer should be empty.
+        EXPECT_TRUE(tested_option.option_->getData().empty());
     }
 
     // Compare other members of the @c OptionDescriptor, e.g. the