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:
| M | server.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.