mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-01 23:25:38 +00:00
add response minimization if MINIMIZE_RESPONSES is defined
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: query.h,v 1.27 2001/01/29 19:49:52 bwelling Exp $ */
|
/* $Id: query.h,v 1.28 2001/03/14 19:33:00 halley Exp $ */
|
||||||
|
|
||||||
#ifndef NAMED_QUERY_H
|
#ifndef NAMED_QUERY_H
|
||||||
#define NAMED_QUERY_H 1
|
#define NAMED_QUERY_H 1
|
||||||
@@ -69,6 +69,8 @@ struct ns_query {
|
|||||||
#define NS_QUERYATTR_QUERYOK 0x0080
|
#define NS_QUERYATTR_QUERYOK 0x0080
|
||||||
#define NS_QUERYATTR_WANTRECURSION 0x0100
|
#define NS_QUERYATTR_WANTRECURSION 0x0100
|
||||||
#define NS_QUERYATTR_WANTDNSSEC 0x0200
|
#define NS_QUERYATTR_WANTDNSSEC 0x0200
|
||||||
|
#define NS_QUERYATTR_NOAUTHORITY 0x0400
|
||||||
|
#define NS_QUERYATTR_NOADDITIONAL 0x0800
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
ns_query_init(ns_client_t *client);
|
ns_query_init(ns_client_t *client);
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: query.c,v 1.187 2001/03/13 01:37:11 bwelling Exp $ */
|
/* $Id: query.c,v 1.188 2001/03/14 19:32:58 halley Exp $ */
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
@@ -67,6 +67,10 @@
|
|||||||
NS_QUERYATTR_WANTRECURSION) != 0)
|
NS_QUERYATTR_WANTRECURSION) != 0)
|
||||||
#define WANTDNSSEC(c) (((c)->query.attributes & \
|
#define WANTDNSSEC(c) (((c)->query.attributes & \
|
||||||
NS_QUERYATTR_WANTDNSSEC) != 0)
|
NS_QUERYATTR_WANTDNSSEC) != 0)
|
||||||
|
#define NOAUTHORITY(c) (((c)->query.attributes & \
|
||||||
|
NS_QUERYATTR_NOAUTHORITY) != 0)
|
||||||
|
#define NOADDITIONAL(c) (((c)->query.attributes & \
|
||||||
|
NS_QUERYATTR_NOADDITIONAL) != 0)
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#define CTRACE(m) isc_log_write(ns_g_lctx, \
|
#define CTRACE(m) isc_log_write(ns_g_lctx, \
|
||||||
@@ -237,6 +241,10 @@ query_reset(ns_client_t *client, isc_boolean_t everything) {
|
|||||||
query_maybeputqname(client);
|
query_maybeputqname(client);
|
||||||
|
|
||||||
client->query.attributes = (NS_QUERYATTR_RECURSIONOK |
|
client->query.attributes = (NS_QUERYATTR_RECURSIONOK |
|
||||||
|
#ifdef MINIMIZE_RESPONSES
|
||||||
|
NS_QUERYATTR_NOAUTHORITY |
|
||||||
|
NS_QUERYATTR_NOADDITIONAL |
|
||||||
|
#endif
|
||||||
NS_QUERYATTR_CACHEOK);
|
NS_QUERYATTR_CACHEOK);
|
||||||
client->query.restarts = 0;
|
client->query.restarts = 0;
|
||||||
client->query.timerset = ISC_FALSE;
|
client->query.timerset = ISC_FALSE;
|
||||||
@@ -1487,6 +1495,12 @@ query_addrdataset(ns_client_t *client, dns_name_t *fname,
|
|||||||
CTRACE("query_addrdataset");
|
CTRACE("query_addrdataset");
|
||||||
|
|
||||||
ISC_LIST_APPEND(fname->list, rdataset, link);
|
ISC_LIST_APPEND(fname->list, rdataset, link);
|
||||||
|
|
||||||
|
#ifdef MINIMIZE_RESPONSES
|
||||||
|
if (NOADDITIONAL(client))
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add additional data.
|
* Add additional data.
|
||||||
*
|
*
|
||||||
@@ -2624,6 +2638,16 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
|||||||
* database by setting client->query.gluedb.
|
* database by setting client->query.gluedb.
|
||||||
*/
|
*/
|
||||||
client->query.gluedb = db;
|
client->query.gluedb = db;
|
||||||
|
#ifdef MINIMIZE_RESPONSES
|
||||||
|
/*
|
||||||
|
* We must ensure NOADDITIONAL is off,
|
||||||
|
* because the generation of
|
||||||
|
* additional data is required in
|
||||||
|
* delegations.
|
||||||
|
*/
|
||||||
|
client->query.attributes &=
|
||||||
|
~NS_QUERYATTR_NOADDITIONAL;
|
||||||
|
#endif
|
||||||
if (sigrdataset != NULL)
|
if (sigrdataset != NULL)
|
||||||
sigrdatasetp = &sigrdataset;
|
sigrdatasetp = &sigrdataset;
|
||||||
else
|
else
|
||||||
@@ -2716,6 +2740,16 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
|||||||
client->query.gluedb = zdb;
|
client->query.gluedb = zdb;
|
||||||
client->query.attributes |=
|
client->query.attributes |=
|
||||||
NS_QUERYATTR_CACHEGLUEOK;
|
NS_QUERYATTR_CACHEGLUEOK;
|
||||||
|
#ifdef MINIMIZE_RESPONSES
|
||||||
|
/*
|
||||||
|
* We must ensure NOADDITIONAL is off,
|
||||||
|
* because the generation of
|
||||||
|
* additional data is required in
|
||||||
|
* delegations.
|
||||||
|
*/
|
||||||
|
client->query.attributes &=
|
||||||
|
~NS_QUERYATTR_NOADDITIONAL;
|
||||||
|
#endif
|
||||||
if (sigrdataset != NULL)
|
if (sigrdataset != NULL)
|
||||||
sigrdatasetp = &sigrdataset;
|
sigrdatasetp = &sigrdataset;
|
||||||
else
|
else
|
||||||
@@ -3128,7 +3162,11 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
|||||||
* Add NS records to the authority section (if we haven't already
|
* Add NS records to the authority section (if we haven't already
|
||||||
* added them to the answer section).
|
* added them to the answer section).
|
||||||
*/
|
*/
|
||||||
if (!want_restart) {
|
if (!want_restart
|
||||||
|
#ifdef MINIMIZE_RESPONSES
|
||||||
|
&& !NOAUTHORITY(client)
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
if (is_zone) {
|
if (is_zone) {
|
||||||
if (!((qtype == dns_rdatatype_ns ||
|
if (!((qtype == dns_rdatatype_ns ||
|
||||||
qtype == dns_rdatatype_any) &&
|
qtype == dns_rdatatype_any) &&
|
||||||
|
Reference in New Issue
Block a user