return dnsdist::queueQueryResumptionEvent(std::move(query));
}
-bool dnsdist_ffi_dnsquestion_set_alternate_name(dnsdist_ffi_dnsquestion_t* dq, const char* alternateName, size_t alternateNameSize, const char* tag, size_t tagSize, const char* tagValue, size_t tagValueSize, const char* formerNameTagName, size_t formerNameTagSize)
+bool dnsdist_ffi_dnsquestion_set_alternate_name(dnsdist_ffi_dnsquestion_t* dnsQuestion, const char* alternateName, size_t alternateNameSize, const char* tag, size_t tagSize, const char* tagValue, size_t tagValueSize, const char* formerNameTagName, size_t formerNameTagSize)
{
- if (dq == nullptr || dq->dq == nullptr || alternateName == nullptr || alternateNameSize == 0) {
+ if (dnsQuestion == nullptr || dnsQuestion->dq == nullptr || alternateName == nullptr || alternateNameSize == 0) {
return false;
}
- auto& ids = dq->dq->ids;
- auto& packet = dq->dq->getMutableData();
+ auto& ids = dnsQuestion->dq->ids;
+ auto& packet = dnsQuestion->dq->getMutableData();
return setAlternateName(packet, ids, std::string_view(alternateName, alternateNameSize), std::string_view(tag, tagSize), std::string_view(tagValue, tagValueSize), std::string_view(formerNameTagName, formerNameTagSize));
}
BOOST_CHECK_EQUAL(ids.skipCache, true);
BOOST_REQUIRE(ids.qTag != nullptr);
BOOST_CHECK_EQUAL(ids.qTag->at(tag), tagValue);
- BOOST_CHECK_EQUAL(ids.qTag->at(formerTagName), initialQName.getStorage());
+ BOOST_CHECK_EQUAL(ids.qTag->at(formerTagName), std::string(initialQName.getStorage()));
+ // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
MOADNSParser mdp(false, reinterpret_cast<const char*>(dnsQuestion.getData().data()), dnsQuestion.getData().size());
BOOST_CHECK_EQUAL(mdp.d_qname, target);
BOOST_CHECK_EQUAL(mdp.d_header.qdcount, 1U);
+
+ /* also check that we can rename without providing any tags */
+ BOOST_CHECK(dnsdist_ffi_dnsquestion_set_alternate_name(&lightDQ, target.getStorage().data(), target.getStorage().size(), nullptr, 0, nullptr, 0, nullptr, 0));
+
+ /* and that we can pass a tag name without a value */
+ BOOST_CHECK(dnsdist_ffi_dnsquestion_set_alternate_name(&lightDQ, target.getStorage().data(), target.getStorage().size(), tag.data(), tag.size(), nullptr, 0, nullptr, 0));
+
}
BOOST_AUTO_TEST_SUITE_END();