, runBuilder
, unauthorise
+ , setResponseCode
, addAnswer
, addAuthority
, addAdditional
, hdIsRecursionAvailable = False
, hdResponseCode = NoError
}
- (_, result) = unB (modHeader' >> builder) initialReply
+ setNameError = do aa <- get (hdIsRecursionAvailable . msgHeader)
+ rc <- get (hdResponseCode . msgHeader)
+ anss <- get msgAnswers
+
+ when (aa && rc == NoError && null anss)
+ $ setResponseCode NameError
+
+ (_, result) = unB (modHeader' >> builder >> setNameError) initialReply
in
result
unauthorise :: Builder ()
unauthorise = modifyHeader (\ h -> h { hdIsAuthoritativeAnswer = False })
+
+setResponseCode :: ResponseCode -> Builder ()
+setResponseCode code
+ = modifyHeader (\ h -> h { hdResponseCode = code })