aboutsummaryrefslogtreecommitdiff
path: root/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'server.c')
-rw-r--r--server.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/server.c b/server.c
index d52ce87..b754265 100644
--- a/server.c
+++ b/server.c
@@ -1,3 +1,4 @@
+#include "edns0.h"
#include "byte.h"
#include "case.h"
#include "env.h"
@@ -63,6 +64,9 @@ static int doit(void)
if (header[2] & 126) goto NOTIMP;
if (byte_equal(qtype,2,DNS_T_AXFR)) goto NOTIMP;
+ pos = check_edns0(header, buf, len, pos);
+ if (!pos) goto NOQ;
+
case_lowerb(q,dns_domain_length(q));
if (!respond(q,qtype,ip)) {
qlog(ip,port,header,q,qtype," - ");
@@ -168,7 +172,7 @@ int main()
len = socket_recv6(udp53[i],buf,sizeof buf,ip,&port,&ifid);
if (len < 0) continue;
if (!doit()) continue;
- if (response_len > 512) response_tc();
+ if (response_len > max_response_len) response_tc();
socket_send6(udp53[i],response,response_len,ip,port,ifid);
/* may block for buffer space; if it fails, too bad */
}