From: Daniel Salzman Date: Tue, 10 Nov 2020 14:16:12 +0000 (+0100) Subject: nameserver: return FORMERR if no query and known OPCODE, but NOTIMPL if unknown OPCODE X-Git-Tag: v3.1.0~312^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f942cd9ca6d28f383583ca1ffd24d919ed2bcb4d;p=thirdparty%2Fknot-dns.git nameserver: return FORMERR if no query and known OPCODE, but NOTIMPL if unknown OPCODE --- diff --git a/src/knot/nameserver/process_query.c b/src/knot/nameserver/process_query.c index 4c4a62999d..58d409d061 100644 --- a/src/knot/nameserver/process_query.c +++ b/src/knot/nameserver/process_query.c @@ -407,7 +407,15 @@ static int prepare_answer(knot_pkt_t *query, knot_pkt_t *resp, knot_layer_t *ctx /* All supported OPCODEs require a question. */ const knot_dname_t *qname = knot_pkt_qname(query); if (qname == NULL) { - qdata->rcode = KNOT_RCODE_NOTIMPL; + switch (knot_wire_get_opcode(query->wire)) { + case KNOT_OPCODE_QUERY: + case KNOT_OPCODE_NOTIFY: + case KNOT_OPCODE_UPDATE: + qdata->rcode = KNOT_RCODE_FORMERR; + break; + default: + qdata->rcode = KNOT_RCODE_NOTIMPL; + } return KNOT_ENOTSUP; }