diff options
Diffstat (limited to 'src/packet/question.c')
-rw-r--r-- | src/packet/question.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/packet/question.c b/src/packet/question.c index 5a08fd6..b138121 100644 --- a/src/packet/question.c +++ b/src/packet/question.c @@ -1,21 +1,28 @@ #include <stdio.h> #include <stdlib.h> +#include <stdbool.h> #include "question.h" #include "buffer.h" #include "record.h" #include "../io/log.h" -void read_question(PacketBuffer* buffer, Question* question) { +bool read_question(PacketBuffer* buffer, Question* question) { buffer_read_qname(buffer, &question->domain); uint16_t qtype_num = buffer_read_short(buffer); record_from_id(qtype_num, &question->qtype); question->cls = buffer_read_short(buffer); + if (question->qtype == UNKOWN) { + free(question->domain); + return false; + } + INIT_LOG_BUFFER(log) LOGONLY(print_question(question, log);) - TRACE("Reading question: %s", log); + TRACE("Reading question: %s", log); + return true; } void write_question(PacketBuffer* buffer, Question* question) { @@ -85,6 +92,8 @@ void print_question(Question* question, char* buffer) { case CAA: APPEND(buffer, "CAA "); break; + case CMD: + APPEND(buffer, "CMD "); break; } APPEND(buffer, "%.*s", |