dns

DNS client and server implementations using the Go project's dnsmessage package
Log | Files | Refs | README | LICENSE

commit ed53ec5febe195955fd7f0bf9befeec804bf3b52
parent 598b53e1e47686b8c47241b874109f3b70c5f2d1
Author: Oliver Lowe <o@olowe.co>
Date:   Sun, 19 Dec 2021 20:57:34 +1100

server: dedupe WriteMsg logic on error msg responses

Diffstat:
Mserver.go | 40++++++++++------------------------------
1 file changed, 10 insertions(+), 30 deletions(-)

diff --git a/server.go b/server.go @@ -137,56 +137,36 @@ func ListenAndServe(network, addr string, handler Handler) error { // does not set a Handler. var DefaultHandler = Refuse -// FormatError replies to the message with a Format Error message. -func FormatError(w ResponseWriter, msg *dnsmessage.Message) { +func respError(w ResponseWriter, msg *dnsmessage.Message, rcode dnsmessage.RCode) { w.WriteMsg(dnsmessage.Message{ Header: dnsmessage.Header{ ID: msg.Header.ID, Response: true, RecursionDesired: msg.Header.RecursionDesired, - RCode: dnsmessage.RCodeFormatError, + RCode: rcode, }, Questions: msg.Questions, }) } +// FormatError replies to the message with a Format Error message. +func FormatError(w ResponseWriter, msg *dnsmessage.Message) { + respError(w, msg, dnsmessage.RCodeFormatError) +} + // ServerFailure replies to the message with a Server Failure (SERVFAIL) message. func ServerFailure(w ResponseWriter, msg *dnsmessage.Message) { - w.WriteMsg(dnsmessage.Message{ - Header: dnsmessage.Header{ - ID: msg.Header.ID, - Response: true, - RecursionDesired: msg.Header.RecursionDesired, - RCode: dnsmessage.RCodeServerFailure, - }, - Questions: msg.Questions, - }) + respError(w, msg, dnsmessage.RCodeServerFailure) } // NotImplemented replies to the message with a Format Error message. func NotImplemented(w ResponseWriter, msg *dnsmessage.Message) { - w.WriteMsg(dnsmessage.Message{ - Header: dnsmessage.Header{ - ID: msg.Header.ID, - Response: true, - RecursionDesired: msg.Header.RecursionDesired, - RCode: dnsmessage.RCodeNotImplemented, - }, - Questions: msg.Questions, - }) + respError(w, msg, dnsmessage.RCodeNotImplemented) } // Refuse replies to the message with a Refused message. func Refuse(w ResponseWriter, msg *dnsmessage.Message) { - w.WriteMsg(dnsmessage.Message{ - Header: dnsmessage.Header{ - ID: msg.Header.ID, - Response: true, - RecursionDesired: msg.Header.RecursionDesired, - RCode: dnsmessage.RCodeRefused, - }, - Questions: msg.Questions, - }) + respError(w, msg, dnsmessage.RCodeRefused) } // NameError replies to the message with a Name error (NXDOMAIN) message.