mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-02 15:45:25 +00:00
check requireservercookie even if rrl is configured
This commit is contained in:
@@ -5237,6 +5237,19 @@ ns__query_start(query_ctx_t *qctx) {
|
|||||||
qctx->need_wildcardproof = false;
|
qctx->need_wildcardproof = false;
|
||||||
qctx->rpz = false;
|
qctx->rpz = false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we require a server cookie then send back BADCOOKIE
|
||||||
|
* before we have done too much work.
|
||||||
|
*/
|
||||||
|
if (!TCP(qctx->client) && qctx->client->view->requireservercookie &&
|
||||||
|
WANTCOOKIE(qctx->client) && !HAVECOOKIE(qctx->client))
|
||||||
|
{
|
||||||
|
qctx->client->message->flags &= ~DNS_MESSAGEFLAG_AA;
|
||||||
|
qctx->client->message->flags &= ~DNS_MESSAGEFLAG_AD;
|
||||||
|
qctx->client->message->rcode = dns_rcode_badcookie;
|
||||||
|
return (query_done(qctx));
|
||||||
|
}
|
||||||
|
|
||||||
if (qctx->client->view->checknames &&
|
if (qctx->client->view->checknames &&
|
||||||
!dns_rdata_checkowner(qctx->client->query.qname,
|
!dns_rdata_checkowner(qctx->client->query.qname,
|
||||||
qctx->client->message->rdclass,
|
qctx->client->message->rdclass,
|
||||||
@@ -6276,14 +6289,6 @@ query_checkrrl(query_ctx_t *qctx, isc_result_t result) {
|
|||||||
return (DNS_R_DROP);
|
return (DNS_R_DROP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (!TCP(qctx->client) &&
|
|
||||||
qctx->client->view->requireservercookie &&
|
|
||||||
WANTCOOKIE(qctx->client) && !HAVECOOKIE(qctx->client))
|
|
||||||
{
|
|
||||||
qctx->client->message->flags &= ~DNS_MESSAGEFLAG_AA;
|
|
||||||
qctx->client->message->flags &= ~DNS_MESSAGEFLAG_AD;
|
|
||||||
qctx->client->message->rcode = dns_rcode_badcookie;
|
|
||||||
return (DNS_R_DROP);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
|
Reference in New Issue
Block a user