if (du->response.empty()) {
du->response = std::move(du->query);
}
- auto dh = const_cast<struct dnsheader*>(reinterpret_cast<const struct dnsheader*>(du->response.data()));
+ if (du->response.size() >= sizeof(dnsheader) && du->contentType.empty()) {
+ auto dh = reinterpret_cast<const struct dnsheader*>(du->response.data());
- handleResponseSent(qname, QType(qtype), 0., du->ids.origDest, ComboAddress(), du->response.size(), *dh, dnsdist::Protocol::DoH);
+ handleResponseSent(qname, QType(qtype), 0., du->ids.origDest, ComboAddress(), du->response.size(), *dh, dnsdist::Protocol::DoH);
+ }
sendDoHUnitToTheMainThread(std::move(du), "DoH self-answered response");
return;
}