Extract and send server cookie with BADVERS retry

A BADVERS response can also include EDNS SERVER COOKIE.  Extract
that from the OPT record and use it when resending the request.

(cherry picked from commit 44140cad3b)
This commit is contained in:
Mark Andrews 2025-03-27 16:37:02 +11:00
parent 71875eb25a
commit 055253998e

View file

@ -4341,6 +4341,12 @@ recv_done(isc_nmhandle_t *handle, isc_result_t eresult, isc_region_t *region,
dighost_comments(l, "BADVERS, retrying with EDNS version %u.",
(unsigned int)newedns);
l->edns = newedns;
/*
* Extract the server cookie so it can be sent in the retry.
*/
if (l->cookie == NULL && l->sendcookie) {
process_opt(l, msg);
}
n = requeue_lookup(l, true);
if (l->trace && l->trace_root) {
n->rdtype = l->qrdtype;