diff --git a/CHANGES b/CHANGES index 5ed40e7fd0..047c416ea1 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +1034. [bug] Multicast queries must not have RD set, RFC 1123. + FORMERR those that do. [RT #137] + 1033. [bug] Don't imply that we support a opcode that we don't when we don't have a matching view or cannot determine the class. diff --git a/bin/named/client.c b/bin/named/client.c index fb3bc80926..98edf1c47e 100644 --- a/bin/named/client.c +++ b/bin/named/client.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: client.c,v 1.180 2001/10/09 02:05:55 marka Exp $ */ +/* $Id: client.c,v 1.181 2001/10/09 02:30:20 marka Exp $ */ #include @@ -1160,15 +1160,6 @@ client_request(isc_task_t *task, isc_event_t *event) { } } - if ((client->attributes & NS_CLIENTATTR_MULTICAST) != 0) { - ns_client_log(client, NS_LOGCATEGORY_CLIENT, - NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(2), - "multicast request"); -#if 0 - ns_client_error(client, DNS_R_REFUSED); -#endif - } - result = dns_message_peekheader(buffer, &id, &flags); if (result != ISC_R_SUCCESS) { /* @@ -1377,6 +1368,15 @@ client_request(isc_task_t *task, isc_event_t *event) { } } + if ((client->attributes & NS_CLIENTATTR_MULTICAST) != 0) { + ns_client_log(client, NS_LOGCATEGORY_CLIENT, + NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(2), + "multicast request"); + if ((flags & DNS_MESSAGEFLAG_RD) != 0) + ns_client_error(client, notimp ? DNS_R_NOTIMP : + DNS_R_FORMERR); + } + /* * Decide whether recursive service is available to this client. * We do this here rather than in the query code so that we can