commit ed53ec5febe195955fd7f0bf9befeec804bf3b52 from: Oliver Lowe date: Sun Dec 19 09:59:04 2021 UTC server: dedupe WriteMsg logic on error msg responses commit - 598b53e1e47686b8c47241b874109f3b70c5f2d1 commit + ed53ec5febe195955fd7f0bf9befeec804bf3b52 blob - 668d6c3ac27c5a8ebd08e80cfaa5aed11f0868a6 blob + 3df79839d172a29ad3cc80439a6b0383ee0260f8 --- server.go +++ server.go @@ -137,56 +137,36 @@ func ListenAndServe(network, addr string, handler Hand // 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.