diff options
Diffstat (limited to 'request/request.go')
-rw-r--r-- | request/request.go | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/request/request.go b/request/request.go index bcf6570be..c4e4eea3c 100644 --- a/request/request.go +++ b/request/request.go @@ -226,19 +226,11 @@ func (r *Request) SizeAndDo(m *dns.Msg) bool { return true } -// Result is the result of Scrub. -type Result int - -const ( - // ScrubIgnored is returned when Scrub did nothing to the message. - ScrubIgnored Result = iota - // ScrubExtra is returned when the reply has been scrubbed by removing RRs from the additional section. - ScrubExtra - // ScrubAnswer is returned when the reply has been scrubbed by removing RRs from the answer section. - ScrubAnswer -) +// Scrub is a noop function, added for backwards compatibility reasons. The original Scrub is now called +// automatically by the server on writing the reply. See ScrubWriter. +func (r *Request) Scrub(reply *dns.Msg) (*dns.Msg, int) { return reply, 0 } -// Scrub scrubs the reply message so that it will fit the client's buffer. It will first +// scrub scrubs the reply message so that it will fit the client's buffer. It will first // check if the reply fits without compression and then *with* compression. // Scrub will then use binary search to find a save cut off point in the additional section. // If even *without* the additional section the reply still doesn't fit we @@ -246,19 +238,19 @@ const ( // we set the TC bit on the reply; indicating the client should retry over TCP. // Note, the TC bit will be set regardless of protocol, even TCP message will // get the bit, the client should then retry with pigeons. -func (r *Request) Scrub(reply *dns.Msg) (*dns.Msg, Result) { +func (r *Request) scrub(reply *dns.Msg) *dns.Msg { size := r.Size() reply.Compress = false rl := reply.Len() if size >= rl { - return reply, ScrubIgnored + return reply } reply.Compress = true rl = reply.Len() if size >= rl { - return reply, ScrubIgnored + return reply } // Account for the OPT record that gets added in SizeAndDo(), subtract that length. @@ -298,7 +290,7 @@ func (r *Request) Scrub(reply *dns.Msg) (*dns.Msg, Result) { if rl < size { r.SizeAndDo(reply) - return reply, ScrubExtra + return reply } ra := len(reply.Answer) @@ -330,7 +322,7 @@ func (r *Request) Scrub(reply *dns.Msg) (*dns.Msg, Result) { r.SizeAndDo(reply) reply.Truncated = true - return reply, ScrubAnswer + return reply } // Type returns the type of the question as a string. If the request is malformed the empty string is returned. |