0, 0 }; // rdata length
static_assert(sizeof(recordstart) == 12, "sizeof(recordstart) must be equal to 12, otherwise the above check is invalid");
memcpy(&recordstart[6], &ttl, sizeof(ttl));
+ bool raw = false;
if (qtype == QType::CNAME) {
const std::string wireData = d_cname.toDNSString(); // Note! This doesn't do compression!
memcpy(dest, d_rawResponse.c_str(), d_rawResponse.size());
dq->len += d_rawResponse.size() + sizeof(recordstart);
dq->dh->ancount++;
+ raw = true;
}
else {
for(const auto& addr : addrs) {
dq->dh->ancount = htons(dq->dh->ancount);
- if (hadEDNS) {
+ if (hadEDNS && raw == false) {
addEDNS(dq->dh, dq->len, dq->size, dnssecOK, g_PayloadSizeSelfGenAnswers, 0);
}