From 2ea27ec08f95785e91ace7552c3faec5b3a7d47d Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Thu, 20 Aug 2015 19:30:44 +0100 Subject: [PATCH] simplify response truncation --- nameserver/dns.go | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/nameserver/dns.go b/nameserver/dns.go index cf2eefb6..a436aac6 100644 --- a/nameserver/dns.go +++ b/nameserver/dns.go @@ -246,26 +246,24 @@ func (h *handler) makeResponse(req *dns.Msg, answers []dns.RR) *dns.Msg { response.SetReply(req) response.RecursionAvailable = true response.Authoritative = true - response.Answer = answers maxSize := h.getMaxResponseSize(req) - if len(response.Answer) <= 1 || maxSize <= 0 { - return response - } - - // search for smallest i that is too big - i := sort.Search(len(response.Answer), func(i int) bool { - // return true if too big - response.Answer = answers[:i+1] - return response.Len() > maxSize - }) - if i == len(answers) { + if len(answers) <= 1 || maxSize <= 0 { response.Answer = answers return response } + // search for smallest i that is too big + i := sort.Search(len(answers), func(i int) bool { + // return true if too big + response.Answer = answers[:i+1] + return response.Len() > maxSize + }) + response.Answer = answers[:i] - response.Truncated = true + if i < len(answers) { + response.Truncated = true + } return response }