sldns_buffer_flip(c->buffer);
return 1;
}
- sldns_buffer_skip(c->buffer, (ssize_t)sizeof(uint16_t)); /* skip qtype */
- sldns_buffer_skip(c->buffer, (ssize_t)sizeof(uint16_t)); /* skip qclass */
-
LDNS_QR_SET(sldns_buffer_begin(c->buffer));
LDNS_RCODE_SET(sldns_buffer_begin(c->buffer),
LDNS_RCODE_REFUSED);
+ sldns_buffer_skip(c->buffer, (ssize_t)sizeof(uint16_t)); /* skip qtype */
+
+ /* check the qclass */
+ if (sldns_buffer_read_u16(c->buffer) != LDNS_RR_CLASS_IN) {
+ LDNS_ANCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+ LDNS_NSCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+ LDNS_ARCOUNT_SET(sldns_buffer_begin(c->buffer), 0);
+ sldns_buffer_flip(c->buffer);
+ return 1;
+ }
+
/* check edns section is present */
if(LDNS_ARCOUNT(sldns_buffer_begin(c->buffer)) != 1) {
LDNS_ANCOUNT_SET(sldns_buffer_begin(c->buffer), 0);